-- Store all employees into an array, and print them
-- This version has an error
with ada.text_io; use ada.text_io;
with ada.float_text_io; use ada.float_text_io;
procedure emp2a is
type Employee is record
Name: String(1 .. 20);
ID: String(1 .. 6);
Salary: Float;
end record;
type Emp_Array is array(1 .. 10) of Employee;
-- Input the employees
procedure get_emps(emps: out Emp_Array) is
e_tmp: Employee;
num_emps: Natural := 0;
begin
while not end_of_file loop
num_emps := num_emps + 1;
get(e_tmp.Name);
get(e_tmp.ID);
get(e_tmp.salary);
emps(num_emps) := e_tmp;
end loop;
end get_emps;
-- Print the array
procedure put_emps(emps: in Emp_Array) is
e_tmp: Employee;
begin
-- Error: Prints entire array, including non-existent employees
-- Need to pass num_emps from get_emps, to main, to put_emps
for i in 1 .. emps'last loop
e_tmp := emps(i);
put(e_tmp.Name);
put(e_tmp.ID);
put(e_tmp.salary, 7, 2, 0);
new_line;
end loop;
end put_emps;
the_emps: Emp_Array;
begin
get_emps(the_emps);
put_emps(the_emps);
end emp2a;