t_open_row_adr.mod 579 B

1234567891011121314151617181920212223242526
  1. MODULE TOpenRowAdr;
  2. (* M6: row view passed to a 1-D open formal preserves ADR identity. *)
  3. FROM SYSTEM IMPORT ADDRESS, ADR;
  4. CONST N = 3;
  5. TYPE Vector = ARRAY [1..N] OF REAL;
  6. Matrix = ARRAY [1..N] OF Vector;
  7. VAR ExitCode : INTEGER;
  8. m : Matrix;
  9. expect : ADDRESS;
  10. PROCEDURE Inner (VAR a : ARRAY OF REAL);
  11. BEGIN
  12. IF ADR(a) # expect THEN ExitCode := 1 END
  13. END Inner;
  14. PROCEDURE Outer (VAR a : ARRAY OF ARRAY OF REAL);
  15. BEGIN
  16. expect := ADR(a[0]);
  17. Inner(a[0])
  18. END Outer;
  19. BEGIN
  20. expect := ADR(m);
  21. Outer(m);
  22. IF ExitCode = 0 THEN ExitCode := 42 END
  23. END TOpenRowAdr.