-- Inputs an integer n and sums the ints and their squares from 1 to n -- Another example showing In Out mode parameters with ada.integer_text_io; use ada.integer_text_io; with ada.Numerics.Elementary_Functions; use ada.Numerics.Elementary_Functions; procedure modes3 is procedure calcs(n: Natural; s, ssq: in out Natural) is begin s := s + n; ssq := ssq + n**2; end calcs; -- Restrict the range. Cube root would be better, but no time to find it! n: Natural range 0 .. Integer(sqrt(float(Natural'last))); sumUpToN, sumSqUpToN: Natural := 0; begin get(n); for k in 1 .. n loop calcs(k, sumUpToN, sumSqUpToN); end loop; put(sumUpToN); put(sumSqUpToN); end modes3; -- Input: 5 -- Output: 15 55