There are five user exit points in DFHCSDUP. By specifying the appropriate entry parameters, you can cause DFHCSDUP to pass control to an exit routine at any of these points.
None of the user exits supports XPI calls.
The address of a parameter list is passed to the user exit routine in register 1. The list contains some standard parameters that are passed to all of the exit routines, and may also contain some exit-specific parameters that are unique to the exit point from which the exit routine is being invoked.
The standard parameter list is different from that used by CICS® global user exits. The following DFHUEXIT DSECT maps the standard parameter list used by DFHCSDUP and the sample program DFH$CUS1. (The UEPCMDA and UEPCMDL fields are are used only by the get-command exit.)
DFHUEXIT DSECT
UEPEXN DS A ADDRESS OF EXIT NUMBER
UEPGAA DS A ADDRESS OF GLOBAL AREA
UEPGAL DS A ADDRESS OF GLOBAL AREA LENGTH
UEPCRCA DS A ADDRESS OF CURRENT RETURN-CODE
UEPTCA DS A ADDRESS OF TCA
UEPCSA DS A ADDRESS OF CSA
UEPHMSA DS A ADDRESS OF SAVE AREA USED BY HOST
UEPSTACK DS A ADDRESS OF KERNEL STACK ENTRY
UEPXSTOR DS A ADDRESS OF STORAGE OF XPI PARMS
UEPTRACE DS A ADDRESS OF TRACE FLAG
*
UEPCMDA DS A ADDRESS OF UTILITY COMMAND
UEPCMDL DS A ADDRESS OF LENGTH OF UTILITY
* COMMAND
Explanations of the exit-specific parameters are included in the descriptions of the individual exits, which follow.
The initialization exit is invoked once during DFHCSDUP initialization. Its purpose is to allow a routine to perform exit-related initialization. For example, the routine may obtain its own global work area and save its address in UEPGAA and its length in the halfword pointed to by UEPGAL. These values are retained by DFHCSDUP and become available at the other exit points.
The purpose of the get-command exit is to read in command lines. If it is specified, no commands are read from SYSIN.
On invocation, your exit routine must supply the address and length of a complete command. It must return control with either the normal return code ‘UERCNORM’ or with the code ‘UERCDONE’, signifying that it has no more commands to pass. After it has processed each command, DFHCSDUP reinvokes the exit until return code ‘UERCDONE’ is received.
The extract exit is invoked at various points during processing of the EXTRACT command. The points are listed in When the user program is invoked.
Note that these parameters are similar to those passed when DFHCSDUP is invoked as a batch program. (See Parameters passed from DFHCSDUP to the user program.) However, when DFHCSDUP is invoked from a user program, the parameter list also includes the standard parameters mentioned under Parameters passed to the user exit routines.
The put-message exit is invoked whenever a message is to be issued. If you are running under TSO, you could use this exit to terminate DFHCSDUP after the operator inputs an ATTENTION interrupt. (See Invoking DFHCSDUP from a user program.) Or you could use it to provide messages in the operator’s national language.
Even if this exit is supplied, messages are always additionally written to the default output file (that is, to SYSPRINT, or to the replacement ddname specified on the entry linkage to DFHCSDUP).
DS F Reserved
INS_1_TEXT_PTR DS A Address of insert 1
INS_1_LEN_PTR DS A Address of a fullword containing
the length of insert 1
DS F Reserved
DS F Reserved
INS_2_TEXT_PTR DS A Address of insert 2
INS_2_LEN_PTR DS A Address of a fullword containing
the length of insert 2
DS F Reserved
...
DS F Reserved
INS_n_TEXT_PTR DS A Address of insert n
INS_n_LEN_PTR DS A Address of a fullword containing
the length of insert n
DS F Reserved
The exit-specific parameters provide a message number and insert fields only, to enable you to provide messages in the language of your TSO operators. The structure pointed to by UEPINSA is repeated as many times as UEPINSN requires.
The purpose of the termination exit is to allow you to perform final housekeeping duties. It is invoked before a normal or an abnormal termination of DFHCSDUP.
Your exit program cannot reset the value in this field.