In der Variablendeklaration wird der Typ als eine konstante Eigenschaft der Variablen festgelegt. Bisher kennen Sie die Standardtypen mit den vordefinierten Namen INTEGER, REAL, CHAR, BOOLEAN und STRING. Im vorausgegangenen Abschnitt 2.9 wurden bereits Array-Variablen definiert. Sie sind ein erstes Beispiel für Typen, die der Programmierer selbst definiert. Wie Konstanten und Variablen können auch Typen Namen erhalten. Dies geschieht im Typvereinbarungsteil, der im Programmtext zwischen dem Konstanten- und dem Variablenvereinbarungsteil steht und mit dem Wortsymbol TYPE eingeleitet wird:
PROGRAM TYPES (INPUT,OUTPUT); CONST N = 4; TYPE GANZEZAHL = INTEGER; GROSSEZAHL = REAL; TMATRIX = ARRAY [1..N, 1..N] OF GANZEZAHL; LONGSTRING = STRING[255]; SHORTSTRING= STRING[16]; VAR I : GANZEZAHL; J : INTEGER; STR1 : LONGSTRING; STR2 : SHORTSTRING; MAT1, MAT2 : TMATRIX; MAT3 : ARRAY [1..N, 1..N] OF GANZEZAHL; MAT4 : TMATRIX; BEGIN END.
Bild 32: Typdeklarationen
In Pascal 2.0 können mehrere Typdeklarationsteile existieren, die auch mit Variablendeklarationsteilen gemischt werden können. Jedoch muß jeder Typname vor seiner Anwendung deklariert werden:
PROGRAM TYPES (INPUT,OUTPUT); TYPE GANZEZAHL = INTEGER; GROSSEZAHL = REAL; VAR I : GANZEZAHL; J : INTEGER; CONST N = 4; TYPE TMATRIX = ARRAY [1..N, 1..N] OF GANZEZAHL; VAR MAT1, MAT2 : TMATRIX; MAT3 : ARRAY [1..N, 1..N] OF GANZEZAHL; MAT4 : TMATRIX; TYPE LONGSTRING = STRING[255]; SHORTSTRING= STRING[16]; VAR STR1 : LONGSTRING; STR2 : SHORTSTRING; BEGIN END.
Bild 33: Gemischte Deklarationsteile in Pascal 2.0
Für zusammengesetzte Typen ist die Benutzung von Typbezeichnern besonders sinnvoll. Im letzten Abschnitt wäre die Struktur der Variablen H1 und H2 mit der folgenden Typdeklaration sofort erkennbar geworden:
TYPE BELEGUNG = INTEGER; FLUR = ARRAY [1..10] OF BELEGUNG; STOCK = ARRAY [1..4] OF FLUR; HAUS = ARRAY [0..20] OF STOCK; VAR H1,H2: HAUS;
Eine wichtige Aufgabe der Typdeklaration besteht darin, die Menge der Variablen in einem Programm in Klassen aufzuteilen. Zuweisungen und Operationen sind nur zwischen den Mitgliedern kompatibler Klassen möglich. Bereits bei der Übersetzung sind dadurch weitgehende Prüfungen des Programmtextes möglich.
Die folgenden Regeln legen die Typkompatiblität in Pascal fest. Dabei werden einige Regeln schon im Vorgriff auf spätere Kapitel aufgeführt:
MAT1:= MAT2 (zulässig) MAT4:= MAT1 (zulässig) MAT3:= MAT1 (unzulässig) MAT4:= MAT3 (unzulässig)
Einige Compiler sind bei der Interpretation der Regeln zur Typkompatibilität etwas großzügiger. Sie erlauben in Einzelfällen auch Zuweisungen zwischen Variablen, die nur die gleiche Struktur besitzen MAT3:= MAT1 ist dann zulässig (s. auch [3], Anhang E).