! second test
begin
routine test(name param) ; ! ia1 ia2
write(addr(param),0) ; newline ;! 2145833816 2145833816 same address again!
write(sizeof(param),0); newline ;! 4 4 sizeof %integer
write(typeof(param),0); newline ;! 1 1 typeof %integer
end
integerarray ia1(3:5)
integerarray ia2(2:4,3:6)
write(addr(ia1),0); newline ;! 2145833816 Note it is the same address as written in test(ia1) and test (ia2)!
write(addr(ia1(3)),0); newline ;! 2145833744
write(sizeof(ia1),0); newline ;! 4
write(typeof(ia1),0); newline ;! 1
test(ia1)
write(addr(ia2),0); newline ;! 2145833816 Same address as ia1 above!!! that was unexpected.
write(addr(ia2(2,3)),0); newline ;! 2145833756 This is 12 bytes after address of first element of ia1, i.e. ia1(3)
! (Note ia1 is 3 elements of 4 bytes per element)
write(sizeof(ia2),0); newline ;! 4
write(typeof(ia2),0); newline ;! 1
test(ia2)
endofprogram