The sample overseer program consists of four modules link-edited together. The main module is DFH$AXRO; the other three modules are subroutines, described below:
The associated DSECTs are provided in member DFH$XRDS of CICSTS31.CICS.SDFHSAMP. There are several ways in which you can change the supplied code to make the overseer program more suitable for your installation.
Here are some customization suggestions:
All of the CEBT functions are available for use in the overseer program, though it is unlikely that you will find it helpful to automate all of them, and there would, in some cases, be difficulties in handling the responses from the INQUIRE commands. However, it might be helpful for you to be able to automate the takeover process in some circumstances. Here are two examples of situations in which you could use the CEBT command to influence or to initiate takeover from the overseer program:
MODIFY jobname,CEBT PERFORM TAKEOVER
In this case,
you should ensure that the actions taken by the global user exit program at
exit point XXRSTAT do not conflict with or duplicate those taken by the overseer
program. For example, it would be possible for the global user exit program
to request a CICS abend, and thereby initiate a takeover, and for the overseer program
to issue the PERFORM TAKEOVER command while acting on the same information.MODIFY jobname,CEBT SET TAKEOVER AUTO
In both of these examples, you would include takeover commands in the command list tables (CLTs) of these regions to ensure that their related regions are also switched when appropriate.
There is one optional section of code in the overseer program, which is described below.
The sample overseer program includes some code that you can use to detect possible loops or waits in the active CICS region.
The sample program monitors the CICS task control block (TCB) time stamp. If this remains the same for a period defined by the variable LOOPTM, a message is sent to the console warning of a possible loop or wait. The value of LOOPTM is the number of seconds (wait time) before a loop is suspected, and may need to be changed to suit your requirements and to avoid the detection of "false" loops. It should be set to a value greater than the largest runaway task time interval (as specified on the ICVR system initialization parameter) to avoid detection of user transaction loops.
To include this LOOP WARNING code, set the variable &LOOPWARN to ‘1’ and reassemble the sample.
The non-specific job control statements required to assemble and link-edit the overseer program are the same as those required for user-replaceable programs, and are described in Assembling and link-editing user-replaceable programs.
The specific link-edit statements that you require are:
ORDER DFH$AXRO this CSECT is in USERTEXT(DFH$AXRO)
ORDER DFH$AGCB this CSECT is in DLOADLIB(DFH$AGCB)
ORDER DFH$ARES this CSECT is in DLOADLIB(DFH$ARES)
ORDER DFH$ADSP this CSECT is in DLOADLIB(DFH$ADSP)
INCLUDE USERTEXT(DFH$AXRO)
INCLUDE DLOADLIB(DFH$ADSP)
INCLUDE DLOADLIB(DFH$AGCB)
INCLUDE DLOADLIB(DFH$ARES)
ENTRY DFHXRONA
NAME DFH$AXRO(R)
If you change the overseer code in any way, note that the libraries SYS1.SDFHMAC and SYS1.AMODGEN are required for the assembly, and that the link-edit job step requires the entry name DFHXRONA. If you change any of the DSECTs used by the sample overseer program, you should reassemble the four modules.