Design overview

The node abnormal condition program (DFHZNAC) can be called for any of several reasons:

To process conditions that are not associated with a known terminal, the dummy TCTTE is used. It is invoked by placing a TCTTE on the system error queue with a 1-byte code relating to the condition. Placing it on the queue makes the TCTTE ‘temporary OUTSERV’ (TCTTESOS); that is, the decision is pending the outcome of DFHZNAC.

The activate scan routine (DFHZACT) is responsible for attaching the CSNE transaction to run DFHZNAC; this is done during CICS® initialization. The CSNE transaction remains in the system until CICS or VTAM is quiesced. If DFHZNAC itself abends, or VTAM is closed and then restarted, DFHZACT attaches a new CSNE transaction when there is more work for DFHZNAC to do.

There is only ever one CSNE transaction in the system at any one time. (This should not be confused with the CSNE transaction that is attached by the remote delete processing of autoinstall.)

Once DFHZNAC has been called, it runs down the system error queue, processing each error for each TCTTE on the queue. When there is no more work to be done, DFHZNAC suspends itself, to be resumed by DFHZACT when further processing is required.

Note that the system error queue need not be empty before DFHZNAC terminates; errors can be left on the queue to be processed later. For example, in an XRF environment, some error codes cannot be handled until the alternate CICS system has taken over; that is, it has passed the ‘initialization complete’ stage. If DFHZNAC is passed a TCTTE indicating such an error, it leaves that entry on the queue.

Node abnormal condition program (NACP) processing involves mapping the error code (placed into the TCTTE by a DFHZERRM macro call) to a set of actions, performing any specific processing for that error code, accumulating the actions for all the error codes in that TCTTE, and then performing the actions.

Figure 69 shows the NACP error code processing. The numbers in Figure 69 refer to the following notes, which use the table entry for DFHZC3424 as the example:

DFHZNCM MSGNO=3424,
        E1=S88,
        E2=NULL,
        E3=NULL,
        E4=NULL,
        ACT=(ABSEND,ABRECV,ABTASK,CLSDST,SIMLOG),
        CODE=NSP02,
        TYPE=ENTRY

Figure 69. NACP error code processing
 The steps in NACP error code processing for each TCTTE are as follows. Map error code to a DFHZNCA table entry (note 1). Call any pre-sense exits designated by the entry (note 2). If sense code associated, call DFHZNCS routine. If any RPL feedback code, call DFHZNCV routine. Call any pre-NEP exits (note 3). Call DFHZNEP (note 4). Output the error-code message (note 5). Process any 'unavailable printer' error (note 6). Accumulate actions so far (note 7). Output any sense message (note 8). Output any VTAM_3270 message (note 9). Call any post-NEP exit (note 10). Is there another error code for this TCTTE? (note 11) If yes, return to first step in sequence. If no, continue. Retrieve accumulated actions (note 12). Call the action routines (note 13). Output the 'actions taken' message (note 14). Check again for added error codes and enter again at the top (note 15). If there are any, return to first step in sequence. If none, continue. If any work resulting from the actions, add TCTTE to the DFHZACT work queue (note 16). Finally, get the next TCTTE.

Notes:
  1. The error codes in TCTEVRC* and default actions are defined in the VTAM-associated errors topic of the CICS Trace Entries.

    In the example, TCTVRC5 contains X'5C', which equates to TCZNSP02 (ref CODE=NSP02).

  2. Errors that involve SNA sense have it saved in TCTEVNSS. It is processed by code in copy book DFHZNCS.
  3. Call any pre-NEP exits specified by the table entry; for example, E1=S88 references routine NAPES88.
  4. Call the node error program (NEP), passing a parameter list via a COMMAREA. This call may or may not change the default actions. The operation of the NEP is described in the CICS Customization Guide and the Node error program.
  5. Output error-code message associated with the table entry (DFHZC3424 from MSGNO=3424) to the CSNE log.
  6. Check for ‘unavailable printer error’--this caters for a screen copy request that is unable to find an eligible printer if the first choice is unavailable.
  7. Because there can be multiple error codes, the actions are accumulated now and performed together later.
  8. Output any sense message resulting from the DFHZNCS call, to the CSNE log.
  9. Output any VTAM_3270 message resulting from the DFHZNCS call (if it was non-SNA) to the CSNE log.
  10. Call the post-NEP exit, if any (E4=NULL, no routine).
  11. Loop for each error code in TCTEVRC*.
  12. When all the error codes for this TCTTE that can be processed at this time have been processed, retrieve the actions that have been accumulated, such as ACT=(ABSEND, ABRECV, ABTASK, CLSDST, SIMLOG).
  13. Call the action routine to process each of the actions.
  14. Output the ‘actions taken’ message DFHZC3437 to the CSNE log.
  15. Check again for any error codes added asynchronously while the CSNE transaction was running.
  16. Queue any work resulting from the actions to the activate scan routine.
[[ Contents Previous Page | Next Page Index ]]