*DECK,NP$SMSG *IF,DEF,XFR USETEXT AIPDEF USETEXT NX$ACBX USETEXT HEADER USETEXT NP$NWL PROC NP$SMSG; BEGIN # *1DC NP$SMSG * * 1. PROC NAME AUTHOR DATE * NP$SMSG Y. C. YIP 02/19/1985 * * 2. FUNCTIONAL DESCRIPTION * * GENERATES A LEGAL OR ILLEGAL TRIGGER BY DOING A * A TABLE LOOKUP FOR THE TRIGGER VALUE ASSOCIATED * WITH THAT ASYNC MESSAGE. * * 3. METHOD USED * FIRST A TABLE LOOKUP USING AN ARRAY PRESET WITH PFCSFC * VALUES AND THE ASSOCIATED TRIGGER VALUES IS PERFORMED. * THE LAST ENTRY OF THE ARRAY FOR EACH RESPECTIVE TABLE * (PRU SEND, PRU RECEIVE, CHARACTER SEND AND CHARACTER * RECEIVE) IS RESERVED FOR STORING THE ASSOCIATED VALUE * OF THE ILLEGAL TRIGGER. THE INCOMING PFCSFC IS FIRST * LOADED AT THE LAST ENTRY OF THE ARRAY PAIRED WITH THE * ILLEGAL TRIGGER VALUE ENTRY. IF THE SEARCH SUCCEEDS AT * AN ENTRY PRIOR TO THE LAST ENTRY THEN WE GET A SUCCESSFUL * MATCH, ELSE IT WILL MATCH WITH ITSELF LOADED EARLIER AT THE * LAST ENTRY OF THE TABLE, HENCE RETURNING THE ILLEGAL TRIGGER * IT THEN CALLS THE FILE TRANSFER ACTION PROCESSOR, NP$STPR. * XFT/IER HAS DIFFERENT TRIGGER VALUES FOR DIFFERENT REASON * CODES. A SEPARATE BLOCK IS USED TO MAP THE REASON CODE TO * THE CORRESPONDING TRIGGERS USING A SIMILAR SCHEME AS WITH * THE PFCSFC. * * 4. ENTRY CONDITIONS * FTTINDEX IS THE INDEX OF THE FILE TRANSFER CONTROL * BLOCK, FTT. * LOC$TA POINTS TO THE ADDRESS OF THE LOCATION, THE * ASYNC MESSAGE IS STORED. * * 5. EXIT CONDITONS * FTTINDEX - UNCHANGED. * A TRIGGER VALUE CONTRIG IS PRODUCED ( LEGAL OR ILLEGAL) * AND IS USED IN CALLING NP$STPR. * * 6. COMDECKS CALLED AND SYMPL TEXTS USED. * NP$NWL, NX$ACBX * * 7. ROUTINES CALLED * NP$STPR - FILE TRANSFER TABLE ACTION PROCESSOR. * NP$MSG - DAYFILE MESSAGE PROCESSOR. * * 8. DAYFILE MESSAGES * ILLEGAL TRIGGER RECEIVED. # # **** PROC NP$SMSG - XREF LIST. # XREF # EXTERNAL REFERENCE TABLE # BEGIN PROC NP$STPR; # STATE TABLE PROCESSOR # PROC NP$MSG; # DAYFILE MESSAGE GENERATOR # END # **** # DEF PRTBLMT # 64 #; # TABLE SIZE FOR THE 4 TABLES # DEF PRSPLOWER # 1 #; # LOWER BOUND OF PRU SENDER TABLE # DEF PRSPUPPER # 16 #; # UPPER BOUND OF PRU SENDER TABLE # DEF PRRPLOWER # 17 #; # LOWER BOUND OF PRU RECEIVER TABLE # DEF PRRPUPPER # 32 #; # UPPER BOUND OF PRU RECEIVER TABLE # DEF PRSCLOWER # 33 #; # LOWER BOUND OF CHAR SENDER TABLE # DEF PRSCUPPER # 41 #; # UPPER BOUND OF CHAR SENDER TABLE # DEF PRRCLOWER # 49 #; # LOWER BOUND OF CHAR RECEIVER TABLE# DEF PRRCUPPER # 58 #; # UPPER BOUND OF CHAR RECEIVER TABLE# DEF XFTLMT # 16 #; # SIZE OF THE XFT TABLE # DEF XFTSPLOWER # 1 #; # LOWER BOUND FOR XFT PRU SENDER # # REASON CODE TABLE # DEF XFTSPUPPER # 8 #; # UPPER BOUND FOR XFT PRU SENDER # # REASON CODE TABLE # DEF XFTRPLOWER # 9 #; # LOWER BOUND FOR XFT PRU RECEIVER # # REASON CODE TABLE # DEF XFTRPUPPER # 16 #; # UPPER BOUND FOR XFT PRU RECEIVER # # REASON CODE TABLE # ITEM CRNT$ORD; # TABLE ORDINAL # ITEM CONTRIG; # TRIGGER VALUE RESULTING FROM TABLE# ITEM RCORD; # TABLE ORDINAL FOR REASON CODE # # TABLE # # SEARCH # ITEM BACKTRIG; # RETURN TRIGGER BY CALLING NP$STPR # ARRAY ILLTRIG[0:0] S(3); # WARNING FOR ILLEGAL TRIGGER # BEGIN ITEM ILLTRIGC C(00,00,24) = ["ILLEGAL TRIGGER RECEIVED"]; ITEM ILLTRIGZ U(02,24,36) = [0]; END ARRAY PFCSFCTAB[1:PRTBLMT] S(1); # PFCSFC VS TRIGGER TABLE # BEGIN # START OF PRU SENDER TABLE # ITEM PFSFV U(00,00,16) =[ FCACK, # FOR TRIGGER NSPTFAK # FCNAK, # FOR TRIGGER NSPTFNK # CONCB, # FOR TRIGGER NSPTNCB # SHUINS, # FOR TRIGGER NSPTHSD # SHISD, # FOR TRIGGER NSPTNSL # PRUONN, # FOR TRIGGER NSPTPRN # PRUONA, # FOR TRIGGER NSPTPRA # OFTEND, # FOR TRIGGER NSPTOFN # XFTIER, # FOR TRIGGER NSPTXFR # OFTOFFN, # FOR TRIGGER NSPTOFF # INTRUSR, # FOR TRIGGER NSPTINT # INTRAPP, # FOR TRIGGER NSPTINT # FTON, # FOR TRIGGER NSPTFT # FTOFF, # FOR TRIGGER NSPTFT # FCBRK, # FOR TRIGGER NSPTBRK # , # FOR TRIGGER NRSTILL # # START OF PRU RECEIVER TABLE # FCACK, # FOR TRIGGER NRPTFAK # FCNAK, # FOR TRIGGER NRPTNAK # CONCB, # FOR TRIGGER NRPTNCB # SHUINS, # FOR TRIGGER NRPTHSD # SHISD, # FOR TRIGGER NRPTNSL # ESXOKR, # FOR TRIGGER NRPTESK # PRUONN, # FOR TRIGGER NRPTPRN # PRUONA, # FOR TRIGGER NRPTPRA # IFTEND, # FOR TRIGGER NRPTIFN # XFTIER, # FOR TRIGGER NRPTXFR # IFTOFFN, # FOR TRIGGER NRPTIFF # FCRST, # FOR TRIGGER NRPTFRT # INTRUSR, # FOR TRIGGER NRPTINT # INTRAPP, # FOR TRIGGER NRPTINT # FCBRK, # FOR TRIGGER NRPTBRK # , # FOR TRIGGER NRSTILL # # START OF CHAR SENDER TABLE # FCACK, # FOR TRIGGER NSCTFAK # FCNAK, # FOR TRIGGER NSCTFNK # FCBRK, # FOR TRIGGER NSCRBRK # CONCB, # FOR TRIGGER NSCTNCB # SHUINS, # FOR TRIGGER NSCTHSD # SHISD, # FOR TRIGGER NSCTNSL # INTRUSR, # FOR TRIGGER NSCTINT # INTRAPP, # FOR TRIGGER NSCTINT # , # FOR TRIGGER NSCTILL # , , , , , , , # START OF CHAR RECEIVER TABLE # FCACK,# FOR TRIGGER NRCTFAK # FCNAK,# FOR TRIGGER NRCTNAK # FCBRK,# FOR TRIGGER NRCTBRK # FCRST,# FOR TRIGGER NRCTRST # CONCB,# FOR TRIGGER NRCTNCB # SHUINS,# FOR TRIGGER NRCTHSD # SHISD,# FOR TRIGGER NRCTNSL # INTRUSR,# FOR TRIGGER NRCTINT # INTRAPP,# FOR TRIGGER NRCTINT # ,# FOR TRIGGER NRCTILL # , , , , , ]; ITEM PFSFTRIG U(00,30,30) = # START OF PRU SENDER TABLE # [ NSPTFAK, # FCACK # NSPTFNK, # FCNAK # NSPTNCB, # CONCB # NRSTHSD, # SHUINS # NRSTNSL, # SHISD # NSPTPRN, # PRUONN # NSPTPRA, # PRUONA # NSPTOFN, # OFTEND # NSPTXFR, # XFTIER # NSPTOFF, # OFTOFFN # NSPTINT, # INTRUSR # NSPTINT, # INTRAPP # NSPTFT , # FTON # NSPTFT , # FTOFF # NSPTBRK, # FCBRK # NRSTILL, # ILLEGAL TRIGGER # # START OF PRU RECEIVER# # TABLE # NRPTFAK, # FCACK # NRPTNAK, # FCNAK # NRPTNCB, # CONCB # NRSTHSD, # SHUINS # NRSTNSL, # SHISD # NRPTESK, # ESXOKR # NRPTPRN, # PRUONN # NRPTPRA, # PRUONA # NRPTIFN, # IFTEND # NRPTXFR, # XFTIER # NRPTIFF, # IFTOFFN # NRPTFRT, # FCRST # NRPTINT, # INTRUSR # NRPTINT, # INTRAPP # NRPTBRK, # FCBRK # NRSTILL, # ILLEGAL TRIGGER # # START OF CHAR SENDER # # TABLE # NSCTACK, # FCACK # NSCTNAK, # FCNAK # NSCTBRK, # FCBRK # NSCTNCB, # CONCB # NSCTHSD, # SHUINS # NSCTNSL, # SHISD # NSCTINT, # INTRUSR # NSCTINT, # INTRAPP # NSCTILL, # ILLEGAL TRIGGER # , , , , , , , # START OF CHAR RECVER # # TABLE # NRCTACK, # FCACK # NRCTNAK, # FCNAK # NRCTBRK, # FCBRK # NRCTRST, # FCRST # NRCTNCB, # CONCB # NRCTHSD, # SHUINS # NRCTNSL, # SHISD # NRCTINT, # INTRUSR # NRCTINT, # INTRAPP # NRCTILL, # ILLEGAL TRIGGER # , , , , , ]; END ARRAY BLKPTR [ 0:3] S(1); # CONTROL BLOCK FOR INDEXES INTO # BEGIN # THE FOUR PFCSFC TABLES # ITEM BLKLOWER U(00,00,30) = [ PRSPLOWER, # LOWER BOUND OF PRU # # SENDER # PRRPLOWER, # LOWER BOUND OF PRU # # RECEIVER # PRSCLOWER, # LOWER BOUND OF CHAR# # SENDER # PRRCLOWER # LOWER BOUND OF CHAR# # RECEIVER # ]; ITEM BLKUPPER U(00,30,30) = [ PRSPUPPER, # UPPER BOUND OF PRU # # SENDER # PRRPUPPER, # UPPER BOUND OF PRU # # RECEIVER # PRSCUPPER, # UPPER BOUND OF CHAR# # SENDER # PRRCUPPER # UPER BOUND OF CHAR # # RECEIVER # ]; END ARRAY XFTRCTRIG [1:XFTLMT] S(1); # RC - TRIGGER VALUE TABLE # BEGIN # PRU SENDER XFTIER RC TABLE # ITEM XFTRC U(00,00,30) = [ RC2, # REASON CODE 2 # RC3, # REASON CODE 3 # RC4, # REAOSN CODE 4 # RC9, # REASON CODE 9 # RC6, # REASON CODE 6 # RC10, # REASON CODE 10 # RC8, # REASON CODE 8 # , # PRU RECEIVER # RC1, # REASON CODE 1 # RC10, # REASON CODE 10 # RC8, # REASON CODE 8 # RC3, # REASON CODE 3 # RC5, # REASON CODE 5 # RC7, # REASON CODE 7 # RC9, # REASON CODE 9 # ]; ITEM XFTRIGV U(00,30,30) = [ # PRU SENDER # NSPTQRE, # FOR RC=2 # NSPTXFR, # FOR RC=3 # NSPTQRE, # FOR RC=4 # NSPTRCT, # FOR RC=9 # NSPTIO7, # FOR RC=6 # NSPTQRE, # FOR RC=10 # NSPTQRE, # FOR RC = 8 # NRSTILL, # ILLEGL TRIGGER # # PRU RECEIVER # NRPTXFR, # FOR RC=1 # NRPTXFR, # FOR RC=10 # NRPTIO7, # FOR RC=8 # NRPTBR3, # FOR RC=3 # NRPTES5, # FOR RC=5 # NRPTIO7, # FOR RC=7 # NRPTTM9, # FOR RC=9 # NRSTILL # FOR ILLEGAL TRIGGER # ]; END ARRAY RCPTR[0:1] S(1); # REASON CODE INDEX CONTROL BLOCK # BEGIN ITEM RCLOWER U(00,00,30) = [ XFTSPLOWER, # LOWER BOUND FOR PRU # # SENDER # XFTRPLOWER, # UPPER BOUND FOR PRU # # RECIVER # ]; ITEM RCUPPER U(00,30,30) = [ XFTSPUPPER, # UPPER BOUND FOR PRU # # SENDER # XFTRPUPPER, # UPPER BOUND FOR PRU# # RECEIVER # ]; END ITEM INDEX; # LOOP INDEX # ITEM LEVLOP B; # FLAG TO LEAVE LOOP # CONTROL EJECT; # # # # # CODE OF PROC NP$SMSG BEGINS HERE # # # # # P = LOC$TA; # PULL TEMPLATE OVER MESSAGE # PRERC = RC; # SAVE REASON CODE # CRNT$ORD = FTTSTORD[FTTINDEX];#PICKS UP TABLE ORDINAL FROM FTT # IF PFCSFC NQ FCINA # SKIP FCINA # THEN BEGIN LEVLOP = FALSE; # SET FLAG TO FALSE # PFSFV[BLKUPPER[CRNT$ORD]] = PFCSFC; # LOAD PFCSFC AT ILLEGAL # # TRIGGER ENTRY # FOR INDEX = BLKLOWER[CRNT$ORD] STEP 1 WHILE NOT LEVLOP DO BEGIN IF PFCSFC EQ PFSFV[INDEX] # IF MATCH FOUND # THEN BEGIN CONTRIG = PFSFTRIG[INDEX]; # SAVE TRIGGER VALUE # LEVLOP = TRUE; # SET FLAG TO EXIT LOOP # IF INDEX EQ BLKUPPER[CRNT$ORD] THEN BEGIN NP$MSG(ILLTRIG,XFRDTYPE); # ILLEGAL TRIGGER RECEIVED # END # TO DAYFILE # END END IF CONTRIG EQ NSPTXFR AND CRNT$ORD EQ NETSPOD #SPECIAL CASE # # XFTIER # OR CONTRIG EQ NRPTXFR AND CRNT$ORD EQ NETRPOD THEN BEGIN RCORD = CRNT$ORD; LEVLOP = FALSE; XFTRC[RCUPPER[RCORD]] = RC; # LOAD RC INTO TABLE # FOR INDEX = RCLOWER[RCORD] STEP 1 WHILE NOT LEVLOP # SCAN REASON CODE TABLE # DO BEGIN IF RC EQ XFTRC[INDEX] # IF MATCH FOUND # THEN BEGIN CONTRIG = XFTRIGV[INDEX]; # SAVE TRIGGER VALUE # LEVLOP = TRUE; # SET FLAG TO LEAVE LOOP # IF INDEX EQ RCUPPER[RCORD] # IF UPPER BOUND REACHED # THEN BEGIN NP$MSG(ILLTRIG,XFRDTYPE); # ILLEGAL TRIGGER RECEIVED # END # TO DAYFILE # ELSE BEGIN FTTICKVAL[FTTINDEX] = SPMCKMS[0]; # UPDATE LAST CHECK# # MARK NUMBER ACKNOWLEDGED # FTTCURPRU[FTTINDEX] = SPMCKMP[0]; # UPDATE CURRENT # END # PRU POSITION # # ASSOCIATED WITH # END # LAST CHECKMARK # END END BACKTRIG = CONTRIG; # SET BACKTRIG TO TRIGGER # FOR INDEX = 0 WHILE BACKTRIG NQ NIL# REPEAT UNTIL BACKTRIG IS # DO # NIL # BEGIN CONTRIG = BACKTRIG; # SET CONTRIG TO BACKTRIG # NP$STPR(FTTINDEX,CONTRIG,BACKTRIG);# CALL NP$STPR # END END RETURN; # RETURN FROM CALLER # END # END OF PROC NP$SMSG # TERM *ENDIF