%META:TOPICINFO{author="ChrisBartram" date="1149893736" format="1.1" version="1.1"}% %META:TOPICPARENT{name="Hp3000MpexXeqs"}%
PARM CMD=?,FILESET=@,PROMPT=YESY,TEMPWORK=EXTEMP

##  EX.XEQ COMMAND FILE COPIED FROM INTERACT MAGAZINE
##  H.G.ULRICH  IAGB
##  ENTERED BY DMG

IF  "!CMD"="?"
    ECHO EX Command File.
    ECHO
    ECHO Description - EXecutes an MPE file command against a set of files.
    ECHO
    ECHO Syntax :
    ECHO   EX (MPE Command),(File set),(verify prompt),(work file name)
    ECHO
    ECHO Parms:
    ECHO   MPE Command - Any mpe command meant to be issued against a file
    ECHO              (i.e. PRINT, PURGE, RELEASE, SECURE ..etc)
    ECHO   File Set    - A file set meant to be used by the LISTF or
    ECHO              LISTFILE command (default = @)
    ECHO   Verify Prompt - Prompt for each command execution
    ECHO   Work File Name - Name of temporary file used (default EXTEMP)
    ECHO
    ECHO Examples :
    ECHO   EX PURGE @.TEMPDATA (purges all files in TEMPDATA, prompts first)
    ECHO   EX RELEASE @ NO     (Releases all files with out prompting)
    ECHO   EX HELP @.CMD NO     (Lists all files in the CMD group)
    ECHO   EX PRINT @.SOURCE    (Prints all files in the SOURCE group)
    RETURN
ENDIF

ERRCLEAR
IF FINFO("!TEMPWORK","EXISTS") THEN
   INPUT _EX_RESP," Temporary file !TEMPWORK already exists, OK to purge? "
   If str(ltrim(rtrim(ups(_EX_RESP))),1,1)='Y'
      ERRCLEAR
      PURGE !TEMPWORK,TEMP>$null
      IF CIERROR = 383
         ECHO The file !TEMPWORK does not exist in the temporary domain.
         ECHO This could be a permanent file with the same name.
         ECHO
         SETVAR _EX_RESP ' '
         INPUT _EX_RESP, 'OK to purge the permanent file !TEMPWORK? '
         If str(ltrim(rtrim(ups(_EX_RESP))),1,1)='Y'
            PURGE !TEMPWORK
         ENDIF
      ENDIF
   ELSE
      ECHO Temporary file !TEMPWORK already exists, EX canceled.
      ECHO To restart EX, specify a custom work file or answer YES
      ECHO in reponse to the PURGE request.
      ECHO
      RETURN
    ENDIF
ENDIF

ERRCLEAR
FILE !TEMPWORK;MSG
CONTINUE
LISTFILE !FILESET,QUALIFY > *!TEMPWORK
IF CIERROR <> 0 OR HPCIERR <> 0
   ECHO LISTFILE !FILESET,QUALIFY
   IF HPCIERRCOL > 0 THEN
      ECHO ![RPT(" ",HPCIERRCOL-1)+"^"]
   ENDIF
   ECHO !HPCIERRMSG
   RESET !TEMPWORK
   PURGE !TEMPWORK,TEMP
   RETURN
ENDIF
RESET !TEMPWORK

WHILE FINFO("!TEMPWORK","EOF")>0 DO
      INPUT _EX_NEXT "NO" THEN
          INPUT _EX_YES;PROMPT="!CMD !_EX_NEXT (Y/N) ? >"
      ELSE
          SETVAR _EX_YES "Y"
          ECHO !CMD !_EX_NEXT
      ENDIF
      IF UPS(_EX_YES)="Y" THEN
         ERRCLEAR
         CONTINUE
         !CMD !_EX_NEXT
         IF CIERROR <> 0 OR HPCIERR <> 0
            ECHO !CMD !_EX_NEXT  FAILED RESTART ATTEMPTED
         ENDIF
      ELSE
         ECHO !CMD !_EX_NEXT BYPASSED
      ENDIF
ENDWHILE
DELETEVAR _EX_@
PURGE !TEMPWORK,TEMP

-- Main.ChrisBartram - 09 Jun 2006