with ada.text_io; use ada.text_io; 
with ada.integer_text_io; use ada.integer_text_io; 

procedure procs2 is

    procedure sums(a, b, c: integer; sa, sb, sc: in out integer) is
    begin
        sa := sa + a;
        sb := sb + b;
        sc := sc + c;
    end sums;

    procedure calc(a: integer; b, c: out integer) is
    begin
        -- get(a);
        b := a**2;
        c := a**3;
    end calc;

    procedure put(a, b, c: integer) is
    -- procedure put(a, b, c: in integer) is
    begin
        ada.integer_text_io.put(a); new_line;
        ada.integer_text_io.put(b); new_line;
        ada.integer_text_io.put(c); new_line;
    end put;

    d: integer;
    dcu, dsq: integer;
    -- dcu, dsq: constant integer := 0;
    sumd, sumdcu, sumdsq: integer := 0;
    c: Character;
begin
    while not end_of_file loop
    begin
        get(d);
        calc(d, dsq, dcu);
        sums(d, dsq, dcu, sumd, sumdsq, sumdcu);
        put(d, dsq, dcu);
        put(sumd, sumdsq, sumdcu);
    exception
        when data_error =>
            put("a data error occurred");
            get(c);
    end;
    end loop;
end procs2;