$	IF P1.NES."HELP" THEN GOTO SKIP_HELP
$!
$!------------------------------------------------------------------------------
$!
$!                       © Yezerski Roper Ltd. 1997
$!                          http://www.yrl.co.uk/
$!
$! Please note: You are free to distribute this file provided you don't pretend
$!              it's yours, and give Yezerski Roper the credit they deserve :)
$!
$!              Yezerski Roper will not accept any responsibility for any
$!              problems arising from the use of these commands.  However, we
$!              welcome any suggestions and feedback you may have.
$!------------------------------------------------------------------------------
$!
$	Set VER		! only if P1 = "HELP"
$
$!------------------------------------------------------------------------------
$!
$!DOC	Command file name	: MASS_EDIT.COM
$!
$!DOC	Author(s)       	: Dr John A Fotheringham
$!DOC 
$!DES	Command file description
$!DES	------------------------
$!DES	MASS_EDIT allows bulk editing of VMS files
$!DES
$!DES	Parameters
$!DES	----------
$!DES	p1	- Filespec or filelist to be editied (must be present before P2)
$!DES	p2	- (optional) Command file to used
$!DES	p3	- RECOVER (optional) - do edit as a RECOVERY EDIT
$!DES 	p5	- PROMPT (optinal) - will prompt between each edit
$! 
$!DOC	AMENDMENT HISTORY
$!DOC	-----------------
$!DOC 
$!DOC	Version	Date/initials	Description                  
$!DOC	-------	-------------	-----------                  
$!DOC	1.00	24-JUN-91/ JAF	Initial version. 
$!
$!------------------------------------------------------------------------------
$
$	SET NOVER
$	EXIT		! if p1 was "HELP"
$
$ SKIP_HELP:
$
$ 	PARAMS = "$''p1'!$''P2'!$''P3'!$''P4!$''P5'!$"
$
$	recover = "F"
$	if f$type(default_edit).eqs."" then default_edit == "edit/edt"
$	ask = "N"
$
$	IF F$loc ("$RECOVER!",PARAMS).ne.f$len(PARAMS)
$	THEN
$	  PARAMS = PARAMS - "$RECOVER!"
$	  recover = "T"
$	ENDIF
$
$	IF F$loc ("$PROMPT!",PARAMS).ne.f$len(PARAMS)
$	THEN
$	  PARAMS = PARAMS - "$PROMPT!"
$	  ask = "Y"
$	ENDIF
$
$	P1 = F$ext (1, f$loc ("!", PARAMS)-1, PARAMS)
$	PARAMS = PARAMS - "''p1'" - "$" - "!"
$
$	P2 = F$ext (1, f$loc ("!", PARAMS)-1, PARAMS)
$
$	ON ERROR THEN GOTO ABSEND
$	ON CONTROL_Y THEN GOTO ABSEND
$
$	input_file = "F"
$	IF P1 .EQS. "" THEN INQUIRE/NOPUNC P1 "Which files are to be edited ? "
$
$	if f$locate ("@",p1) .ne. f$length (p1) 
$	THEN
$
$	  input_file = "T"
$	  p1 = F$extract (1, f$length(p1), p1)
$
$	ENDIF
$
$!!	IF P2 .EQS. "" THEN INQUIRE/NOPUNC P2 "Using which command file ? "
$
$	IF input_file
$	THEN
$	  open/read listfile 'p1'
$	  read/end=absend listfile file
$	  file = f$element(0,";",file)
$	ELSE
$         FILE = F$SEARCH ("''p1'",1)
$	  IF FILE.EQS."" THEN GOTO ABSEND
$	ENDIF
$
$ LOOP:
$
$	IF JDBG THEN WRITE SYS$OUTPUT "MASS_EDIT: FILE = """, FILE,""""
$	IF F$LOCATE ("""",FILE).EQ.F$LENGTH(FILE)
$       THEN
$	  if f$search("''file'",2).nes.""
$	  THEN
$
$	    IF ask
$	    THEN
$	      INQUIRE/NOPUNC GO_ON "Edit ''File' (Y/N/Q/A) [Y] > "
$	      IF go_on.eqs."Q" THEN GOTO ABSEND
$	      IF go_on.eqs."N" THEN GOTO get_next_file
$	      IF go_on.eqs."A" THEN ask = "N"
$	    ELSE
$	      if f$locate (".DIR;",file) .nes. f$len(file) .OR. -
      		 f$locate (".EXE;",file) .nes. f$len(file) 
$	      THEN
$
$	 	WRITE SYS$OUTPUT "Not allowed to edit ",file
$		GOTO get_next_file
$	      ENDIF
$
$	      WRITE SYS$OUTPUT "Editing file ", FILE
$	    ENDIF
$
$           if p2.nes. ""
$	    THEN
$	      IF recover
$	      THEN
$	        semi_col = F$loc (";",file)
$		dot_col  = semi_col - 1
$ REC_LOOP:
$		IF (f$ext (dot_col,1,file).nes.".")
$		THEN
$		  dot_col = dot_col -1
$		  goto rec_loop
$		ENDIF
$
$		recfile = f$ext (0, dot_col, file) + ".JOU"
$
$	        copy 'p2' 'recfile'
$	        DEF/NOLOG/USER SYS$INPUT TT:
$	        DEF/NOLOG/USER SYS$OUTPUT TT:
$	        'default_edit'/recover 'file'
$	      ELSE
$	        DEF/NOLOG/USER SYS$INPUT TT:
$	        DEF/NOLOG/USER SYS$OUTPUT TT:
$	        edit/edt/command='p2' 'file'
$             ENDIF
$
$	    ELSE
$	      DEF/NOLOG/USER SYS$INPUT TT:
$	      DEF/NOLOG/USER SYS$OUTPUT TT:
$	      'default_edit' 'file'
$	    ENDIF
$
$	  ENDIF
$	ENDIF
$
$ get_next_file:
$
$	last_file = f$element(0,";",file)
$
$	IF input_file
$	THEN
$	  read/end=absend listfile file
$	ELSE
$         FILE = F$SEARCH ("''p1'",1)
$	  IF FILE.EQS."" THEN GOTO ABSEND
$	ENDIF
$
$	IF JDBG THEN WRITE SYS$OUTPUT "MASS_EDIT: LAST_FILE = """, LAST_FILE,""""
$      	IF f$element(0,";",file).nes.last_file THEN GOTO LOOP
$
$ ABSEND:
$	IF input_file THEN close listfile
$	EXIT		! End of MASS_EDIT
$