*DECK DLNBH 
USETEXT DLFPDEF 
USETEXT ABH 
USETEXT DIRTBLH 
USETEXT ERRMSG
USETEXT OUTCDA
USETEXT NHEADER 
USETEXT ZHRCD 
PROC DLNBH;                  # SELECT NETWORK MESSAGES FOR OUTPUT      #
  
*IF DEF,IMS 
 #
*1DC  DLNBH 
* 
*     1. PROC NAME           AUTHOR              DATE 
*        DLNBH               P.C.TAM             79/01/10 
* 
*     2. FUNCTIONAL DESCRIPTION 
*        SELECT NETWORK MESSAGES FOR OUTPUT 
* 
*     3. METHOD USED
*        LOOP THROUGH NETWORK BLOCK PROCESSING TABLE. PROCESS 
*        EACH ENTRY AS FOLLOWS UNTIL EITHER THE CHOSEN FLAG 
*        IS CLEARED OR ALL ENTRIES ARE PROCESSED. 
*        C         CHECK IF CANCEL FLAG IS SET IN DBC.
*                  IF NOT SET, CLEAR CHOSEN FLAG. 
*        F         CHECK IF NO FORMAT EFFECTOR FLAG IS SET IN 
*                  DBC. IF NOT SET, CLEAR CHOSEN FLAG.
*        P         CHECK IF PARITY/AUTO INPUT FLAG IS SET IN
*                  DBC. IF NOT SET, CLEAR CHOSEN FLAG.
*        X         CHECK IF TRANSPARENT DATA FLAG IS SET IN DBC.
*                  IF NOT SET, CLEAR CHOSEN FLAG. 
*        DN        COMPARE NODE NUMBER IN NETWORK BLOCK PROCESSING
*                  TABLE WITH DN IN MESSAGE. IF NO MATCH, 
*                  CLEAR CHOSEN FLAG. 
*        SN        COMPARE SOURCE NODE IN NETWORK BLOCK PROCESSING
*                  TABLE WITH SN IN MESSAGE. IF NO MATCH, 
*                  CLEAR CHOSEN FLAG. 
*        CN        COMPARE CONNECTION NUMBER IN NETWORK BLOCK 
*                  PROCESSING TABLE WITH CN IN MESSAGE. IF NO MATCH,
*                  CLEAR CHOSEN FLAG. 
* 
*     4. ENTRY PARAMETER. 
*        DIRTBLH   COMMON BLOCK CONTAINING SELECTION CRITERIA 
*        ZHRCD     COMMON BLOCK HOLDING THE NETWORK BLOCK HEADER
* 
*     5. EXIT PARAMETER.
*        CHOSEN    IN ZHRCD, SET IF MESSAGE IS SELECTED.
* 
*     6. COMDECKS CALLED AND SYMPL TEXTS USED.
*        ABH       DIRTBLH   DLFPDEF   ERRMSG 
*        OUTCDA    NHEADER   ZHRCD
* 
*     7. ROUTINES CALLED
*        DLABEND             ABORT PROGRAM
*        DLDFM               ISSUE DAYFILE MESSAGE
* 
*     8. DAYFILE MESSAGES 
*        BAD DIRECTIVE TABLE ENTRY. 
* 
 #
*ENDIF
# 
      EXTERNAL VARIABLES
# 
      XREF
        BEGIN 
        PROC DLABEND;        # ABORT PROGRAM                           #
        PROC DLDFM;          # ISSUE DAYFILE MESSAGE                   #
        END 
  
# 
      LOCAL VARIABLES 
# 
      SWITCH CRIT 
              ERR, ERR, ERR, ERR, ERR, ERR, ERR,ERR,L$C, L$F, L$P, ERR, 
              ERR, L$X, L$DN, L$SN, L$CN, ERR, ERR, ERR, ERR, ERR, ERR; 
  
      ITEM
      I,                     # INDEX VARIABLE                          #
      K,                     # TEMPORARY VARIABLE                      #
      TEMPABH;               # TEMPORARY ABH                           #
  
# ******************************************************************** #
      BEGIN 
      P<NHEADER> = LOC(ZHWD1[0]) + BLKHSIZE;
      P<ABH> = LOC(TEMPABH);
      ABHDBC[0] = NHDBC[0]; 
      FOR I = 1 STEP 1 WHILE I LQ DIRNUMH AND CHOSEN
      DO
        BEGIN 
        GOTO CRIT[DIRHID[I]]; 
L$C:                         # CANCEL FLAG PROCESSING                  #
        IF ABHCAN[0] NQ 1 
        THEN
          CHOSEN = FALSE; 
        GOTO NEXT;
L$F:                         # NO FORMAT EFFECTOR PROCESSING           #
        IF ABHNFE[0] NQ 1 
        THEN
          CHOSEN = FALSE; 
        GOTO NEXT;
L$P:                         # PARITY / AUTO INPUT FLAG PROCESSING     #
        IF ABHBIT[0] NQ 1 
        THEN
          CHOSEN = FALSE; 
        GOTO NEXT;
L$X:                         # TRANSPARENT BIT PROCESSING              #
        IF ABHXPT[0] NQ 1 
        THEN
          CHOSEN = FALSE; 
        GOTO NEXT;
L$DN:                        # DESTINATION NODE PROCESSING             #
        IF DIRHVAL[I] NQ DN[0]
        THEN
          CHOSEN = FALSE; 
        GOTO NEXT;
L$SN:                        # SOURCE NODE PROCESSING                  #
        IF DIRHVAL[I] NQ SN[0]
        THEN
          CHOSEN = FALSE; 
        GOTO NEXT;
L$CN:                        # CONNECTION NUMBER PROCESSING            #
        IF DIRHVAL[I] NQ CN[0]
        THEN
          CHOSEN = FALSE; 
        GOTO NEXT;
ERR:  
      DLDFM(BAD$DNTRY);      # BAD DIRECTIVE TABLE ENTRY               #
      DLABEND;               # ABORT PROGRAM                           #
NEXT: 
        END 
      END 
TERM
