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.