Addressing-mode implications

A task-related user exit (TRUE) program is invoked in the AMODE of the caller, unless you specify the LINKEDITMODE option when you enable the exit program.

The LINKEDITMODE option enables the task-related user exit program in its link-edit AMODE. Therefore, if the TRUE is link-edited AMODE 31 and is enabled with the LINKEDITMODE option, it can be placed above 16 MB but below 2 GB. For programming information about the LINKEDITMODE option of the EXEC CICS ENABLE command, see ENABLE PROGRAM command.

Important: Do not use the LINKEDITMODE option when the TRUE is link-edited AMODE 24. This combination forces the TRUE to always run AMODE 24, which is undesirable for the following reasons:
  • An AMODE 24 TRUE cannot be invoked from a transaction that is running with TASKDATALOC(ANY). The result is an AEZB abend.
  • Enabling an AMODE 24 TRUE program for task start causes CICS® to force all transactions to run with TASKDATALOC(BELOW).
  • On a CICS termination call, if CICS detects that the TCA the TRUE is running under is above the 16 MB line, CICS ignores the LINKEDITMODE option and invokes the TRUE in AMODE 31. This is because for some types of termination, such as a cancel, the TCA under which the TRUE will run is not predetermined.
The recommendation for TRUEs is as follows:
  • Write the TRUE so that it can always run AMODE 31.
  • Link-edit the TRUE AMODE 31.
  • Enable the TRUE with the LINKEDITMODE option.

AMODE 64 TRUEs are not supported.

If the task-related user exit program is not enabled with the LINKEDITMODE option of EXEC CICS ENABLE, it is invoked in the AMODE of the caller. For example, for an application request, if the application is AMODE 24 at the time of the DFHRMCAL request, the task-related user exit program is invoked in AMODE 24. For this reason, task-related user exit programs that are enabled without the LINKEDITMODE option must reside below the 16 MB line.