Typischerweise besteht ein Record aus mehr aus einer Komponente. Häufig
unterscheiden sich wenigstens einige Komponenten in ihrem Datentyp.
Die Komponenten werden über einen Namen angesprochen.
In der Regel bleibt die Anzahl der Komponenten eines Records relativ
klein.

Deklaration eines Record-Typs:
TYPE name = RECORD
komponente;
komponente;
...
komponente;
variantenteil; { wahlweise }
END;
komponente steht jeweils für
komponenten_name : typ;Anstelle von komponenten_name kann auch eine Namensliste stehen (die einzelnen Namen jeweils getrennt durch ein Komma).
Bemerkung:
Anstelle von Komponente wird in der Pascal-Literatur auch von Feld
gesprochen. Diese Bezeichnung wird hier vermieden, da in anderen Sprachen
(z.B Fortran) "Feld" im Zusammenhang mit Arrays verwendet wird.
Beispiele:
TYPE datum1 = RECORD
tag, monat, jahr : INTEGER;
END;
datum2 = RECORD
tag : 1..31;
monat : 1..12;
jahr : 1990..2000;
END;
datum3 = RECORD
tag : 1..31;
monat : PACKED ARRAY[1..12] OF CHAR;
jahr : INTEGER;
END;
Deklaration von Variablen mit einem Record-TypBeispiel:
VAR dat1 : datum1; { Datentyp datum1 wie oben deklariert }
dat2 : RECORD { anonymer Datentyp mit Struktur wie datum1 }
tag, monat, jahr : INTEGER;
END;
Zuweisung von Anfangswerten an RecordsStandard Pascal
Die Zuweisung von Anfangswerten ist nicht möglich.
Extended Pascal
Beispiel:
VAR tag_x : datum1 VALUE [tag: 31; monat: 12; jahr: 1995];Turbo Pascal
Beispiel:
CONST tag_x : datum1 = (tag: 31; monat: 12; jahr: 1995);tag_x ist eine Variable !
Bezugnahmen auf Variablen mit einem Record-Typ
Die Bezugnahme erfolgt über qualifizierte Namen:
record.komponenteDabei ist record der Name einer Variablen mit Record-Typ und komponente der Name einer Komponente dieses Record-Typs.
Soll auf mehrere Komponenten eines Records zugegriffen werden, so kann die WITH-Anweisung eingesetzt werden:
WITH record DO BEGIN
komponente_1 := ...;
komponente_2 := ...;
...
komponente_n := ...;
END;
Beispiel:
dat1.tag := 8; dat1.monat := 5; dat1.jahr := 1945;
Writeln(dat1.tag, dat1.monat, dat1.jahr);
{ oder }
WITH dat1 DO BEGIN
tag := 8; monat := 5; jahr := 1945;
Writeln(tag, monat, jahr);
END;
OperatorenAuf Variablen mit einem Record-Typ sind folgende Vergleichsoperatoren anwendbar:
= identisch <> nicht identischAnsonsten können Zugriffe nur komponentenweise erfolgen.
Es ist möglich Records mit Alternativ-Komponenten zu realisieren:
Variante Records