How you can force storage chain checking

You can force storage chain checking either by using the CSFE DEBUG transaction, or by using the CHKSTSK or CHKSTRM system initialization parameter.

Tracing must also be active, or CICS® will do no extra checking. The CSFE transaction has the advantage that you need not bring CICS down before you can use it.

Table 1 shows the CSFE DEBUG options and their effects. Table 2 shows the startup overrides that have the same effects.

Table 1. Effects of the CSFE DEBUG transaction
CSFE syntax Effect
CSFE DEBUG, CHKSTSK=CURRENT This checks storage check zones for all storage areas on the transaction storage chain for the current task only.
If a task is overlaying one of the storage check zones of its own user storage, use
CSFE DEBUG,CHKSTSK=CURRENT
CSFE DEBUG, CHKSTRM=CURRENT This checks SAAs for all TIOAs linked off the current TCTTE. Use this if the SAA of a TIOA has been overlaid.
CSFE DEBUG, CHKSTSK=NONE This turns off storage zone checking for transaction storage areas.
CSFE DEBUG, CHKSTRM=NONE This turns off SAA checking for TIOAs.
Table 2. Effects of the CHKSTSK and CHKSTRM overrides
Override Effect
CHKSTSK=CURRENT As CSFE DEBUG,CHKSTSK=CURRENT
CHKSTRM=CURRENT As CSFE DEBUG,CHKSTRM=CURRENT
CHKSTSK=NONE As CSFE DEBUG,CHKSTSK=NONE. This override is the default.
CHKSTRM=NONE As CSFE DEBUG,CHKSTRM=NONE. This override is the default.

Your strategy should be to have the minimum tracing that will capture the storage violation, to reduce the processing overhead and to give you less trace data to process. Even so, you are likely to get a large volume of trace data, so direct the tracing to the auxiliary trace data sets. For general guidance about using tracing in CICS problem determination, see Using CICS trace.

You need to have only level-1 tracing selected, because no user code is executed between level-2 trace points. However, you do not know which calls to CICS components come before and after the offending code, so you need to trace all CICS components in AP domain. (These are the ones for which the trace point IDs have a domain index of “AP”.) Set level-1 tracing to be special for all such components, so that you get every AP level-1 trace point traced using special task tracing.

If the trailing storage check zone of a user-storage element has been overlaid, select special tracing for the corresponding transaction only. This is because it is very likely to be the one that has caused the overlay.

If the duplicate SAA of a TIOA has been overlaid, you need to select special tracing for all tasks associated with the corresponding terminal, because you are not sure which has overlaid the SAA. It is sufficient to select special tracing for the terminal and standard tracing for every transaction that runs there, because you get special task tracing with that combination. (See Table 1.)

Your choice of terminal tracing depends on where the transaction is likely to be initiated from. If it is only ever started from one terminal, select special tracing for that terminal alone. Otherwise, you need to select special tracing for every such terminal.

When you have set up the tracing options and started auxiliary tracing, you need to wait until the storage violation occurs.