cdc:nos2.source:nam5871:csstns
Table of Contents
CSSTNS
Table Of Contents
- [00006] PROC CSSTNS
- [00007] CSSTNS - TERMINATE NPU SUPERVISION
- [00010] TERMINATE NPU SUPERVISION.
- [00041] PROC MESSAGE
- [00042] PROC SSTAQE
- [00043] PROC SSBCBW
- [00044] PROC SSBSBF
- [00045] PROC SSBTBW
- [00046] PROC SSCCTR
Source Code
- CSSTNS.txt
- *DECK CSSTNS
- USETEXT TEXTSS
- USETEXT TEXTCS
- USETEXT TXTSMCS
- USETEXT TXTAPSS
- PROC CSSTNS;
- # TITLE CSSTNS - TERMINATE NPU SUPERVISION #
- BEGIN # CSSTNS #
- #
- ** CSSTNS - TERMINATE NPU SUPERVISION.
- *
- * C. BRION 82/04/13.
- *
- * THIS PROCEDURE PROCESSES SUPERVISION BROKEN SMS FROM NPUS.
- * IF CURRENT OPERATOR ACTION IS ONGOING, THE OPERATOR (S) ARE
- * CLEARED FROM THE NPUCB AND NOTIFIED OF THE NPUCB SITUATION.
- * AN EVENT MESSAGE IS ISSUED THROUGH THE EVENT PROCESSOR QUEUE
- * TO THE APPROPRIATE AUDIENCE GROUP.
- *
- * PROC CSSTNS
- *
- * ENTRY:
- * WCARY = ONE WORD CONTAINING THE WORD COUNT OF THE ENTRY.
- * ABHARY = APPLICATION BLOCK HEADER.
- * TXTARA = BODY OF THE SUPERVISION BROKEN SM.
- *
- * EXIT:
- * A NPU SUPERVISION LOST EVENT ISSUED IF NEEDED.
- * AN OPERATOR MESSAGE INFORMING OF POSSIBLE DATA LOST IS
- * ISSUED IF NEEDED VIA A TERMINAL TEXT QUEUE ENTRY.
- * A ROUTED SOLICITED STATUS EVENT TO INDICATE STATUS DONE
- * MAY BE ISSUED. (THIS CAUSES A READY.. MESSAGE TO THE
- * OPERATOR.
- #
- #
- **** PROC CSSTNS XREF LIST
- #
- XREF
- BEGIN
- PROC MESSAGE;
- PROC SSTAQE;
- PROC SSBCBW; # CLEAR BIT IN WORD #
- PROC SSBSBF; # STORE BIT FIELD #
- PROC SSBTBW; # TEST BIT IN WORD #
- PROC SSCCTR; # CANCEL TIMER REQUEST #
- END
- #
- ****
- #
- #
- * DEFS
- #
- DEF NULLSTATE$ # 99 #; # NULL STATE VALUE #
- DEF LDAMSGL$ # 50 #; # LOST DATA MSG LENGTH #
- #
- * ITEMS
- #
- ITEM CNST1; # CONSTANT ---> 1 #
- ITEM CNST2; # CONSTANT ---> 2 #
- ITEM CNST3; # CONSTANT ---> 3 #
- ITEM I; # LOOP VARIABLE #
- ITEM OCBORD U; # OCB ORDINAL CELL #
- ITEM PENDING B; # COMMAND PENDING FLAG #
- ITEM SUCCESS B; # SET AFTER BY CANCEL TIMER #
- ITEM TNAME C(10); # TERMINAL NAME OF CTRL NOP #
- #
- * ARRAYS
- *
- #
- #
- * FLG$WORD - BASED ARRAY THAT POINTS TO THE FLAG WORDS IN THE
- * NPUCB.
- #
- BASED ARRAY FLG$WORD [00:00] S(NPCBSZ$);
- BEGIN
- ITEM FW$WORD I(00,00,60);
- END
- #
- * LDAMSG - LOST DATA MESSAGE.
- *
- * MESSAGE ARRAY ISSUED WHEN A POSSIBLE LOSS OF A DATA MESSAGE
- * MAY HAVE OCCURRED WHEN AN ONGOING ACTIVITY ON AN NPUCB IS
- * TERMINATED.
- #
- ARRAY LDAMSG [00:00] S(5);
- BEGIN
- ITEM LDA$TXT1 C(00,00,05) = ["NPU: "];
- ITEM LDA$NAME C(00,30,07);
- ITEM LDA$TXT2 C(01,12,01) = [","];
- ITEM LDA$NID C(01,18,03);
- ITEM LDA$TXT3 C(01,36,27) = [",MESSAGE MAY HAVE BEEN LOST"];
- ITEM LDA$ZERO U(04,18,42) = [0];
- END
- CONTROL EJECT;
- #
- * START MAIN PROCEDURE
- #
- #
- * SEARCH FOR THE NPUCB WITH THE SAME NPU NODE NUMBER AND SAME
- * HOST NODE NUMBER. INSURE SEARCH SUCCESS BY PRESETTING THE LAST
- * NPUCB WITH THE SEARCH KEYS AND A NULL STATE.
- #
- NPU$NID[CSNPCNT] = ABHSN[0];
- NPU$HID[CSNPCNT] = ABHDN[0];
- NPU$STAT[CSNPCNT] = NULLSTATE$;
- FOR I = 0 STEP 1 WHILE
- NPU$NID[I] NQ ABHSN[0]
- OR NPU$HID[I] NQ ABHDN[0]
- DO
- BEGIN
- END
- #
- * IF NO NPUCB WAS FOUND, THEN IGNORE THIS SM.
- #
- IF NPU$STAT[I] EQ NULLSTATE$
- THEN
- BEGIN
- RETURN; # **** RETURN **** #
- END
- ABHWORD[1] = 0; # CLEAR OUTGOING ABH WORD #
- #
- * A GOOD SUPERVISION BROKEN SM HAS BEEN RECEIVED SINCE A NPUCB WITH
- * MATCHING NPU AND HOST NODE NUMBERS WAS FOUND.
- * CHECK IF CURRENT SEND ACTION ONGOING, CLEAR THE ACTION AND THE
- * SEND OPERATOR FROM THE NPUCB. INFORM THE SEND OPERATOR OF POSSIBLE
- * MESSAGE LOSS VIA A TERMINAL TEXT ENTRY TO THE CONNECTION TRAFFIC
- * QUEUE.
- #
- IF (NPU$OPSD[I] GR 0
- AND NPU$OPSD[I] LQ MAXACN$)
- THEN
- BEGIN
- FOR OCBORD=HOPORD$ STEP 1 UNTIL MAXACN$
- DO
- BEGIN
- P<FLG$WORD> = LOC(NPU$SDFLGS[I]);
- SSBTBW(FLG$WORD,OCBORD,PENDING);
- IF PENDING
- THEN
- BEGIN
- SSBCBW(FLG$WORD,OCBORD);
- OC$CNPU[OCBORD] = 0; # CLEAR NPUCB FROM OCB #
- OC$NCNT[OCBORD] = OC$NCNT[OCBORD] - 1; # NUM SEND NPUS #
- #
- * SEND MESSAGE TO SEND OPERATOR.
- #
- CNST1 = 0;
- CNST2 = 30;
- CNST3 = 42;
- SSBSBF(LDAMSG,CNST1,CNST2,CNST3,B<00,42>NPU$NAME[I]);
- LDA$NID[0] = NPU$DNID[I];
- WCB$SMID[1] = SMID"TTEXT";
- WCB$IAF[1] = TRUE; # SET INPUT ALLOWED FLAG #
- #
- * CHECK IF MULTIPLE SEND COMMAND IN PROGRESS PRIOR TO
- * CLEARING THE OCB. IF MULTIPLE, SET INPUT ALLOWED FLAG TO
- * NOT ALLOW NEXT COMMAND. IF SEND COMMAND FINISHED,
- * CLEAR THE OCB VERB AND SET IAF TRUE.
- #
- IF OC$NCNT[OCBORD] NQ 0
- THEN
- WCB$IAF[1] = FALSE;
- ELSE
- OC$UVERB[OCBORD] = 0;
- ABHTLC[1] = LDAMSGL$;
- ABHADR[1] = OCBORD;
- WCB$WC[1] = (LDAMSGL$/10) + 2;
- SSTAQE(P<CNQ>,WCBUF[1],ABH[1],LDAMSG);
- END
- END
- END
- #
- * CLEAR SEND OPERATOR FROM NPUCB.
- #
- NPU$OPSD[I] = 0;
- #
- * CHECK IF ONGOING STATUS ACTIVITY ON NPUCB. IF SO, CLEAR THE
- * STATUS OPERATOR FROM THE NPUCB AND ISSUE A STATUS FINISHED
- * EVENT TO THE EVENT PROCESSOR IF THIS CLEARED NPUCB HAS
- * CAUSED THE NPU COUNT FOR THE STATUS OPERATOR TO REACH ZERO.
- * IF THE STATUS ACTIVITY IS FINISHED, CLEAR THE ACTIVE VERB
- * FOR THE OPERATOR.
- #
- IF (NPU$OPST[I] GR 0
- AND NPU$OPST[I] LQ MAXACN$)
- THEN
- BEGIN
- FOR OCBORD=HOPORD$ STEP 1 UNTIL MAXACN$
- DO
- BEGIN
- P<FLG$WORD> = LOC(NPU$STFLGS[I]);
- SSBTBW(FLG$WORD,OCBORD,PENDING);
- IF PENDING
- THEN
- BEGIN
- SSBCBW(FLG$WORD,OCBORD);
- IF OC$CNPU[OCBORD] EQ I
- THEN
- OC$CNPU[OCBORD] = 0;
- OC$NCNT[OCBORD] = OC$NCNT[OCBORD] - 1;
- IF OC$NCNT[OCBORD] EQ 0
- THEN
- BEGIN
- WCB$SMID[1] = SMID"STUFIN";
- WCB$WC[1] = 2;
- ABHADR[1] = OCBORD;
- SSTAQE(P<EVQ>,WCBUF[1],ABH[1],CSSM[1]);
- OC$VERB[OCBORD] = " ";
- END
- END
- END
- END # IF NPU$OPST #
- NPU$OPST[I] = 0;
- #
- * IF THERE IS A CONTROLLING NOP FOR THIS NPU, THEN CLEAR THE
- * CONTROLLING NOP FIELD AND SEND AN EVENT INDICATING CONTROL
- * IS LOST.
- #
- IF NPU$CNOP[I] NQ 0
- THEN
- BEGIN
- WCB$WORD[1] = 3;
- WCB$SMID[1] = SMID"CTRLOFF";
- ABHSN[1] = I;
- TNAME = OC$TNAM[NPU$CNOP[I]];
- SSTAQE(P<EVQ>,WCBUF[1],ABH[1],TNAME);
- NPU$CNOP[I] = 0;
- END
- #
- * CLEAR THE OVERLAY OPERATOR FOR THE NPUCB.
- #
- NPU$OVFLGS[I] = 0;
- #
- * IF REQUIRED GO IS OUTSTANDING, THEN CANCEL THE TIMER REQUEST AND
- * CLEAR THE GO FLAG.
- #
- IF NPU$GFLAG[I]
- THEN
- BEGIN
- SSCCTR(NPU$CNUM[I],SUCCESS);
- NPU$GFLAG[I] = FALSE;
- END
- #
- * PREPARE A SUPERVISION LOST EVENT AND SEND TO THE EVENT PROCESS
- #
- NPU$STAT[I] = SUPSTAT"SUPLOST"; # SET STATE OF NPUCB #
- ABHWORD[1] = ABHWORD[0];
- WCB$SMID[1] = SMID"SUPCB";
- WCB$WC[1] = 2;
- SSTAQE(P<EVQ>,WCBUF[1],ABH[1],CSSM[1]);
- NPU$HID[I] = 0; # CLEAR HID OF NPUCB #
- NPU$LRF[I] = FALSE; # CLEAR THE LOAD REQ FLAG #
- NPU$DMPF[I] = FALSE; # CLEAR THE DUMP FLAG #
- END # CSSTNS #
- TERM
cdc/nos2.source/nam5871/csstns.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator