Sample REXX utility to generate ++RELEASE/++HOLD


Table of Contents

  • Explanation
  • Use of Sample Utility

  • Explanation

    Enhanced HOLDDATA delivered between December 30, 1997 and January 8, 1998 included some incorrect ++HOLD statements. The problem with the ++HOLD statements is that they did not have the causing APAR number in the correct format. This will result in these ++HOLDs never being resolved by a fixing PTF.

    The latest load of the data includes ++RELEASE and ++HOLD statements to correct those errors. However, if any ++HOLDs with an incorrect prefix remain, this sample exec will create the appropriate statements that you can scan to verify they release the correct entries, and then receive as holddata to correct the errors.

    Note: This sample exec was designed to correct the ++HOLD statements delivered by Enhanced HOLDDATA. However, the exec can be modified to correct APAR prefixes on other than Enhanced HOLDDATA. The exec contains comments to direct which statements need to be changed.


    Use of Sample Utility

    1. Download the files from the web page
      HOLDFIXDAT.TXTTable of APAR prefixes
      HOLDFIXREX.TXT Sample REXX utility
      HOLDFIXJOB.TXTSample JCL

    2. Move/Copy/Rename the files to MVS as:

    3. Run an SMP/E LIST HOLDDATA HOLDERROR. (sample job below)
      //SAMPLE JOB '.......................','..........',RD=R,
      // CLASS=T,NOTIFY=......,MSGCLASS=H,MSGLEVEL=(1,1),REGION=5000K,
      // TIME=23040
      //*
      //* SMP/E LIST COMMAND
      //*
      //SMPELIST EXEC PGM=GIMSMP
      //SMPCSI   DD DSN=xxx.SMPE.CSI,DISP=SHR
      //SMPOUT   DD SYSOUT=*
      //SMPLOGA  DD SYSOUT=*
      //SMPCNTL DD *
       SET BDY(GLOBAL).
       LIST HOLDDATA HOLDERROR.
      /*
      

      The SMPOUT dataset in the sample goes to the default output, but you could define dataset xxx.HOLD.LIST to contain the SMPOUT. The REXX exec expects to find the output from the LIST HOLDDATA HOLDERROR in that specific dataset.

    4. If the dataset containing the LIST HOLDDATA HOLDERROR does not have the name xxx.HOLD.LIST, rename the dataset to xxx.HOLD.LIST.

    5. Execute the REXX exec passing the high level qualifier of the dataset name (i.e. userid). This can be run in background by modifying the sample job, or run in foreground as a command.

    6. Verify that the output produced in dataset xxx.HOLDDATA.FIX has created appropriate ++RELEASE and ++HOLD statements. This should create statements that modify only IBM supplied ++HOLDs, but the output must be verified. Manually delete any statements that were created in error.

    7. Use the xxx.HOLDDATA.FIX dataset as input for an SMP/E RECEIVE HOLDDATA. (sample job below)
      //SAMPLE JOB '.......................','..........',RD=R,
      // CLASS=T,NOTIFY=......,MSGCLASS=H,MSGLEVEL=(1,1),REGION=5000K,
      // TIME=1440
      //*
      //* SMP/E RECEIVE OF HOLD DATA
      //*
      //SMPERECV EXEC PGM=GIMSMP
      //SMPCSI   DD DSN=xxx.SMPE.CSI,DISP=SHR
      //SYSUT2   DD *
      //SYSUT3   DD *
      //SMPOUT   DD SYSOUT=H
      //SMPSNAP  DD SYSOUT=H
      //SMPLOG   DD SYSOUT=H
      //SMPLOGA  DD SYSOUT=H
      //SMPHOLD  DD DSN=xxx.HOLDDATA.FIX,DISP=SHR
      //SMPPTFIN DD DATA,DLM='$$'
      $$
      //SMPCNTL DD *
       SET BDY(GLOBAL) .
       RECEIVE HOLDDATA BYPASS(FMID) .
      /*
      

    This procedure should correct any ++HOLDs that had an incorrect APAR prefix. ²