procedure Find_Bounds ( Sieve : in Primes; Low : in out Integer; High : in out Integer ) is
use Ada.Text_IO;
use Ada.Integer_Text_IO;
begin
loop
Put("Upper Bound: ");
Get(High);
exit when High > 0 or then High <= Sieve'Last;
New_Line;
Put_Line(Integer'Image(High) & " must be between 0 and " & Integer'Image(Sieve'Last));
end loop;
New_Line;
loop
Put("Lower Bound: ");
Get(Low);
exit when Low >= 0 and Low < High; -- could be Low <= High. not sure here
New_Line;
Put_Line(Integer'Image(Low) & " must be between 0 and " & Integer'Image(High));
end loop;
end Find_Bounds;