-- Return can be used from anywhere in a main routine to exit a program
-- Return always returns to the caller.
-- Not recommended!
with ada.integer_text_io; use ada.integer_text_io;
with ada.text_io; use ada.text_io;
procedure exit_anywhere is
procedure p(n: integer) is
begin
if n < 0 then
return;
else
put("N is positive. ");
end if;
end p;
n: Integer;
begin
loop
put("Enter a positive even integer, negative to quit: ");
get(n);
p(n);
exit when n < 0; -- Normal exit from loop
if n mod 2 = 1 then
put_line("Number must be even! Exiting Program");
return; -- Error - return from program
elsif n > 1_000 then
put_line("Number must be < 1,000! Exiting Program");
return; -- Error - return from program
else
put_line("That's a valid number!");
end if;
put_line(n'img);
end loop;
end exit_anywhere;