*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<SUPMSG> = 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