t_open_row_to_1d.mod 480 B

123456789101112131415161718192021
  1. MODULE TOpenRowTo1D;
  2. (* M3: a row subview of an open 2-D array passed to a 1-D open VAR
  3. formal; writes must reach the original row. *)
  4. TYPE Mat = ARRAY [0..1], [0..2] OF INTEGER;
  5. VAR ExitCode : INTEGER;
  6. m : Mat;
  7. PROCEDURE SetRow (VAR r : ARRAY OF INTEGER);
  8. BEGIN
  9. r[2] := 42
  10. END SetRow;
  11. PROCEDURE Outer (VAR a : ARRAY OF ARRAY OF INTEGER);
  12. BEGIN
  13. SetRow(a[0])
  14. END Outer;
  15. BEGIN
  16. Outer(m);
  17. IF m[0, 2] = 42 THEN ExitCode := 42 ELSE ExitCode := 1 END
  18. END TOpenRowTo1D.