storage. However, on an EXEC CICS GETMAIN command, the exit program can
override the TASKDATAKEY option by specifying either CICSDATAKEY or
USERDATAKEY.
v When an exit program obtains storage using an XPI GETMAIN call, the storage
key depends on the value specified on the STORAGE_CLASS option, which is
mandatory, and which overrides the value of TASKDATAKEY.
Exit programs and transaction isolation
When you are running CICS with the transaction isolation facility (TRANISO=YES),
the exit program inherits the subspace of the application that caused the exit to be
called.
If your GLUE needs to access storage belonging to a task other than the calling
task, it can use the DFHSMSRX SWITCH_SUBSPACE XPI command to switch to base
space. It does not need to switch back to subspace mode before returning to CICS
as CICS will restore the subspace mode if necessary.
Errors in user exit programs
Because global user exit programs are an extension to CICS code, they are subject
to the environment that CICS is running in when they are called.
If an error is detected at an exit point, CICS issues messages indicating which exit
program was in error, the place in the program at which the error occurred, and the
name of the associated exit point. The detection of an error is not guaranteed,
because it depends on the CICS environment at the time of error, and on the nature
of the error. For example, CICS might not recognize a looping user exit program,
since the detection mechanism may have been turned off. Also, an abend in one of
the exits XPCABND, XPCTA, or XSRAB may cause CICS to terminate abnormally,
because an abend during abend processing causes CICS to terminate.
Exit programs invoked at some exit points (for example, XTSEREQ, XTSEREQC,
XICEREQ, XICEREQC, XTDEREQ, or XTDEREQC) can enter a loop by issuing a
recursive command (such as a TS command at exit point XTSEREQ). The exits
most likely to be affected provide a recursion count parameter, UEPRECUR, that
you can use to prevent such loops.
Important
When coding user exit programs, you should bear in mind that the code is executed
as an extension of CICS code, rather than as a transaction, and any errors could
have disastrous results.
Defining, enabling, and disabling an exit program
When you have written an exit program, you must define it to CICS.
1. Define the exit program using the CEDA DEFINE PROGRAM command, specifying
RELOAD(NO).
2. Install the exit program.
3. Enable the exit program using one of the following methods:
v If your exit program is using an exit point in the user log record recovery
program or the file control recovery control program, you can use the TBEXITS
system initialization parameter.
12 Customization Guide
|
|
|
|
|
|
|
|