with ada.integer_text_io; use ada.integer_text_io; with ada.text_io; use ada.text_io; procedure modes2 is -- Try changing to in params and then out params procedure sumPowers(v: in integer; c, sv, ss, sc: in out integer) is begin c := c + 1; sv := sv + v; ss := ss + v * v; sc := sc + v * v * v; end sumPowers; -- Try changing to in params and then out params procedure doit(cVals, sum1, sum2, sum3: in out integer) is value: integer; -- Stores input value begin loop exit when end_of_file; get(value); sumPowers(value, cVals, sum1, sum2, sum3); end loop; end doit; procedure putResults(cvs, s1, s2, s3: in integer) is begin put(cvs); put(s1); put(s2); put(s3); new_line; end putResults; countValues, sumSquares, sumValues, sumCubes: integer := 0; begin doit(countValues, sumValues, sumSquares, sumCubes); putResults(countValues, sumValues, sumSquares, sumCubes); end modes2;