Typ Record

Záznam (record) je uživatelem definovaný typ — to znamená, že programátor sám určí (při psaní programu), jaké údaje bude obsahovat. Definuje se v části Type a je ukončen endem:

Type
Datum = Record
Den : Byte;
Mesic: Byte;
Rok : Integer;
end;

V části Var pak je tento typ přiřazován jednotlivým proměnným:

Var
Dnes: Datum;

Dovnitř záznamu, k jeho částem, se přistupuje „přes tečku":

Dnes.Rok:= 1996;
Readln( Dnes.Mesic );

Další možností je použití příkazu With:

With proměnná do příkaz;

Tento příkaz říká, že až na další pracujeme s jednou proměnnou. Nemusíme tedy vypisovat jméno proměnné, ale stačí psát pouze jména položek:

With Datum do Begin
Readln( Den );
Readln( Mesic );
WriteLn( Den, Mesic, Rok );
end;

Příklad:
Program Dotaznik;

 Uses Crt, DOS;

 Type
  Osoba = Record
   Jmeno   : String[31];
   Prijmeni: String[31];
   RodneCis: String[11];	{RRMMDD/nnnn}
   Adresa  : Array[1..3]of String[63];
   Telefon : String[31];
   Vek     : Byte;
   Pohlavi : Char;
  end;

 Var
  Nekdo: Osoba;

 Procedure WriteXY( X, Y: Byte; S: String );
  Begin
   GotoXY( X, Y );
   Write( S );
  End;

 Function Stari( RC: String ): Integer;
  Begin
  End;

 Function Pohl( RC: String ): Char;
  Begin
  End;

 Procedure Form;
  Begin
   ClrScr;
   WriteXY( 2, 2, 'Jméno   : ');
   WriteXY( 2, 3, 'Príjmení: ');
   WriteXY( 2, 4, 'Rodné c.: ');
   WriteXY( 2, 5, 'Adresa  : ');
   WriteXY( 2, 8, 'Telefon : ');
  End;

 Procedure Nacti( var Kdo: Osoba );
  Var
   i: Byte;
  Begin
   TextColor( 11 );
   Form;
   TextColor( 14 );
   GotoXY( 13, 2 ); Readln( Kdo.Jmeno );
   GotoXY( 13, 3 ); Readln( Kdo.Prijmeni );
   GotoXY( 13, 4 ); Readln( Kdo.RodneCis );
   For i:=1 to 3 do Begin
    GotoXY( 13, 4+i ); Readln( Kdo.Adresa[i] );
   end;
   GotoXY( 13, 8 ); Readln( Kdo.Telefon );
  End;

 Procedure Vokaz( var Kdo: Osoba );
  Var
   i: Byte;
  Begin
   TextColor( 11 );
   Form;
   WriteXY( 40, 2 , '  Stárí:' );
   WriteXY( 40, 3 , 'Pohlaví:' );
   TextColor( 10 );
   WriteXY( 13, 2, Kdo.Jmeno );
   WriteXY( 13, 3, Kdo.Prijmeni );
   WriteXY( 13, 4, Kdo.RodneCis );
   For i:=1 to 3 do Begin
    WriteXY( 13, 4+i, Kdo.Adresa[i] );
   end;
   WriteXY( 13, 8, Kdo.Telefon );
   Kdo.Vek:= Stari( Kdo.RodneCis );
   Kdo.Pohlavi:= Pohl( Kdo.RodneCis );
   GotoXY( 49, 2); Write( Kdo.Vek );
   WriteXY( 49, 3, Kdo.Pohlavi );
   TextColor( 7 );
  End;

 Begin
  Nacti( Nekdo );
  Vokaz( Nekdo );
 End.