/* Typical.rexx */

/*
Typical ARexx program using Command Line Parsing
	      and help system

USAGE: TYPICAL [FROM] <file> [TO <dir>] [QUIET]
*/

signal on failure; signal off error; signal on syntax; signal on break_c

facility = 'Typical'
retcode = 0

dtemplate = 'FROM/A,TO/K,QUIET/S: '
template = 'QUIET/S,FROM/A,TO/K'
args.=''

parse arg g_c
do while g_c='?'
  options prompt dtemplate': '  /* this template is      */
  parse pull g_c		/* displayed to the user */
  if g_c='?' then do
    g_s=sourceline(3)
    if pos('/*',g_s)=0 then break; if pos('*/',g_s)>0 then break
    say
    g_s=sourceline(4)
    do i=5 while pos('*/',g_s)=0; say g_s; g_s=sourceline(i); end
    say
    end
  end
interpret Cparse(g_c,template,'args')
if args.ERRCODE > 1 then do; say facility'-E-BADARGS,' args.ERRTEXT; exit 5; end

/*
   Body of code
*/

GetOut:
exit retcode

/* E N D */

/* Error labels follow */

break_c:
break_d:
break_e:
break_f:
  say facility'-E-BREAK, Control-C interrupt'; retcode = 20; signal GetOut
failure:
  say facility'-E-FAIL, Line:' sigl', Error:' rc; retcode = rc; signal GetOut
syntax:
  say facility'-E-SYNTAX, Line:' sigl', Error:' rc; retcode = rc; signal GetOut
error:
  say facility'-E-ERROR, Line:' sigl', Error:' rc; retcode = rc; signal GetOut

