| 123456789101112131415161718192021222324252627282930 |
- MODULE TNestIdx;
- // Nested arrays: a[i][j] and a[i, j] loads/stores, and passing a
- // nested-array element (a row) to an open-array formal. Exit 42.
- TYPE Row = ARRAY [0..3] OF INTEGER;
- TYPE Mat = ARRAY [0..2] OF Row;
- VAR m : Mat;
- VAR ExitCode : INTEGER;
- VAR i, j, total : INTEGER;
- PROCEDURE Sum(r : ARRAY OF INTEGER) : INTEGER;
- VAR k, s : INTEGER;
- BEGIN
- s := 0;
- FOR k := 0 TO HIGH(r) DO s := s + r[k] END;
- RETURN s
- END Sum;
- BEGIN
- FOR i := 0 TO 2 DO
- FOR j := 0 TO 3 DO m[i][j] := i + j END
- END;
- (* row sums: 6, 10, 14 -> 30 *)
- total := Sum(m[0]) + Sum(m[1]) + Sum(m[2]);
- (* diagonal: 0 + 2 + 4 = 6 -> 36 *)
- total := total + m[0][0] + m[1][1] + m[2][2];
- (* comma form: m[1,3] + m[2,0] = 4 + 2 = 6 -> 42 *)
- total := total + m[1, 3] + m[2, 0];
- ExitCode := total
- END TNestIdx.
|