*DECK     NVFDDNT 
USETEXT  TEXTNVF
USETEXT  TXTAPSS
USETEXT  TXTSUSS
PROC NVFDDNT; 
# TITLE NVFDDNT - DISPATCHES NETWORK TRAFFIC TO THE APPROPRIATE QUEUE. #
  
      BEGIN    # NVFDDNT #
# 
**    NVFDDNT - DISPATCHES NETWORK TRAFFIC TO THE APPROPRIATE QUEUE.
* 
*     A. LIM.                81/08/25.
*     C. BRION               83/04/13.
* 
*     THIS IS A DUMMY PROCEDURE.  ITS EXISTENCE IS TO CUSTOMIZE WITH
*     THE DECK NAME.
* 
*     PROC NVFDDNT
* 
*     ENTRY    NONE 
* 
*     EXIT     NONE 
* 
*     NOTE     THIS PROC WOULD NEVER BE CALLED.   INSTEAD AN ALTERNATE
*              ENTRY POINT, CSNVDSP WILL BE CALLED.  CSNVDSP IS USED TO 
*              CUSTOMIZE WITH THE CS DISPATCH PROC. 
* 
*     METHOD   NONE 
* 
# 
  
  
  
  
# 
****  ALTERNATE ENTRY POINT 
# 
  
      XDEF PROC CSNVDSP;
  
# 
****
# 
CONTROL EJECT;
PROC CSNVDSP(WCARY,ABHARY,TXTARA);
# TITLE CSNVDSP - DISPATCHES SM/DATA-BLOCK TO THE APPROPRIATE QUEUE. #
  
      BEGIN    # CSNVDSP #
# 
**    CSNVDSP - DISPATCHES SM/DATA-BLOCK TO THE APPROPRIATE QUEUE.
* 
*     A. LIM.                81/08/25.
*     D. G. DEPEW.           82/05/14.
*     C. J. BRION            82/05/28.
* 
*     THIS PROCEDURE WILL BE CALLED BY AIP MONITOR WHENEVER A 
*     SM/DATA-BLOCK COMES TO NVF.  ITS CHARTER IS TO
*     DISPATCH IT TO THE APPROPRIATE QUEUE. 
* 
*     PROC CSNVDSP(WCARY,ABHARY,TXTARA) 
* 
*     ENTRY    WCARY   = A ONE WORD ARRAY FOR INCOMING WC.
*              ABHARY  = A ONE WORD ARRAY FOR INCOMING ABH. 
*              TXTARA  = A TEXT AREA FOR INCOMING SM/DATA-BLOCK.
* 
*     EXIT     SM/DATA ROUTED TO THE APPROPRIATE QUEUE. 
* 
*     NOTES    NONE 
* 
*     METHOD   IF INCOMING NETWORK TRAFFIC IS DATA-BLOCK, ROUTE IT
*              TO CONNECTION-TRAFFIC-QUEUE.  ELSE IF IT IS SM,
*              SCAN THROUGH PFC/SFC-CLASSIFY TABLE TO FIND
*              A MATCH ON THE SM, AND ROUTE IT TO THE 
*              APPROPRIATE QUEUE DETERMINED BY THE POSITION 
*              OF THE SM IN THE TABLE.
*              IF NO MATCH IS FOUND IN THE TABLE, ABORT NVF.
* 
# 
  
  
  
# 
*     FORMAL PARAMETERS 
# 
  
# 
**    WCARY - WORD COUNT ARRAY
* 
*     WCARY IS A ONE WORD ARRAY FOR INCOMING  WC
# 
  
      ARRAY WCARY[00:00] S(1);
        BEGIN 
        ITEM WC$SMID    U(00,00,12);   # INTERNAL SM ID               # 
        END 
  
# 
**    ABHARY - APPLICATION BLOCK HEADER ARRAY 
* 
*     ABHARY IS A ONE WORD ARRAY FOR INCOMING ABH.
* 
# 
  
      ARRAY ABHARY[00:00] S(1); 
        BEGIN 
        ITEM ABH$WRD    U(00,00,60);   # FULL WORD                    # 
        END 
  
# 
**    TXTARA - TEXT AREA
* 
*     TXTARA IS A TEXT AREA FOR THE INCOMING SM/DATA-BLOCK. 
* 
# 
  
      ARRAY TXTARA[00:10] S(1); 
        BEGIN 
        ITEM TXT$WORD   U(00,00,60);
        END 
  
  
# 
****  PROC CSNVDSP - XREF LIST
# 
  
      XREF
        BEGIN 
        PROC ABORT;          # ABORT MACRO                            # 
        PROC MESSAGE;        # ISSUE DAYFILE MESSAGE (MACREL)         # 
        PROC SSTAQE;         # SERVICE AND SCHEDULR ACCEPT-Q-ENTRY RTN# 
        END 
  
# 
****
# 
  
  
#     DEFS     #
  
      DEF MXAPSFC$  #  3 #;  # MAX NUMBER OF APP SM                   # 
      DEF MXCPSFC$  # 23 #;  # MAX NUMBER OF CONN TRAFFIC SM          # 
      DEF MXHPSFC$  #  7 #;  # MAX NUMBER HOP-PROG-CONTROL SM         # 
  
      DEF MXIPSFC$  #  9 #;  # MAX NUMBER IGNORED SM (NO-OPS)         # 
      DEF MXPSFC$   # 42 #;  # SUM OF ALL PRECEEDING (TOTAL ALL SMS)  # 
  
  
#     ITEMS     # 
  
  
      ITEM I          U;     # INDUCTION VARIABLE                     # 
      ITEM TEMP1      U;     # TEMPORARY STORAGE AREA1                # 
      ITEM TEMP2      U;     #               AND AREA2                # 
  
  
# 
*     DAYFILE MESSAGES FOR ABORT WHEN SM RECEIVED IS BAD
# 
  
      $BEGIN
      ARRAY BADSM[00:00] S(3);
        BEGIN 
        ITEM BADSM$TXT  C(00,00,23) = ["NVFDDNT - UNEXPECTED SM"];
        ITEM NO$ZERO    U(02,18,42) = [0];
        END 
  
      ARRAY BADBLKTYPE[00:00] S(3); 
        BEGIN 
        ITEM BADBT$TXT  C(00,00,27)=["NVFDDNT - UNEXPECTED ABHABT"];
        ITEM BADBT$ZERO U(02,42,18) = [0];
        END 
      $END
  
  
# 
*     THE FOLLOWING TABLE CONTAINS PFC/SFC OF ALL SMS COMING INTO NVF.
*     THE SMS ARE CATEGORIZED BY THE TYPE OF QUEUE IT IS DESTINED TO. 
*     WITHIN EACH CATEGORY, THE SMS ARE ALPHABETIZED.  A CHANGE IN
*     ANY ONE OF THE CATEGORY REQUIRES THE SAME CHANGE IN ITS 
*     CORRESPONDING STATUS-LIST IN THE APPROPRIATE TEXT.  AND THE 
*     PROCEDURE NEED TO BE RECOMPILED WITH NEW MAXIMUM VALUE
*     DEFINED FOR THE GROUP, AND NEW SUM FOR THE TOTAL SMS. 
*     THE LAST ENTRY IS USED TO STORE THE SM CURRENTLY BEING PROCESSED
*     IN CASE IT IS AN SM THAT IS NOT EXPECTED AND THUS WILL NOT MATCH
*     THE PFC/SFC LISTED. 
# 
  
      ARRAY PSFCTBL[00:MXPSFC$] S(1); 
        BEGIN 
        ITEM PSF$CODE   U(00,00,16) = [ #*** APP SM ***#
                                       FAIAPP,     # APP FAILED      #
                                       NETONR,     # APP NETON REQ   #
                                       NETOFFR,    # APP NETOFF      #
                                        #*** CONN TRAFFIC SM ***# 
                                       CRACC,      # APP ACCEPTED CON#
                                       CRCB,       # CONN BROKEN     #
                                       CRITE,      # TERM CONN REQ   #
                                       CRIAP,      # A-A CON REQ     #
                                       CRRAP,      # REMOTE A-A REQ  #
                                       CRRCN,      # RECON CONN NVF  #
                                       CRSWHN,     # SWCH CON FR NVFN#
                                       CRTRMN,     # TERMINATE CON N #
                                       FCACK,      # BLK DEL ACKNGD  #
                                       FCBRK,      # BREAK OCCURRED  #
                                       INTRUSR,    # BREAK OCCURRED  #
                                       FCINA,      # CONN INACTIVE   #
                                       FCINIT,     # CONN INITIALIZED#
                                       FCNAK,      # BLK NOT DELIVERD#
                                       BIMARK,     # BREAK INDICATOR #
                                       HOPBRK,     # OPERATOR BREAK  #
                                       HOPCMD,     # HOP COMMD TO APP#
                                       HOPENDD,    # K-DIS ASGND APP #
                                       HOPIG,      # HOP IGNORE ALERT#
                                       HOPPAGE,    # CHGND DIS PAGE  #
                                       HOPSTRT,    # K-DIS ASGND APP #
                                       TCHTCH,     # TERM CHARS CHGED#
                                       CRSLL,      # LLINK STATUS    #
                                        #*** HOP PROGRAM CNTRL SM ***#
                                       HOPDU,      # HOP DUMP FL REQ #
                                       HOPNOTR,    # HOP T-OFF AIP TR#
                                       HOPREL,     # HOP REL DLF REQ #
                                       HOPRS,      # RST STAT GATH RQ#
                                       HOPTRCE,    # HOP T-ON AIP TR #
                                       HOPDB,      # BEGIN DEBUG     #
                                       HOPDE,      # END DEBUG       #
                                        #*** IGNORED SM ***#
                                       CTRCHRN,    # TERM CHARS NORM #
                                       CTRCHRA,    # TERM CHARS ABN  #
                                       CTRCTDN,    # CDCNT TERMDEF/N #
                                       CTRCTDA,    # CDCNT TERMDEF/A #
                                       CTRTCD,     # TERM CHAR DEFS  #
                                       CTRCCD,     #CHANGE CDCNET DEF#
                                       CTRUCD,     # UNSOLIC CHAR DEF#
                                       CTRRTCA,    #REQ TRM CHAR/A   #
                                       CTRRCCA];   #RQST CDCNT CHAR/A#
  
        END 
CONTROL EJECT;
# 
*     DETERMINE TYPE OF NETWORK TRAFFIC.  IF DATA-BLOCK, ROUTE IT TO
*     CTQ, ELSE SCAN THRU PFC/SFC-CLASSIFY TABLE FOR A MATCH OF THE 
*     SM.  WHEN FOUND, USE THE POSITION OF THE SM IN THE TABLE TO 
*     DETERMINE THE QUEUE THE SM SHOULD ROUTE TO AND SET THE SM ID. 
# 
  
      TEMP1 = P<ABH>;                 # SAVE ABH POINTER             #
      P<ABH> = LOC(ABHARY);           # POINT TO ABH BUFFER AREA     #
      IF ABHABT[0] LQ APMSG 
      THEN
        BEGIN                          # DATA-BLOCK, ROUTE TO CTQ     # 
        SSTAQE(P<CTQ>,WCARY,ABHARY,TXTARA); 
        END 
  
  
      ELSE IF ABHABT[0] EQ APPCMD 
      THEN
        BEGIN                          # APP SM                       # 
        TEMP2 = P<APSM>;               # SAVE ORGNL APP SM POINTER    # 
        P<APSM> = LOC(TXTARA);         # THEN POINT IT TO TEXT AREA   # 
        PSF$CODE[MXPSFC$] = PFCSFC[0];      # SAVE CURRENT SM         # 
        FOR I = 0  STEP 1 
          WHILE PFCSFC[0] NQ PSF$CODE[I]
        DO                                  # DETERMINE WHICH SM      # 
          BEGIN  END
  
        IF I LS MXAPSFC$
        THEN
          BEGIN                        # APP SM, ROUTE IT TO ASQ      # 
          WC$SMID[0] = I; 
          SSTAQE(P<ASQ>,WCARY,ABHARY,TXTARA); 
          END 
  
        ELSE IF I LS (MXAPSFC$ + MXCPSFC$)
        THEN
          BEGIN                        # CN-TRF-SM, ROUTE IT TO CTQ   # 
          WC$SMID[0] = I -MXAPSFC$; 
          SSTAQE(P<CTQ>,WCARY,ABHARY,TXTARA); 
          END 
  
        ELSE IF I LS (MXAPSFC$ + MXCPSFC$ + MXHPSFC$) 
        THEN
          BEGIN                        # HOP-PRG-CTRL-SM, ROUTE TO HCQ# 
          WC$SMID[0] = I - MXAPSFC$ -MXCPSFC$;
          SSTAQE(P<HCQ>,WCARY,ABHARY,TXTARA); 
          END 
  
        ELSE IF I LS MXPSFC$
        THEN                           # SM TO IGNORE                 # 
          BEGIN  END
  
        ELSE                           # UNEXPECTED SM                # 
          BEGIN 
          $BEGIN
          IF ABHADR[0] EQ 0 
          THEN
            BEGIN 
            MESSAGE (BADSM, 0); 
            ABORT;                     # ABORT NVF                    # 
            END 
          $END
          SSTAQE(P<HCQ>,WCARY,ABHARY,TXTARA);    # TO HCQ IF NON DBG  # 
          END 
  
        P<APSM> = TEMP2;               # RESTORE POINTER              # 
        END                            # APP SM                       # 
  
  
      ELSE                   # UNEXPECTED TYPE OF NETWORK TRAFFIC     # 
        BEGIN 
        $BEGIN
        MESSAGE (BADBLKTYPE, 0);
        ABORT;                         # ABORT NVF                    # 
        $END
        END 
  
      P<ABH> = TEMP1; 
      RETURN; 
      END  # CSNVDSP #
      END  # NVFDDNT #
 TERM 
