t_record_multidim_arrctor.mod 669 B

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