The problem is that SQL*plus has no loop function. You can rig up something using three files as follows:

------------------- Menu.sql --------------------------

prompt 1 Option 1
prompt 2 Option 2
prompt 3 Option 3
prompt 4 Exit

accept option prompt 'Choice: '
col result new_value result

select decode(&option, 4, 'file_exit', 'run_file '||&option) result
from dual
/

@&result

--------------------- run_file.sql --------------------------------

begin
myproc(&1);
end;
/
@menu

----------------------- file_exit.sql-------------------------------

exit

--------------------------------------------------------------------

A bit naff, but SQL*Plus isn't really designed for this sort of thing.