-- Demonstrates array assignment
-- Arrays of the same name and size can be assigned,
-- even if the indices are different
with ada.text_io; use ada.text_io;
with ada.integer_text_io; use ada.integer_text_io;
procedure array_assign is
type Int_Array_t is array(Natural range <>) of integer;
procedure put_line(a: Int_Array_t) is
begin
for i in a'range loop
put(i);
put(":");
put(a(i)'img);
end loop;
new_line;
end put_line;
procedure put3(a1, a2, a3: Int_Array_t) is
begin
put_line(a1);
put_line(a2);
put_line(a3);
new_line;
end put3;
a1: Int_Array_t(1 .. 4) := (11, 22, 33, 44);
a2: Int_Array_t(1 .. 4) := (61, 72, 83, 94);
a3: Int_Array_t(101 .. 104) := (91, 92, 93, 94);
begin
put3(a1, a2, a3);
a1 := a2;
put3(a1, a2, a3);
a1 := a3;
put3(a1, a2, a3);
end array_assign;
-- Output;
-- 1: 11 2: 22 3: 33 4: 44
-- 1: 61 2: 72 3: 83 4: 94
-- 101: 91 102: 92 103: 93 104: 94
--
-- 1: 61 2: 72 3: 83 4: 94
-- 1: 61 2: 72 3: 83 4: 94
-- 101: 91 102: 92 103: 93 104: 94
--
-- 1: 91 2: 92 3: 93 4: 94
-- 1: 61 2: 72 3: 83 4: 94
-- 101: 91 102: 92 103: 93 104: 94