MODULE TRecordMultiDim; (* M5: rank-2 array field stored as an inline flat payload with a synthesized view; record arrays, local records, ADR/SIZE and calls. *) FROM SYSTEM IMPORT ADDRESS, ADR; TYPE Grid = ARRAY [0..1], [0..2] OF INTEGER; Rec = RECORD tag : INTEGER; grid : Grid END; VAR ExitCode : INTEGER; r : Rec; ra : ARRAY [0..1] OF Rec; PROCEDURE Fill (VAR a : ARRAY OF ARRAY OF INTEGER); BEGIN a[1, 2] := 42 END Fill; PROCEDURE Local; VAR x : Rec; BEGIN x.grid[0, 1] := 7; IF x.grid[0, 1] # 7 THEN ExitCode := 3 END END Local; BEGIN r.grid[0, 1] := 7; Fill(r.grid); Fill(ra[1].grid); Local; IF (r.grid[1, 2] # 42) OR (ra[1].grid[1, 2] # 42) THEN ExitCode := 1 ELSIF SIZE(r.grid) # 24 THEN ExitCode := 2 ELSIF ADR(r.grid) # ADR(r.grid[0]) THEN ExitCode := 4 ELSE ExitCode := 42 END END TRecordMultiDim.