*DECK     CSDDNT
USETEXT  TEXTCS 
USETEXT  TXTAPSS
USETEXT  TXTSUSS
PROC CSDDNT;
# TITLE CSDDNT - DISPATCHES NETWORK TRAFFIC TO THE APPROPRIATE QUEUE. # 
  
      BEGIN    # CSDDNT # 
# 
*     CSDDNT - DISPATCHES NETWORK TRAFFIC TO THE APPROPRIATE QUEUE. 
* 
*     A. LIM     81/10/05 
*     C. BRION   82/02/14.
*     C. BRION   82/03/17.
*     C. BRION   82/05/06.
* 
*     THIS IS A DUMMY PROCEDURE.  ITS EXISTENCE IS TO CUSTOMIZE WITH
*     THE DECK NAME.
* 
*     PROC CSDDNT 
* 
*     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 
* 
# 
  
  
  
  
# 
****  PROC CSDDNT - 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/10/05
*     C. BRION   82/02/14.
* 
*     THIS PROCEDURE WILL BE CALLED BY AIP MONITOR WHENEVER A 
*     SM/DATA-BLOCK COMES TO CS.  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     A SM/DATA-BLOCK IS 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 THE CS PROGRAM. 
* 
# 
  
  
  
# 
*     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 SSTAQE;                      # SS ACCEPT Q ENTRY # 
        PROC ABORT;                       # ABORT PROC #
        PROC MESSAGE;                     # ISSUE DAYFILE MSG # 
        END 
  
# 
****
# 
  
  
#     DEFS     #
  
      DEF MXPSFC$   # 86 #;  # MAX NUM PFCSFC + 1                      #
  
# 
*     QSTAT - STATUS LIST VALUES THAT DEFINE THE POSSIBLE QUEUES FOR
*             DISPATCHING INCOMING NETWORK TRAFFIC. 
# 
  
      STATUS QSTAT
        CNFTERQ,                          # CONF TERMINAL QUEUE # 
        CNFRCRQ,                   # RESET CHARACTERISTIC OF TERMINAL  #
        CNTRFQ,                           # CONN TRAFFIC QUEUE #
        NPUSUPQ,                          # NPU SUPERVISION QUEUE # 
        OPSUPQ,                           # OPERATOR SUPERVISION Q #
        SSTATQ,                           # SOLICITED STATUS Q #
        UNSTATQ,                          # UNSOLICITED STATUS Q #
                                          #  ALIAS EVENT QUEUE (EVQ) #
        IGNORE,                           # IGNORE THESE SM-S          #
        NOMATCHQ;                         # QUEUE IDENTIFIER FOR NO # 
                                          # MATCH IN PFCSFC TABLE # 
#     ITEMS    #
  
  
      ITEM I             U;                  # LOOP VARIABLE #
  
      ITEM TEMP1      U;                  # TEMPORARY STORAGE AREA1#
      ITEM TEMP2      U;                  # TEMPORARY STORAGE AREA2#
      ITEM QNUM       S:QSTAT;            # QUEUE ID FOR GOTO # 
  
# 
*     QSWT - STATUS SWITCH FOR CONTROLLING THE TYPE OF QUEUE THAT A 
*            NETWORK MESSAGE SHOULD BE ROUTED TO. 
# 
  
      SWITCH QSWT:QSTAT                   # USING QSTAT STATUS LIST # 
        TOCTQ:CNFTERQ,                    # CONF TERMINAL REQUEST # 
        TOCNQ:CNTRFQ,                     # CONNECTION TRAFFIC #
        TONPUQ:NPUSUPQ,                   # NPU SUPERVISION # 
        TOOSQ:OPSUPQ,                     # OPERATOR SUPERVISION #
        TOSSQ:SSTATQ,                     # SOLICITED  STATUS # 
        TOEVQ:UNSTATQ,                    # UNSOLICITED STATUS #
        ENDOK:IGNORE,                      # IGNORE THESE SM-S #
        TOABORT:NOMATCHQ;                # NO MATCH, TO ABORT LOGIC # 
  
  
# 
*     NOMSG - DAYFILE MESSAGE FOR ABORT WHEN NO ROUTING OCCURS. 
# 
  
      $BEGIN
      ARRAY NOMSG[00:00] S(3);
        BEGIN 
        ITEM NO$TXT     C(00,00,22) = ["CSDDNT - SM NOT ROUTED"]; 
        ITEM NO$ZERO    U(02,12,48) = [0];
        END 
      $END
  
# 
*     PSFCTBL - PFC/SFC TABLE.
* 
*     THE FOLLOWING TABLE CONTAINS THE PFC/SFC OF ALL INCOMING NETWORK
*     TRAFFIC AND THE CORRESPONDING ASSIGNED QUEUE IDENTIFIER FOR THE 
*     INITIAL DISPATCHING FROM THE NETWORK DISPATCHER PROC, CSDDNT. 
*     THE ORDER OF THE CODES IN THIS TABLE MUST MATCH ONE-FOR-ONE TO
*     THE ORDER OF THE "SMID" STATUS LIST DEFINED IN TEXTCS. IF ANY 
*     ADDITIONS ARE MADE TO THE TABLE THE FOLLOWING PROCEDURE SHOULD
*     BE FOLLOWED:  
*                ADD THE NEW PFCSFC TABLE ENTRY AT THE END OF THE 
*                  PSF$CODE ITEM LIST.
*                ADD THE NEW PSF$QID VALUE AT THE END OF THE LIST 
*                  BUT BEFORE THE NOMATCHQ ENTRY. 
*                ADJUST THE MAXPSFC$ DEF TO THE NEW NUMBER OF PFCSFC
*                  ENTRIES PLUS ONE.
*                ADD THE CORRESPONDING SMID STATUS LIST ENTRY IN THE
*                  SAME RELETIVE POSITION FOR THE PFCSFC. 
*                IF A NEW QUEUE ENTRY IS NEEDED, ADD THE NEW QUEUE
*                  VALUE TO THE QSTAT STATUS LIST AND THE NEW ENTRY 
*                  TO THE QUEUE SWITCH QSWT.
# 
  
      ARRAY PSFCTBL [00:MXPSFC$] S(1);
        BEGIN 
        ITEM PSF$CODE   U(00,00,16)=
  
#                         PFC/SFC      LIST           # 
#                                      LOCATION       # 
#                         *******      ********* #
  
                         [CNFTE,       # 0 #
                          CNFRCTM,      # 0.1#
                          SUPCB,       # 1 #
                          SUPIN,       # 2 #
  
#                         UNSOLICITED PFCSFCS # 
#                         ******************* # 
  
  
                          ALMOP,       # 3 #
                          LOGER,       # 4 #
                          CDILI,       # 5 #
                          CDILL,       # 6 #
                          CDITE,       # 7 #
                          CDITR,       # 8 #
                          MSGOP,       # 9 #
                          STILI,       # 10 # 
                          STINP,       # 11 # 
                          STITR,       # 12 # 
                          STIAP,       # 12.1 # 
                          STITE,       # 12.2 # 
                          STUTE,       # 13 # 
                          STULI,       # 14 # 
                          STULL,       # 15 # 
                          STUTR,       # 16 # 
                          STUNP,       # 17 # 
                          STUCP,       # 18 # 
                          STUVC,       # 19 # 
                          OLDDT,       # 20 # 
                          SUPGO,       # 21 # 
  
#                         CONNECTION TRAFFIC PFCSFCS #
#                         ************************** #
  
                          SHUINS,      # 22 # 
                          CONREQ,      # 23 # 
                          HOPSTRT,     # 24 # 
                          CONCB,       # 25 # 
                          FCACK,       # 26 # 
                          INTRUSR,     # 27 # 
                          FCINA,       # 28 # 
                          FCINIT,      # 29 # 
                          FCNAK,       # 30 # 
                          TCHTCH,      # 31 # 
                          HOPALT,      # 32 # 
                          HOPBRK,      # 33 # 
                          HOPCMD,      # 34 # 
                          HOPENDD,     # 35 # 
                          HOPIG,       # 36 # 
                          HOPPAGE,     # 37 # 
                          CONENDN,     # 38 # 
                          BIMARK,      # 38.1 # 
  
  
#                         OPERATOR SUPERVISION PFCSFCS #
#                         **************************** #
  
                          HOPDU,       # 39 # 
                          HOPTRCE,     # 40 # 
                          HOPNOTR,     # 41 # 
                          HOPREL,      # 42 # 
                          HOPRS,       # 43 # 
                          HOPDB,       # 43.1 # 
                          HOPDE,       # 43.2 # 
                          TRSNPN,      # 44 # 
                          TRSTRN,      # 45 # 
                          LISLIN,      # 46 # 
                          LISNPN,      # 47 # 
                          LLSLLN,      # 48 # 
                          LLSNPN,      # 49 # 
                          CPSCPN,      # 50 # 
                          CPSNPN,      # 51 # 
                          NPSNPN,      # 52 # 
                          TESLIN,      # 53 # 
                          TESLLN,      # 54 # 
                          TESNPN,      # 55 # 
                          TESTEN,      # 56 # 
                          VCSLIN,      # 57 # 
                          VCSNPN,      # 58 # 
                          VCSVCN,      # 59 # 
                          MSGLIN,      # 60 # 
                          MSGLLN,      # 61 # 
                          MSGNPN,      # 62 # 
                          MSGTEN,      # 63 # 
                          MSGLIA,      # 64 # 
                          MSGLLA,      # 65 # 
                          MSGTEA,      # 66 # 
                          OLDINN,      # 67 # 
                          OLDINA,      # 68 # 
  
#                         SOLICITED STATUS PFCSFCS #
#                         ************************ #
  
                          STUTEN,      # 69 # 
                          STULIN,      # 70 # 
                          STULLN,      # 71 # 
                          STUTRN,      # 72 # 
                          STUNPN,      # 73 # 
                          STUCPN,      # 74 # 
                          STUVCN,      # 74.1 # 
  
#                         IGNORE THESE PFCSFCS #
#                         ******************** #
  
                          CTRTCD,      # 75 # 
                          CTRCCD,      # 75.1 # 
                          CTRCHRN,     # 75.2 # 
                          CTRCHRA,     # 75.3 # 
                          CTRCTDN,     # 75.4 # 
                          CTRCTDA,     # 75.5 # 
                          CTRRTCA,     # 75.6 # 
                          CTRRCCA,     # 75.7 # 
                          ];
  
  
        ITEM PSF$QID    S:QSTAT  (00,30,30)=  # QUEUE IDENTIFIER #
# 
*                ** NOTE THE FOLLOWING QUEUE DEFINITIONS FROM THE 
*                ** ABOVE DEFINITION OF QSTAT.
# 
  
                         [S"CNFTERQ",       # 0 # 
                          S"CNFTERQ",   # 0.1 # 
                          S"NPUSUPQ",       # 1 # 
                          S"NPUSUPQ",       # 2 # 
  
#                         UNSOLICITED PFCSFCS # 
#                         ******************* # 
  
  
                          S"UNSTATQ",       # 3 # 
                          S"UNSTATQ",       # 4 # 
                          S"UNSTATQ",       # 5 # 
                          S"UNSTATQ",       # 6 # 
                          S"UNSTATQ",       # 7 # 
                          S"UNSTATQ",       # 8 # 
                          S"UNSTATQ",       # 9 # 
                          S"UNSTATQ",       # 10 #
                          S"UNSTATQ",       # 11 #
                          S"UNSTATQ",       # 12 #
                          S"UNSTATQ",       # 12.1 #
                          S"UNSTATQ",       # 12.2 #
                          S"UNSTATQ",       # 13 #
                          S"UNSTATQ",       # 14 #
                          S"UNSTATQ",       # 15 #
                          S"UNSTATQ",       # 16 #
                          S"UNSTATQ",       # 17 #
                          S"UNSTATQ",       # 18 #
                          S"UNSTATQ",       # 19 #
                          S"UNSTATQ",       # 20 #
                          S"UNSTATQ",       # 21 #
  
#                         CONNECTION TRAFFIC PFCSFCS #
#                         ************************** #
  
                          S"CNTRFQ",      # 22 #
                          S"CNTRFQ",      # 23 #
                          S"CNTRFQ",      # 24 #
                          S"CNTRFQ",       # 25 # 
                          S"CNTRFQ",       # 26 # 
                          S"CNTRFQ",       # 27 # 
                          S"CNTRFQ",       # 28 # 
                          S"CNTRFQ",       # 29 # 
                          S"CNTRFQ",       # 30 # 
                          S"CNTRFQ",       # 31 # 
                          S"CNTRFQ",       # 32 # 
                          S"CNTRFQ",       # 33 # 
                          S"CNTRFQ",       # 34 # 
                          S"CNTRFQ",       # 35 # 
                          S"CNTRFQ",       # 36 # 
                          S"CNTRFQ",       # 37 # 
                          S"CNTRFQ",       # 38 # 
                          S"CNTRFQ",       # 38.1 # 
  
  
#                         OPERATOR SUPERVISION PFCSFCS #
#                         **************************** #
  
                          S"OPSUPQ",      # 39 #
                          S"OPSUPQ",      # 40 #
                          S"OPSUPQ",      # 41 #
                          S"OPSUPQ",      # 42 #
                          S"OPSUPQ",      # 43 #
                          S"OPSUPQ",      # 43.1 #
                          S"OPSUPQ",      # 43.2 #
                          S"SSTATQ",      # 44 #
                          S"SSTATQ",      # 45 #
                          S"SSTATQ",      # 46 #
                          S"SSTATQ",      # 47 #
                          S"SSTATQ",      # 48 #
                          S"SSTATQ",      # 49 #
                          S"SSTATQ",      # 50 #
                          S"SSTATQ",      # 51 #
                          S"SSTATQ",      # 52 #
                          S"SSTATQ",      # 53 #
                          S"SSTATQ",      # 54 #
                          S"SSTATQ",      # 55 #
                          S"SSTATQ",      # 56 #
                          S"SSTATQ",      # 57 #
                          S"SSTATQ",      # 58 #
                          S"SSTATQ",      # 59 #
                          S"OPSUPQ",      # 60 #
                          S"OPSUPQ",      # 61 #
                          S"OPSUPQ",      # 62 #
                          S"OPSUPQ",      # 63 #
                          S"OPSUPQ",      # 64 #
                          S"OPSUPQ",      # 65 #
                          S"OPSUPQ",      # 66 #
                          S"OPSUPQ",      # 67 #
                          S"OPSUPQ",      # 68 #
  
#                         SOLICITED STATUS PFCSFCS #
#                         ************************ #
  
                          S"SSTATQ",      # 69 #
                          S"SSTATQ",      # 70 #
                          S"SSTATQ",      # 71 #
                          S"SSTATQ",      # 72 #
                          S"SSTATQ",      # 73 #
                          S"SSTATQ",      # 74 #
                          S"SSTATQ",      # 74.1 #
  
#                         IGNORE THESE PFCSFCS #
#                         ******************** #
  
                          S"IGNORE",       # 75 # 
                          S"IGNORE",       # 75.1 # 
                          S"IGNORE",       # 75.2 # 
                          S"IGNORE",       # 75.3 # 
                          S"IGNORE",       # 75.4 # 
                          S"IGNORE",       # 75.5 # 
                          S"IGNORE",       # 75.6 # 
                          S"IGNORE",       # 75.7 # 
  
#                         ************************** #
                          S"NOMATCHQ"      # 76 # 
                          ];
  
        END 
CONTROL EJECT;
# 
*     DETERMINE TYPE OF NETWORK TRAFFIC.  IF DATA-BLOCK, ROUTE IT TO
*     CONNECTION TRAFFIC QUEUE, ELSE SCAN THRU PFC/SFC TABLE FOR A
*     MATCHING SM.  WHEN FOUND, USE THE POSITION OF THE SM IN THE TABLE 
*     DETERMINE THE QUEUE THE SM SHOULD ROUTE TO. 
# 
  
      TEMP1 = P<ABH>;                     #SAVE ABH POINTER#
      P<ABH> = LOC(ABHARY);               #POINT TO ABH AREA# 
  
      IF ABHABT[0] LQ APMSG               #IF DATA BLOCK #
      THEN
        BEGIN 
        WC$SMID[0] = SMID"DATAIN";
        SSTAQE(P<CNQ>,WCARY,ABHARY,TXTARA); # TO CONN TRAFFIC Q # 
        GOTO ENDFIN;
        END 
      ELSE
        BEGIN 
        TEMP2 = P<APSM>;                  # SAVE INITIAL PTR #
        P<APSM> = LOC(TXTARA);            # PT TO SM BODY # 
        PSF$CODE[MXPSFC$] = PFCSFC[0];    # SAVE CURRENT SM # 
  
  
# 
*     SEARCH PSFCTBL FOR MATCH ON THE INCOMING PFCSFC. ON MATCH, ROUTE
*     TO THE APPROPRIATE QUEUE FOR PROCESSING. THE METHOD FOR ROUTING 
*     IS BASED ON THE VALUE OF THE DEFINITIONS FOR THE NUMBER OF SMS
*     IN EACH APPROPRIATE GROUP OF SMS. 
*     NOTE-CAUTION-NOTE-CAUTION 
*     THE MATCHING AND ROUTING CODE THAT FOLLOWS IS STRONGLY DEPENDENT
*     ON THE PSFCTBL FORMAT AND RELATION TO THE DEFINES FOR THE NUMBER
*     OF SMS IN EACH GROUP. IF IT IS CHANGED, BEWARE. 
* 
*     THE PFCSFC OF THE INCOMING MESSAGE IS STORED INTO THE LAST ENTRY
*     OF THE PFCSFC TABLE TO INSURE THAT A MATCH ALWAYS OCCURS. 
* 
* 
# 
  
        FOR I = 0 STEP 1 WHILE PFCSFC[0] NQ PSF$CODE[I] 
        DO
          BEGIN 
          END                             # EXIT LOOP MATCH ALWAYS #
  
        WC$SMID[0] = I;                   # SET INTERNAL ID # 
        QNUM = PSF$QID[I];                # SET QUEUE NUMBER FOR ROUTE #
        GOTO QSWT[QNUM];
  
TOCTQ:                                    #CONF TERMINAL DISPATCH # 
        SSTAQE(P<CTQ>,WCARY,ABHARY,TXTARA); 
        GOTO ENDOK; 
  
TOCNQ:                                    # CONN TRAFFIC DISPATCH # 
        SSTAQE(P<CNQ>,WCARY,ABHARY,TXTARA); 
        GOTO ENDOK; 
  
TONPUQ:                                   # NPU SUPER SM DISPATCH # 
        SSTAQE(P<NPUQ>,WCARY,ABHARY,TXTARA);
        GOTO ENDOK; 
  
TOOSQ:                                    # OPERATOR SUPER DISPATCH # 
        SSTAQE(P<OSQ>,WCARY,ABHARY,TXTARA); 
        GOTO ENDOK; 
  
TOSSQ:                                    # SOLICITED STATUS DISPATCH # 
        SSTAQE(P<SSQ>,WCARY,ABHARY,TXTARA); 
        GOTO ENDOK; 
  
TOEVQ:                                    # UNSOL STATUS DISPATCH # 
                                          # TO EVENT QUEUE #
        SSTAQE(P<EVQ>,WCARY,ABHARY,TXTARA); 
        GOTO ENDOK; 
  
TOABORT:                                  # BAD INP MESSAGE, NO MATCH # 
        $BEGIN
        MESSAGE(NOMSG[0],0);              # DAYFILE MSG # 
        ABORT;
        $END
        SSTAQE(P<EVQ>,WCARY,ABHARY,TXTARA);      # TO EVQ IF NON DEBUG #
        GOTO ENDOK; 
  
ENDOK:  
        P<APSM> = TEMP2;                  # RESTORE POINTER TO SM # 
        END  # ELSE IF ABHABT # 
  
ENDFIN: 
      P<ABH> = TEMP1; 
      RETURN; 
  
      END  #CSNVDSP # 
      END # CSDDNT #
  
 TERM 
