/* dump.rexx */

/*
     Format

       DUMP [FILE] <wildcards>

   Renames file to file.n.BAK

*/

signal off failure; signal off error; signal on syntax; signal on break_c
options failat 10
call addlib 'rexxextra.library',-20,-30,0

facility = 'Dump'
retcode = 0
template = 'FILE/A'
dtemplate = template
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

k = filelist(args.FILE||'(%)','names','F')
do j = 1 to k
  name = names.j
  if ~exists(name) then iterate
  do i = 1 until ~exists(name'.'i'.BAK'); nop; end
  'move 'name name'.'i'.BAK'
  retcode = rc
  if retcode = 0 then
    say facility'-S-DUMPED,' name' dumped as 'name'.'i'.BAK'
  else
    say facility'-E-PROB,' name' could not be dumped.'
  end
exit retcode

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

