pragma ada_2012;
with ada.integer_text_io; use ada.integer_text_io;
with ada.text_io; use ada.text_io;
procedure two_dim_array is
type My_Array_t is array(Natural range <>, Natural range <>) of Natural;
type My_Array1_t is array(Natural range <>) of Natural;
type My_Array2_t is array(Natural range <>) of My_Array1_t(1 .. 5);
a0: My_Array_t(1 .. 3, 1 .. 4) := ( 1..3 => (1 .. 4 => 0) );
a1: My_Array_t(1 .. 3, 1 .. 4) := ( others => (others => 0) );
a2: My_Array_t := ((11, 12, 13), (21, 22, 23));
b1: My_Array2_t(1 .. 3);
begin
for i in a1'range(1) loop
for j in a1'range(2) loop
a1(i, j) := i*j;
end loop;
end loop;
for a of a2 loop
put(a);
end loop;
for i in b1'range loop
for j in b1(i)'range loop
b1(i)(j) := i*j;
end loop;
end loop;
end two_dim_array;