cdc:nos2.source:nam5871:np_data
Table of Contents
NP$DATA
Table Of Contents
- [00008] PROC NP$DATA
- [00067] PROC NP$STPR
- [00068] PROC NP$MSG
- [00069] PROC NP$CIO
- [00278] PROC PRDCOPY
- [00406] PROC PRDERR
Source Code
- NP$DATA.txt
- *DECK,NP$DATA
- *IF,DEF,XFR
- USETEXT AIPDEF
- USETEXT HEADER
- USETEXT NP$NWL
- USETEXT NP$GETS
- USETEXT NX$ACBX
- PROC NP$DATA;
- BEGIN
- #
- *1DC NP$DATA
- *
- * 1. PROC NAME AUTHOR DATE
- * NP$DATA Y. C. YIP 02/19/1985
- *
- * 2. FUNCTIONAL DESCRIPTION
- * NP$DATA CHECKS THE MESSAGES THAT THE NETXFRC PASSES
- * TO IT. THE END RESULT OF THE VARIOUS CHECKS WILL
- * PROCDUCE A TRIGGER USED IN CALLING NETSTPR, THE
- * THE STATE TABLE ACTION PROCESSOR.
- *
- * 3. METHOD USED
- * VALUES OF THE QMSG MESSAGES FOR FILE TRANSFER ARE
- * STORED IN AN ARRAY TOGETHER WITH INTERNAL TRIGGER
- * VALUE. THE UPPER SLOT + 1 OF EACH QMSG COLUMN
- * ALWAYS CONTAINS THE ILLEGAL TRIGGER VALUE FOR
- * EACH STATE TABLE, (PRU MODE SEND, RECEIVER, AND
- * CHARACTER MODE SEND, AND RECEIVE). THE RECEIVED
- * QMSG IS ALWAYS DEPOSITED AT THE UPPDER SLOT + 1
- * OF EACH QMSG COLUMN OF THE RESPECTIVE TABLES.
- * IN CASE THERE IS NO MATCH FOR THAT QMSG FOR THE
- * PRESET QMSGS WITHIN THE ARRAY, IT WILL FINALLY
- * MATCHES ITSELF AT THE UPPER SLOT + 1 LOCATION AND
- * GENERATES THE ILLEGAL TRIGGER VALUE.
- *
- * NON-QBLK/QMSG MESSAGES:
- *
- * IN THE CASE OF A INTRAHOST FILE TRANSFER, IT WILL
- * STORE THE DATA AND WRITES DIRECTLY ON THE OUTPUT
- * FET WHEREAS, IN THE CASE OF A CHARACTER MODE FILE
- * TRANSFER, IT WILL ALWAYS WRITE ON THE DISK BUFFER.
- *
- * 4. ENTRY CONDITIONS
- * LOC$HA AND LOC$TA ARE THE HEADERS AND TEXT AREAS
- * FOR THE MESSAGES BLOCK TYPE CAN BE 1,2,6 OR 7.
- *
- * 5. EXIT CONDITONS
- * A TRIGGER VALUE IS GENERATED USED IN
- * CALLING NP$STPR.
- *
- * 6. COMDECKS CALLED AND SYMPL TEXTS USED.
- * NP$NWL, NX$ACBX.
- *
- * 7. ROUTINES CALLED
- * NP$MSG - DAYFILE ILLEGAL TRIGGER RECEIVED.
- *
- * 8. DAYFILE MESSAGES
- * - "ILLEGAL TRIGGER RECEIVED"
- *
- #
- #
- **** PROC NP$DATA - XREF LIST.
- #
- XREF # EXTERNAL REFERENCE PROCS #
- BEGIN
- PROC NP$STPR; # STATE TABLE PROCESSOR #
- PROC NP$MSG; # DAYFILE MESSAGE PASSER #
- PROC NP$CIO; # PROC FOR ISSUING CIO CALLS #
- END
- #
- ****
- #
- DEF ERTABLMT # 6 #; # LIMIT OF ERROR CODE TABLE #
- DEF PRDLMT # 28 #; # TABLE SIZE OF THE FOUR TABLES #
- DEF PRDSPLOWER # 1 #; # LOWER BOUND FOR PRU SENDER TABLE #
- DEF PRDSPUPPER # 4 #; # UPPER BOUND FOR PRU SENDER TABLE #
- DEF PRDRPLOWER # 8 #; # LOWER BOUND FOR PRU RECE'V TABLE #
- DEF PRDRPUPPER # 10 #; # UPPER BOUND FOR PRU RECE'V TABLE #
- DEF PRDSCLOWER # 15 #; # LOWER BOUND FOR CHAR SENDER TABLE #
- DEF PRDSCUPPER # 20 #; # UPPER BOUND FOR CHAR SENDER TABLE #
- DEF PRDRCLOWER # 22 #; # LOWER FOR CHAR RECEIVER TABLE #
- DEF PRDRCUPPER # 25 #; # UPPER BOUND FOR CHAR RECEIVER TAB #
- DEF ERTABNO # 5 #; # NUMBER OF TABLES FOR ERROR CODE - #
- # TRIGGER MATCH #
- ITEM CRNT$ORD; # CURRENT VALUE OF TABLE ORDINAL #
- ITEM CONTRIG; # CURRENT VALUE OF TRIGGER #
- ITEM LEVLOP B; # FLAG FOR EXITTING LOOP #
- ITEM INDEX; # LOOP INDEX #
- ITEM TABSELECT; # ERROR TABLE SELECTOR #
- ITEM BACKTRIG; # RETURN TRIGGER BY CALLING NP$STPR #
- ARRAY ILLTRIG[0:0] S(3); # ILLEGAL TRIGGER #
- BEGIN
- ITEM ILLTRIGC C(00,00,24) = ["ILLEGAL TRIGGER RECEIVED"];
- ITEM ILLTRIGZ U(02,24,36) = [0];
- END
- ARRAY ERBLK[0:0] S(3); # ERROR BLOCK #
- BEGIN
- ITEM ERBLKV C(00,00,21) = ["BLOCK TYPE NOT QMSG"];
- ITEM ERBLKZ U(02,06,54) = [0];
- END
- BASED ARRAY ERR$TAB[0:0] S(1); # BASED ARRAY FOR ERROR CODE #
- BEGIN
- ITEM ERR$CODE U(00,00,32); # ERROR CODE #
- END
- ARRAY PFCSFCTAB[1:PRDLMT] S(1); # PFCSFC TABLE FOR LEVEL 7 QMSG #
- BEGIN
- ITEM PFSFV U(00,00,16) = [ # START OF PRU SENDER LEVEL 7 QMSG #
- LEV7$ER, # ER(E) #
- LEV7$SR, # SR #
- LEV7$RR, # RR #
- , # ILLEGAL TRIGGER #
- ,
- ,
- ,
- # START OF PRU RECEIVER LEVEL 7 QMSG#
- LEV7$ES, # ES(E) #
- LEV7$SS, # SS #
- , # ILLEGAL TRIGGER #
- ,
- ,
- ,
- ,
- # START OF CHAR SENDER LEVEL 7 QMSG#
- LEV7$SR, # SR #
- LEV7$RR, # RR #
- LEV7$ER, # ER #
- LEV7$QR, # QR #
- LEV7$MR, # MR #
- , # ILLEGAL TRIGGER #
- ,
- # START OF CHAR RECEIVER LEVEL 7 QMS#
- LEV7$SS, # SS #
- LEV7$ES, # ES #
- LEV7$MS, # MS #
- , # ILLEGAL TRIGGER #
- ,
- ,
- ];
- ITEM PFSFTRIG U(00,30,30) = [
- # START OF PRU SENDER TRIGGER #
- NSPTERK, # ER(OK) #
- NSPTSR, # SR #
- NSPTRRT, # RR RECEIVED #
- NRSTILL, # ILLEGAL TRIGGER #
- ,
- ,
- ,
- # START OF PRU RECEIVER TRIGGER #
- NRPTESE, # ES(E) #
- NRPTSS, # SS #
- NRSTILL, # ILLEGAL TRIGGER #
- ,
- ,
- ,
- ,
- # START OF CHAR SENDER TRIGGER TABLE#
- NSCTSR, # SR #
- NSCTRRT, # RR #
- NSCTERK, # ER #
- NSCTQRE, # QR #
- NSCTMRR, # MR #
- NSCTILL, # ILLEGAL TRIGGER #
- ,
- # START OF CHAR RECEIVER TRIGGER TAB#
- NRCTSS, # SS #
- NRCTESE, # ES(E) #
- NRCTMSR, # MS #
- NRCTILL, # ILLEGAL TRIGGER #
- ,
- ,
- ];
- END # END OF PFCSFCTAB #
- ARRAY ERTAB [1: ERTABLMT] S(1); # ERROR CODE TABLE FOR ER AND ES#
- BEGIN
- ITEM ERCODE U(00,00,32) = [
- PRDER1, # ER OR ES(OK) #
- PRDER2, # RETRYABLE RECEIVER ERROR #
- PRDER3, # NONRETRYABLE RECEIVE ERR #
- PRDER6, # RETRYABLE SENDER ERROR #
- PRDER7, # NON RETRYABLE SENDER ERR #
- # ILLEGAL ERROR CODE #
- ];
- END
- ARRAY QRTAB [1: ERTABLMT] S(1); # ERROR CODE TABLE FOR QR #
- BEGIN
- ITEM QRCODE U(00,00,32) = [
- PRDER1, # NO ERROR #
- PRDER2, # RETRYABLE RECEIVE ERROR #
- PRDER3, # NONRETRYABLE RECEIVE ERR #
- PRDER4, # PROTOCOL ERROR #
- PRDER5, # GO NOT ACCEPTED #
- # ILLEGAL ERROR CODE #
- ];
- END
- ARRAY PRDPTR [0:NETRCOD] S(1); # CONTROL BLOCK FOR INDEXES INTO #
- BEGIN # PFCSFC LEVEL 7 QMSG #
- ITEM PRDLOWER U(00,00,30) = [ PRDSPLOWER, # LOWER BOUND SEND #
- PRDRPLOWER, # LOWER BOUND PRU #
- # RECEIVE #
- PRDSCLOWER, # LOWER BOUND CHAR #
- # SEND #
- PRDRCLOWER # LOWER BOUND CHAR #
- # RECEIVE #
- ];
- ITEM PRDUPPER U(00,30,30) = [ PRDSPUPPER, # UPPER BOUND SEND #
- PRDRPUPPER, # UPPER BOUND PRU #
- # RECEIVE #
- PRDSCUPPER, # UPPER BOUND CHAR #
- # SEND #
- PRDRCUPPER # UPPER BOUND CHAR #
- # RECEIVE #
- ];
- END # END OF PRDPTR #
- ARRAY ERRTRIG [1: ERTABLMT, 1 : ERTABNO] S(1);
- BEGIN
- ITEM ENTRV U(00,32,28) = [ # ER(E) AND PRU SENDER TABLE #
- [ NSPTERK, # ER(OK) #
- NSPTERE, # ER(E) WITH E=X20 #
- NSPTERE, # ER(E) WITH E=X21 #
- NSPTERE, # ER(E) WITH E=X28 #
- NSPTERE, # ER(E) WITH E=X29 #
- NRSTILL # ILLEGAL TRIGGER #
- ]
- # ER(E) AND CHARACTER SENDER TABLE #
- [ NSCTERK, # ER(OK) #
- NSCTERE, # ER(E) WITH E=X20 #
- NSCTERE, # ER(E) WITH E=X21 #
- NSCTERE, # ER(E) WITH E=X28 #
- NSCTERE, # ER(E) WITH E=X29 #
- NSCTILL # ILLEGAL TRIGGER #
- ]
- # ES(E) AND PRU RECEIVER TABLE #
- [ NRPTESE, # ES(OK) #
- NRPTESE, # ES(E) WITH E=X20 #
- NRPTESE, # ES(E) WITH E=X21 #
- NRPTESE, # ES(E) WITH E=X28 #
- NRPTESE, # ES(E) WITH E=X29 #
- NRSTILL # ILLEGAL TRIGGER #
- ]
- # ES(E) AND CHARACTER RECEIVER TABLE#
- [ NRCTESK, # ES(OK) #
- NRCTESE, # ES(E) WITH E=X20 #
- NRCTESE, # ES(E) WITH E=X21 #
- NRCTESE, # ES(E) WITH E=X28 #
- NRCTESE, # ES(E) WITH E=X29 #
- NRCTILL # ILLEGAL TRIGGER #
- ]
- # QR(E) AND CHARACTER SENDER TABLE #
- [ NSCTQRK, # QR(OK) #
- NSCTQRE, # QR(E) WITH E=X20 #
- NSCTQRE, # QR(E) WITH E=X21 #
- NSCTQRE, # QR(E) WITH E=X22 #
- NSCTQRE, # QR(E) WITH E= X23 #
- NSCTILL # ILLEGAL TRIGGER #
- ]
- ];
- END # END OF TABLE #
- STATUS ERTABID NULL, # TABLE ID FOR SEARCHING ERROR CODE #
- TAB1, # ERROR CODE FOR ER AND PRU SENDER #
- TAB2, # ERROR CODE FOR ER AND CHAR SENDER #
- TAB3, # ERROR CODE FOR ES AND PRU RECEIVER#
- TAB4, # ERROR CODE FOR ES AND CHAR RECVER #
- TAB5; # ERROR CODE FOR QR AND CHAR SENDER #
- CONTROL EJECT;
- PROC PRDCOPY;
- BEGIN
- #
- *1DC PRDCOPY
- *
- * 1. PROC NAME AUTHOR DATE
- * PRDCOPY Y. C. YIP 02/19/1985
- *
- * 2. FUNCTIONAL DESCRIPTION
- * PRDCOPY COPYIES CONTENT OF DATA RECEIVED THROUGH NETGETL
- * IN NETXFRC TO NET WORK BUFFER INDEXED BY FTTINDEX.
- *
- * 3. METHOD USED
- * FIRST, TEMPLATE FOR NETWORK BUFFER, FET$WORK IS PULLED
- * FET ADDRESS INDICATED BY FTTFETW[FTTINDEX].
- * SECOND, A LOCAL TEMPLATE, WORD IS SET TO THE FIRST WORD
- * ADDRESS OF THE NETWORK BUFFER INDEXED BY FTT.
- * A LOCAL INDEX, IN$ADR IS SET SUCH IT POINTS TO THE WORD
- * WHERE DATA FROM LOC$TA SHOULD BE STORED. IN$ADR IS NORMALLY
- * ONE GREATER THAN THE VALUE OF IN POINTER OF NETWORK BUFFER
- * EXCEPT FOR THE BOUNDARY CONDITION MENTIONED BELOW.
- * THEN THE WHOLE CHUNK OF DATA IN LOC$TA IS COPIED TO
- * THE NETWORK BUFFER USING THE TLC IN THE LOC$TA.
- * BOUNDARY CONDITIONS ARE:
- * IN POINTER IN NETWORK BUFFER FET IS EQUAL TO
- * OUT POINTER IN NETWORK BUFFER FET. IN THIS CASE,
- * IN$ADR IS SET TO VALUE OF IN POINTER.
- * ERROR CONDITION IS:
- * IN$ADR IS EQUAL TO LIMIT POINTER IN NETBUF FET.
- * IN THIS CASE, CONTRIG IS SET TO INTERNAL ERROR TRIGGER.
- *
- * 4. ENTRY CONDITIONS
- * CONTRIG IS ZEROED OUT.
- *
- * 5. EXIT CONDITONS
- * CONTRIG IS ASSIGNED TO ERROR TRIGGER SHOULD AN ERROR
- * OCCUR. DATA IS COPYIED FROM DATA$WORD TO NETBUF
- *
- * 6. COMDECKS CALLED AND SYMPL TEXTS USED.
- *
- * 7. ROUTINES CALLED
- * -NONE
- * 8. DAYFILE MESSAGES
- * -NONE
- *
- #
- BASED ARRAY COPYAREA[0:0] S(1); # TEMPLATE FOR ADDRESSING #
- BEGIN # COPYING AREA #
- ITEM WORD U(00,00,60);
- END
- ITEM IN$ADR; # POINTER TO NETBUF AREA #
- ITEM INDEX; # LOOP INDEX #
- ITEM LOCTLC; # LENGTH OF TEXT TO BE COPIED #
- CONTROL EJECT;
- # #
- # CODE OF PRDCOPY BEGINS HERE #
- # #
- P<FET$WORK> = FTTFETW[FTTINDEX]; # PULL NETBUF TEMPLATE TO #
- # NETBUF ADDRESS IN THE FTT #
- P<COPYAREA> = 0; # SET COPYAREA TEMPLATE TO POINT TO #
- # 0 #
- P<FET$CIO> = FTTFETADR[FTTINDEX]; # SET DISK FET TEMPLATE TO #
- # MEMORY ADDRESS OF DISK FET #
- P<CMB> = FTTCMV$BLK[FTTINDEX]; # SET CMB TEMPLATE TO CHARACTER #
- # CONVERSION TABLE ADDRESS #
- P<HEADER> = LOC$HA; # PULL HEADER TEMPLATE TO HA #
- IF NOT FTTNOTRAN[FTTINDEX] # IF TRANSLATION NEEDED #
- THEN
- BEGIN
- IF ABHTLC NQ 0 # NON-ZERO ABHTLC #
- THEN
- BEGIN
- IN$ADR = FETWIN[0] + 1; # IN$ADR NOW POINTS TO INPOINTER + 1#
- IF FETWIN[0] EQ FETWOUT[0] # INITIAL CONDITION OF FET #
- THEN
- BEGIN
- IN$ADR = FETWIN[0]; # IN$ADR NOW IS THE SAME AS FETWIN #
- END
- LOCTLC = (ABHTLC*2 +14)/15;# COMPUTE LENGTH OF TEXT IN WORDS#
- WORD[IN$ADR] = DATA$WORD[0]; # COPY HEADER #
- FOR INDEX = 1 STEP 1 UNTIL LOCTLC
- DO
- BEGIN
- IN$ADR = IN$ADR + 1; # NEXT WORD #
- IF IN$ADR EQ FETWLIMIT[0] # IF IN POINTER EQ LIMIT POINTER#
- THEN
- BEGIN
- CONTRIG = NRCTITR; # SET CONTRIG TO INTERNAL ERROR #
- GOTO ENDCOPY; # RETURN WITHOUT FURTHER COPYING #
- END
- ELSE
- BEGIN
- WORD[IN$ADR] = DATA$WORD[INDEX]; # COPY WORD #
- END
- END # END OF FOR #
- FETWIN[0] = IN$ADR ; # UPDATE IN POINTER #
- END # END OF NON-ZERO ABHTLC #
- END # END OF TRANSLATION NEEDED #
- ELSE # TRANSLATION NOT NEEDED #
- BEGIN # FOR INTRAHOST BINARY #
- LOCTLC =(ABHTLC + 1 )*2/15 ; # GET NUMBER OF CM WORDS #
- # EXCLUDING THE ONE WORD TBH HEADER #
- IF LOCTLC GR 1 # IF NOT JUST THE TBH HEADER #
- THEN
- BEGIN
- FOR INDEX = 2 STEP 1 UNTIL LOCTLC# COPY DATA DIRECTLY TO CIO #
- # BUFFER #
- DO
- BEGIN
- IF FETIN[0] EQ FETOUT[0] - 1 # IF DISK BUFFER IS FULL #
- THEN
- BEGIN # RESET OUT PTR BY WRITING #
- NP$CIO(CIO$WRITE); # TO CIO BUFFER #
- END
- WORD[FETIN[0]] = DATA$WORD[INDEX];# COPY DATA TO DISK BUFF #
- FETIN[0] = FETIN[0] + 1; # BUMP IN POINTER OF DISK FET #
- IF FETIN[0] EQ FETLIM[0] # END OF BUFFER REACHED #
- THEN
- BEGIN
- FETIN[0] = FETFIR[0]; # RESET IN POINTER OF DISK BUFFER #
- END
- END
- END # END OF FOR LOOP #
- END # END OF IF #
- ENDCOPY: RETURN; # RETURN TO CALLER #
- END # END OF PROC PRDCOPY #
- CONTROL EJECT;
- PROC PRDERR;
- BEGIN
- #
- *1DC PRDERR
- *
- * 1. PROC NAME AUTHOR DATE
- * PRDERR Y. C. YIP 02/19/1985
- *
- * 2. FUNCTIONAL DESCRIPTION
- * PRDERR CHECKS ERROR CODE FOR LEVEL 7 PFCSFC OF QR, ER
- * AND ES. IT THEN GENERATES THE VALUE OF THE TRIGGER
- * CORRESPONDING TO THESE ERROR CODES.
- *
- * 3. METHOD USED
- * FIRST,PFCSFC IS IDENTIFIED AND THE BASE ARRAY ERR$TAB IS
- * SET TO EITHER ERTAB OR QRTAB DEPENDING ON THE VALUE OF
- * TABSELECT. TABSELECT VALUE OF 1-4 WILL USE ERTAB AS
- * ERROR CODE TABLE WHEREAS VALUE OF 5 WILL USE QRTAB AS
- * THE ERROR CODE TABLE.
- * AFTER THE SEARCH, IF THE LOOP INDEX IS EQUAL TO THE
- * VALUE OF ERTABLMT, THE ERROR CODE RECEIVED IS ILLEGAL
- * ELSE, THE RIGHT TRIGGER IS PRODUCED BY INDEXING INTO
- * THE ARRAY ENTRV WITH INDEX OF THE ERROR TABLE AND THE
- * TABLE SELECTOR.
- *
- * 4. ENTRY CONDITIONS
- * TABSELECT - TABLE ORDINAL USED AS THE COLUMN SELECTOR
- * OF THE ENTRV ARRAY.
- *
- * 5. EXIT CONDITONS
- * CONTRIG IS UPDATED TO HAVE THE TRIGGER VALUE.
- *
- * 6. COMDECKS CALLED AND SYMPL TEXTS USED.
- * NX$ACBX
- * 7. ROUTINES CALLED
- * NP$MSG - DAYFILE PROCESSOR
- *
- * 8. DAYFILE MESSAGES
- * -ILLEGAL TRIGGER RECEIVED
- *
- #
- ITEM INDEX; # LOOP INDEX #
- ITEM CTEMP C(10);
- CONTROL EJECT;
- # #
- # PRDERR CODE BEGINS HERE #
- # #
- IF TABSELECT EQ ERTABID"TAB5" # QR ERROR CODE TABLE IS USED #
- THEN
- BEGIN
- P<ERR$TAB> = LOC(QRTAB);
- END
- ELSE
- BEGIN
- P<ERR$TAB> = LOC(ERTAB); # ELSE ER AND ES ERROR TABLE IS USED#
- END
- ERR$CODE[ERTABLMT-1] = LV7$ERROR;# DEPOSIT ERROR CODE IN TABLE #
- LEVLOP = FALSE; # SET LEAVE LOOP FLAG TO FALSE #
- FOR INDEX = 0 STEP 1 WHILE NOT LEVLOP # SCAN TABLE #
- DO
- BEGIN
- IF ERR$CODE[INDEX] EQ LV7$ERROR # OF A MATCH IS FOUND #
- THEN
- BEGIN
- CONTRIG = ENTRV[INDEX + 1,TABSELECT]; # GET TRIGGER #
- LEVLOP = TRUE; # SET EXIT FLAG #
- IF INDEX EQ ERTABLMT - 1 # IF FOUND IN LAST ENTRY #
- THEN
- BEGIN
- NP$MSG(ILLTRIG,XFRDTYPE); # ILLEGAL TRIGGER RECEIVED #
- END
- END
- END
- RETURN; # RETURN TO CALLER #
- END # END OF PRDERR #
- CONTROL EJECT;
- # #
- # CODE OF NP$DATA BEGINS HERE #
- # #
- P<LV7$BASE> = LOC$TA; # PULL LEVEL 7 MESSAGE TEMPLATE #
- P<HEADER> = LOC$HA; # PULL BLOCK HEADER TEMPLATE OVER #
- CRNT$ORD = FTTSTORD[FTTINDEX];#ASSIGN CURRENT TABLE ORDINAL FROM #
- # COMMON BLOCK VARIABLE FTTINDEX #
- LEVLOP =FALSE; # CONTROL LOOP INITIALIZED TO FALSE #
- IF ABHABT EQ APMSG AND FTTSTORD[FTTINDEX] EQ NETRCOD
- THEN # IF MSG AND CHARACTER RECEIVER #
- BEGIN # THE TABLE ORDINAL IS CHAR RECEIVER#
- CONTRIG = 0; # ZERO OUT CONTRIG #
- IF FTTSTATE[FTTINDEX] EQ # ONLY COPY IF IN DATA STATE #
- NRCDATA
- THEN
- BEGIN
- PRDCOPY; # COPY DATA RECEIVED TO NETBUF #
- END
- IF CONTRIG EQ 0 # IF NO COPY ERROR #
- THEN
- BEGIN
- CONTRIG = NRCTDAT; # DATA TRIGGER #
- END
- END
- ELSE
- BEGIN
- IF ABHABT EQ APPBLK AND FTTSTORD[FTTINDEX] EQ NETRCOD
- THEN # IF BLOCK AND CHARACTER RECEIVER #
- BEGIN
- CONTRIG = 0; # ZERO OUT CONTRIG #
- IF FTTSTATE[FTTINDEX] EQ # COPY BLK ONLY IN DATA STATE #
- NRCDATA
- THEN
- BEGIN
- PRDCOPY; # COPY BLOCK TO NETBUF #
- END
- END
- ELSE
- BEGIN # MUST BE APPQMSG OR APPQBLK #
- PFSFV[PRDUPPER[CRNT$ORD]] = LV7$BPFC; # PUT PFC IN LAST SLOT#
- FOR INDEX = PRDLOWER[CRNT$ORD] STEP 1 WHILE NOT LEVLOP
- DO
- BEGIN
- IF LV7$BPFC EQ PFSFV[INDEX]
- THEN
- BEGIN
- CONTRIG = PFSFTRIG[INDEX] ; # ASSIGN TRIGGER VALUE #
- LEVLOP = TRUE;
- IF INDEX EQ PRDUPPER[CRNT$ORD]
- THEN
- BEGIN
- NP$MSG(ILLTRIG,XFRDTYPE); # ILLEGAL TRIGGER #
- END
- END
- END
- IF CONTRIG EQ NSPTERK AND CRNT$ORD EQ NETSPOD
- THEN
- BEGIN # ER(E) AND PRU SENDER #
- TABSELECT = ERTABID"TAB1"; # SET TABLE SELECTOR TO TABLE 1 #
- END
- ELSE
- BEGIN
- IF CONTRIG EQ NSCTERK AND CRNT$ORD EQ NETSCOD
- THEN
- BEGIN
- TABSELECT = ERTABID"TAB2"; # ER(E) AND CHARACTER SENDER #
- END
- ELSE
- BEGIN
- IF CONTRIG EQ NRPTESE AND CRNT$ORD EQ NETRPOD
- THEN
- BEGIN
- TABSELECT = ERTABID"TAB3"; # ES(E) AND PRU RECEIVER #
- END
- ELSE
- BEGIN
- IF CONTRIG EQ NRCTESE AND CRNT$ORD EQ NETRCOD
- THEN
- BEGIN
- TABSELECT = ERTABID"TAB4"; # ES(E) AND CHAR RECEIVER#
- END
- ELSE
- BEGIN
- IF CONTRIG EQ NSCTQRE AND CRNT$ORD EQ NETSCOD
- THEN
- BEGIN
- TABSELECT = ERTABID"TAB5";# QR(E) AND CHAR SENDER #
- END
- ELSE
- BEGIN
- TABSELECT = ERTABID"NULL";# NO TABLE SELECT NEEDED #
- END
- END
- END
- END
- END
- IF TABSELECT NQ ERTABID"NULL" # SCAN ERROR CODE TABLE #
- THEN
- BEGIN
- PRDERR; # UPDATE DD FIELD #
- END
- END
- END
- BACKTRIG = CONTRIG; # SET BACKTRIG TO CONTRIG #
- FOR INDEX = 0 WHILE BACKTRIG NQ NIL # REPEAT WHILE BACKTRIG IS #
- DO # NOT NULL #
- BEGIN
- CONTRIG = BACKTRIG; # SET CONTRIG TO BACKTRIG #
- NP$STPR(FTTINDEX,CONTRIG,BACKTRIG); # CALLS STATE TABLE PROCSS #
- END
- RETURN; # RETURN TO CALLER #
- END # END OF NP$DATA #
- TERM
- *ENDIF
cdc/nos2.source/nam5871/np_data.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator