MODULE TRecordMultiDimArrCtor; (* M5: array-of-record constructors with rank-2 fields, static and runtime. *) TYPE Row = ARRAY [0..2] OF INTEGER; Grid = ARRAY [0..1] OF Row; Rec = RECORD tag : INTEGER; g : Grid END; Arr = ARRAY [0..1] OF Rec; CONST c = Arr { Rec{1, Grid{Row{1,2,3}, Row{4,5,6}}}, Rec{2, Grid{Row{7,8,9}, Row{10,11,42}}} }; VAR ExitCode : INTEGER; i : INTEGER; b : Arr; BEGIN i := 1; b := Arr { Rec{i, Grid{Row{1,2,3}, Row{4,5,6}}}, Rec{i+1, Grid{Row{7,8,9}, Row{10,11,42}}} }; IF (c[1].g[1,2] = 42) AND (b[1].g[1,2] = 42) THEN ExitCode := 42 ELSE ExitCode := 1 END END TRecordMultiDimArrCtor.