Retry exit routine

The retry exit routine enables you to control retry processing when a data set runs out of space during ACCEPT, APPLY, GZONEMERGE, LINK LMODS, LINK MODULE, RECEIVE, or RESTORE processing. (In retry processing, the data set is compressed and the utility that failed is called again.) This exit routine must be defined by a GIMEXITS control statement in the GIMEXITS member of SMPPARM, which tells SMP/E retry processing that an exit routine exists and should be called. Optionally, the GIMEXITS control statement may also specify the data set containing the exit routine. This exit routine must be a load module residing in an authorized library. For more information about specifying exit routines in GIMEXITS, see Defining control statements in SMPPARM members. The retry exit routine is loaded at the start of ACCEPT, APPLY, GZONEMERGE, LINK LMODS, LINK MODULE, RECEIVE, or RESTORE command processing and is deleted at the end of command processing.

Note: The processing of this routine is not affected by the debatching SMP/E does after retry processing fails, because this routine is called as part of the initial retry processing, before debatching is attempted.
When a data set runs out of space, an x37 abend occurs. If SMP/E determines that a retry can be attempted, it cancels the abend dump and calls the retry exit routine. The parameter list contains these values:
Table 1. Retry exit routine: parameter list values
Field name Description
UXPUXNUM X'0002' (exit routine number)
UXPUXNAM Name of exit routine
UXPUXAD Address of exit routine
UXPFUNCT ACCEPT, APPLY, GZMRG, LINK, RECEIVE, or RESTORE
UXPPRMAD Address of 25-byte parameter list (see Table 2)
Table 2. Retry exit routine: parameter list passed by UXPPRMAD
Field name Offset (DEC) Offset (HEX)   Length   Description
UX002DDN + 0 + 0 8 ddname of data set that ran out of space
UX002PGM + 8 + 8 8 Name of the utility program that failed
UX002ACH +16 +10 3 ABEND code (hex) in the same format as field SDWACMPC in the SDWA control block
UX002RCH +19 +13 1 ABEND reason code (hex)
UX002ACP +20 +14 3 ABEND code (EBCDIC)
UX002RCP +23 +17 2 ABEND reason code (EBCDIC)

According to the input, the retry exit can either cancel retry processing or perform some other method of recovery.

When the exit routine returns control to SMP/E, it must set register 15 to one of the following values:
Value Meaning
 0 Continue normal retry processing.
12 Stop command processing and perform no retry.
16 Stop SMP/E processing and perform no retry.
20 Perform modified retry processing. Call the failing utility, but do not compress the failing data set.

If any other value is returned, SMP/E converts it to 12, and command processing fails.