| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- 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.
|