Using Cics Services In Your Task-Related User Exit Program - IBM SC34-6814-04 Customization Manual

Cics transaction server for z/os
Table of Contents

Advertisement

v Before passing control to a task-related user exit program, CICS inhibits:
v While control is in a task-related user exit program:
If the PURGEABLE option is specified, before passing control to a task-related user
exit program CICS inhibits the monitoring of runaway tasks but not the ability to
purge tasks. While control is in a task-related user exit program:
v Purge requests are actioned.
v Force purge requests are actioned.
v Monitoring of runaway tasks is inactive.
See "Wait states in your task-related user exit program" on page 292 for a fuller
explanation of the PURGEABLE option.

Using CICS services in your task-related user exit program

You might find some CICS services useful in your exit program. These can be
invoked using EXEC CICS commands. However, you should take note of the
following:
v If your program is invoked because of a CICS abend, it must not use any CICS
v EXEC CICS commands that cause an XCTL (either directly or implied)—for
v DFHEIENT and DFHEIRET must be in your program. But see the note about not
v If your exit program entry point is immediately followed by an occurrence of a
v The DFHEIENT macro allocates dynamic storage to be mapped by the
v Command-level calls use registers 0, 1, 14, and 15.
v Do not issue a syncpoint in start-of-task, end-of-task, or syncpoint invocations.
– The ability to purge tasks
– The monitoring of runaway tasks
– Purge requests are deferred until control is returned from the task-related user
exit program.
– Monitoring of runaway tasks is inactive.
– Force purge requests are actioned.
services. See "Coding a program to be invoked at CICS termination" on page
298.
example, EXEC CICS XCTL or EXEC CICS SHUTDOWN—must never be used.
using DFHEIENT in abend invocations, in "Limitations" on page 298. For further
details of the DFHEIENT and DFHEIRET macros, see DFHECALL macro, in the
CICS Application Programming Reference manual.
DFHEIENT macro, inserted either implicitly by CICS or explicitly in the program,
then the expansion of the DFHEIENT macro stores incorrect values at DFHEIBP
and DFHEICAP. Your code can subsequently correct this by copying UEPEIB into
DFHEIBP, reloading the EIB base register (DFHEIBR) from UEPEIB, and setting
DFHEICAP to X'80000000'. For example,
TESTPROG DFHEIENT CODEREG=2,EIBREG=11,DATAREG=10
USING DFHUEPAR,1
MVC
DFHEIBP,UEPEIB
L
DFHEIBR,UEPEIB
MVC
DFHEICAP,=X'80000000'
Note that the entry point of a program does not have to be at the start of the
program and can be positioned after the DFHEIENT macro.
DFHEISTG DSECT. You must return to CICS by means of the DFHEIRET macro,
which frees the dynamic storage.
Get correct EIB address
Reload EIB base register
Chapter 2. Task-related user exit programs
291

Advertisement

Table of Contents
loading

Table of Contents