MODULE TOpenRowAdr; (* M6: row view passed to a 1-D open formal preserves ADR identity. *) FROM SYSTEM IMPORT ADDRESS, ADR; CONST N = 3; TYPE Vector = ARRAY [1..N] OF REAL; Matrix = ARRAY [1..N] OF Vector; VAR ExitCode : INTEGER; m : Matrix; expect : ADDRESS; PROCEDURE Inner (VAR a : ARRAY OF REAL); BEGIN IF ADR(a) # expect THEN ExitCode := 1 END END Inner; PROCEDURE Outer (VAR a : ARRAY OF ARRAY OF REAL); BEGIN expect := ADR(a[0]); Inner(a[0]) END Outer; BEGIN expect := ADR(m); Outer(m); IF ExitCode = 0 THEN ExitCode := 42 END END TOpenRowAdr.