Terminate or otherwise modify the invocation of a user exit.
DISABLE PROGRAM >>-DISABLE PROGRAM(data-value)--+-----------------------+-------> '-ENTRYNAME(data-value)-' >--+------------------+--+-----------+--+-----------+-----------> +-EXIT(data-value)-+ '-FORMATEDF-' '-PURGEABLE-' '-EXITALL----------' >--+----------+--+-----+--+------+--+-----------+-------------->< '-SHUTDOWN-' '-SPI-' '-STOP-' '-TASKSTART-'
Conditions: INVEXITREQ, NOTAUTH
The DISABLE PROGRAM command changes the status of a global or task-related user exit, reversing the effects of corresponding options in an ENABLE PROGRAM command.
You use it to:
Options on the DISABLE PROGRAM command correspond to those on the ENABLE command:
For programming information about CICS exits, see the CICS® Customization Guide; you should also see the general discussion of commands that modify exits in Exit-related commands.
For a task-related user exit, the associated load module is deleted from virtual storage if it is not in use by another exit and if the ENTRY option was not specified in the ENABLE command that defined the exit. If the exit owns a global work area, the work area is released as soon as no other exits are sharing it.
EXITALL
implies STOP, so the exit becomes unavailable for execution. For a task-related
user exit, you must avoid requesting this function until all tasks that have
used the exit have ended; the results of EXITALL before that point are unpredictable.This means that for
start-of-task, end-of-task and shutdown calls, when all task related user
exits would be called and a DISABLE EXITALL command is issued from the current
TRUE for itself then the number of TRUEs actually called is unpredictable.
If the need arises for the exit to be refreshed then the TRUE should disable
itself using the STOP option and invoke a separate task to issue the DISABLE
with the EXITALL option.
When a STOPped task-related user exit gets invoked, the invoking code gets an AEY9 abend code. There is no corresponding error for global user exits, however, because CICS invokes only those exits associated with an exit point which are also available for execution (not stopped).
EXEC CICS DISABLE PROGRAM('EP2') STOP
Example 1 makes exit EP2 non-executable. It does not dissociate it from the exit points with which it is associated, however, or delete its definition as an exit. It can be made available again by issuing an ENABLE PROGRAM('EP2') START command.
EXEC CICS DISABLE ENTRYNAME ('ZX') PROGRAM('EP3')
EXIT('XTDREQ')
Example 2 stops global user exit ZX from being invoked at exit point XTDREQ. ZX is still defined, however, and if it is associated with other exit points, it is still invoked at them.
EXEC CICS DISABLE PROGRAM('EP3') EXITALL
Example 3 dissociates EP3 from all points at which invocation was requested (exit points, in the case of a global user exit; task start, shutdown, and so on, in the case of a task-related user exit), and discards the definition of the exit. If the load module EP3 is not in use, it is deleted.