-- 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;