{$mode objfpc}{$H+} uses SysUtils; type TEmployee = record ID: Integer; Name, Surname: String; Age: Byte; end; TEmployees = array of TEmployee; function RandomName: String; const A = Ord('a'); Z = Ord('z'); var I: Integer; begin Result := ''; for I := 0 to Random(7) + 3 do Result := Result + Chr(Random(Z - A) + A); Result[1] := UpCase(Result[1]); end; function FindRandomEmployee(GiveHimID: Integer): TEmployee; begin with Result do begin ID := GiveHimID; Name := RandomName; Surname := RandomName; Age := Random(47) + 18; end; end; procedure HireSomeEmployees(var EmployeesRoom: TEmployees; const HowMany: Integer); var I: Integer; begin SetLength(EmployeesRoom, HowMany); for I := 0 to High(EmployeesRoom) do EmployeesRoom[I] := FindRandomEmployee(I + 1); end; procedure ShowEmployees(const EmployeesRoom: TEmployees); const MSG_EMPLOYEE_INFO = 'Employee #%d: %s %s (%d y.o.)'; var Employee: TEmployee; begin for Employee in EmployeesRoom do with Employee do WriteLn(Format(MSG_EMPLOYEE_INFO, [ID, Name, Surname, Age])); end; var Room: TEmployees; begin Randomize; HireSomeEmployees(Room, 1500); ShowEmployees(Room); end.