program to be called at the start as well as at the end of a task, you must specify
TASKSTART on the EXEC CICS ENABLE command for the TRUE. This causes the
TRUE to be invoked at the start and end of every task.)
If the last two bytes of the schedule flag word are set to X'1000', this indicates that
the task-related user exit is interested in being invoked by EDF to format requests
for display. This schedule flag bit UEFDFEDF is set on either by the EXEC CICS
ENABLE FORMATEDF command, or by the task-related user exit. Unlike other
schedule flag bits, there are restrictions on when the task-related user exit can
register a lack of interest in EDF (that is, restrictions on when UEFEDFDF can be
set off). Once a task-related user exit has formatted the initial screen for EDF to
display on “About to Execute” or “Command Execution Complete”, CICS does not
allow it to set the EDF bit UEFDFEDF off until the screen build cycle is complete.
Register handling in the task-related user exit program
In this section, two sets of registers are discussed:
1. The registers belonging to the CICS management module that handles
task-related user exits. These are referred to as the CICS registers.
2. The registers belonging to the calling program and that are addressed by
parameter UEPHMSA of DFHUEPAR. These are referred to as the calling
program’s registers.
Saving CICS registers
Your task-related user exit program should begin by saving the contents of the
CICS registers. Register 13 addresses an 18-word area into whose 4th and
subsequent words your exit program should store registers 14 through 12. Three of
the saved values have significance, as follows:
v The saved contents of register 14 contain the address within CICS to which the
task-related user exit program returns control.
v The saved contents of register 15 contain the address at which the task-related
user exit program has just been entered.
v The saved contents of register 1 address the parameter list (DFHUEPAR) that is
provided by CICS for the task-related user exit program.
Note: As a general rule, if you fail to understand the origin or the purpose of a call,
you should:
1. Restore any registers that you have used to the state they were in on
entry to your code
2. Return to the address contained in CICS register 14.
The calling program’s registers
The calling program’s registers are stored at the address specified by UEPHMSA of
DFHUEPAR. Where the calling program is a CICS management program, for
example the syncpoint manager, the only caller registers that have significance are
registers 1 and 15. Register 1 addresses the calling program’s parameter list. CICS
sets the calling program’s register 15 to zero before the task-related user exit
program is invoked. The calling program’s register 15 can sometimes be used to
pass responses back to the calling program from the task-related user exit program,
depending on the identity of the caller. If the calling program is a CICS
management program, and the register is still zero on return, CICS assumes that its
call was not understood. If the calling program is an application program, the
the task-related user exit program
266
CICS TS for OS/390: CICS Customization Guide