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
significance of register settings on return are either described in your resource
manager’s documentation, or defined locally.
The RMI registers
CICS does not support 64-bit addressing for applications, but TRUEs can invoke
RMI programs that use storage at addresses which are only available when running
on 64-bit architecture machines. The CICS dump formatter displays the contents of
the 64-bit General Purpose Registers captured when an abend occurs.
Addressing-mode implications
The task-related user exit is invoked in the AMODE of the caller, unless the exit has
been enabled with the LINKEDITMODE option of the EXEC CICS ENABLE
command. This option enables the task-related user exit in its link-edit AMODE.
Therefore, if the TRUE has been link-edited AMODE 31 and is enabled with the
LINKEDITMODE option, it can be placed above the 16MB line. For programming
information about the LINKEDITMODE option of the EXEC CICS ENABLE
command, refer to ENABLE PROGRAM, in the CICS System Programming
Reference manual.
Important
You should avoid the use of the LINKEDITMODE option where the TRUE has been
link-edited AMODE 24. This combination forces the TRUE always to run AMODE
24, which is unwise because:
v An AMODE 24 TRUE cannot be invoked from a transaction running with
TASKDATALOC(ANY). This results in an ‘AEZB’ abend.
v Enabling an AMODE 24 TRUE for task start causes CICS to force all
transactions to run with TASKDATALOC(BELOW).
v On a CICS termination call, CICS ignores LINKEDITMODE and invokes the
TRUE in AMODE 31, if it detects that the TCA it is running under is above the
16MB line. (This is because, for some types of termination, such as a cancel, the
TCA under which the TRUE will run is not predetermined.)
It is recommended that TRUEs are:
v Written so that they can always run AMODE 31
v Link-edited AMODE 31
v Enabled with the LINKEDITMODE option.
If the task-related user exit has not been enabled with the LINKEDITMODE option
of EXEC CICS ENABLE, it is invoked in the AMODE of the caller. For example, in
the case of an application request, if the application is AMODE 24 at the time of the
Chapter 2. Task-related user exit programs 289