$c+
module test11_9 { NONSQUARE twoDimensions with assignment
-- test of arrays (2 dimension )}
private
 integer i,j;
 constant max = 3;
 constant mlo = 2;
 typedefinition integer range [0..mlo] zero_mlo;
 typedefinition integer range [0..max] zero_max;
 typedefinition integer array [zero_max][zero_mlo] twodim;
 twodim a, b;
 begin
 i := 0;
 do i < max -> read a[0][i]; i := i+1; od; { use data 1 2 3}
 a[1] := a[0]; { array assignment}
 a[2] := a[1]; { array assignment}
 a[3] := a[1]; { array assignment}
 b := a; { array assignment}
 i := 0;
 j := 0;
do i <= max & j < max ->
	write b[i][j]; j := j+1;
	if j >= max -> 
		i := i+1;
		j := 0;
	 [] j < max -> skip;
	fi;
od;
 { output
  1  2  3  1  2  3  1  2  3  1  2  3}
 end.
