! Code to test %string
! Would be interesting to try %string(30) to test alignment
! Also similar test for %record (say 21 bytes per record?)
begin
routine test(name param) ; ! ia1 ia2
write(addr(param),0) ; newline ;! 2145833816 2145833816
write(sizeof(param),0); newline ;! 32 8
write(typeof(param),0); newline ;! 3 3
end
string(31)array ia1(3:5)
string(7)array ia2(2:4,3:6)
printstring( "Testing ia1"); newline
write(addr(ia1),0); newline ;! 2145833816
write(addr(ia1(3)),0); newline ;! 2145833612
write(sizeof(ia1),0); newline ;! 32
write(typeof(ia1),0); newline ;! 3
test(ia1)
printstring( "Testing ia2"); newline
write(addr(ia2),0); newline ;! 2145833816 again same as ia1
write(addr(ia2(2,3)),0); newline ;! 2145833708 96 bytes past address of first element of ia1, i.e. ia1(3)
! i.e. 3 elements of 32 bytes (%string(31)), ie complete contents of array ia1
write(sizeof(ia2),0); newline ;! 8
write(typeof(ia2),0); newline ;! 3
test(ia2)
endofprogram