JCL changes considerations

The Restart and Cleanup function is based on information from the previous run. In particular, for step restart, the step list obtained from the previous run is used to run the return code simulation. The same considerations apply also to GDG simulation. To accomplish this, the EQQCLEAN pre-step (the one running data set cleanup, step RC simulation, and GDG data set simulation) identifies and locates the steps and data set to be handled using the list of steps and data set built from the controller, based on step names, DD names, and data set names taken from the previous run.

As a consequence, Restart and Cleanup might fail if either of the following situations occurs:
  • The JCL structure is changed (via exit01, ISPF, directives like FETCH, BEGIN, or END) in a way that makes the list passed by the controller no longer valid (for example, by changing the name of a step to be simulated).
  • Any data sets obtained from the previous run is renamed or deleted in a way that makes the list passed by the controller no longer valid.

As a consequence, if the JCL structure is changed (via exit01, ISPF, directives like FETCH, BEGIN, or END) in a way that makes the list passed by the controller no longer valid (for example, by changing the name of a step to be simulated), Restart and Cleanup might fail.

If the JCL is changed via user exit EQQUX001, the exit will know if it is called in a restart and cleanup path by checking the CALTYP parameter.

Usually, EQQUX001 is used to add pre-step EQQDELDS. If this happens, it should be done every time the exit is called, so that the step list used by the RC function is consistent with the real JCL step list. To prevent EQQDELDS from being re-executed in the following run, add a DD DUMMY with the DDNAME listed in the RCLOPTS DDNEVER parameter: this makes the EQQDELDS step never re-executable on Step Restart.

Also, to prevent EQQDELDS from being re-executed at Job Restart, customize the EQQUX001 exit to invoke the EQQDELDS program with NOREEX set to YES in the following runs of the job (as shown in the sample provided with HCL Workload Automation for Z). In this way, the execution of EQQDELDS is simulated.

Remember that if EQQCLEAN is present, it must always appear as the first step in the sequence. If you decide to add EQQDELDS, place it following EQQCLEAN.

In general, you should not:
  • Remove reserved HCL Workload Automation for Z statements, such as:
    • TIVDSTxx OUTPUT statements
    • //*OLDSTEP= --
    • //* .........$SUBJCL
  • Change the name of an existing step.
  • Change the name of an existing DD.
  • Change the name of an existing data set name.
  • Delete a step (unless done via EQQUX001 at each call, so that the submitted JCL will never contain that step).
  • Insert a step (unless done via EQQUX001 at each call, so that the submitted JCL will always contain this step).
  • Delete a DD that is not a DUMMY DD (unless done via EQQUX001 at each call, so that the submitted JCL will never contain that DD).
  • Delete or rename a data set that was obtained from a previous run and that is needed to perform step restart actions.
  • Insert a DD that is not a DUMMY DD (unless done via EQQUX001 at each call, so that the submitted JCL will always contain that DD).
But you can:
  • Change the VOLSER of an existing DD
  • Change the SPACE parameter for an existing DD
  • Alter SYSIN data if needed.
  • Alter Job Card to set a password or user.
  • Insert a control statement such as /*JOBFROM.
  • Add steps at the end of the JCL.

If the JCL is refreshed or changed in a Restart and Cleanup function, new and changed variables will be replaced with the current value in AD variable tables.

See also Limitation on the number of job steps.