cdc:nos2.source:nam5871:csschb
Table of Contents
CSSCHB
Table Of Contents
- [00007] PROC CSSCHB
- [00008] CSSCHB - COMPLETE HOST BROADCAST
- [00013] COMPLETE HOST BROADCAST.
- [00040] PROC MOVEI
- [00041] PROC SSBCBW
- [00042] PROC SSBFPB
- [00043] PROC SSTAQE
Source Code
- CSSCHB.txt
- *DECK CSSCHB
- USETEXT TEXTCS;
- USETEXT TEXTSS;
- USETEXT TXTSMCS;
- USETEXT TXTAPSS;
- USETEXT TXTSUSS;
- PROC CSSCHB;
- # TITLE CSSCHB - COMPLETE HOST BROADCAST #
- BEGIN #CSSCHB#
- #
- ** CSSCHB - COMPLETE HOST BROADCAST.
- *
- * C. BRION 82/04/20.
- *
- * THIS PROCEDURE PROCESSES THE NORMAL AND ABNORMAL RESPONSES TO
- * THE HOST BROADCAST SET OF SMS.
- *
- * PROC CSSCHB
- *
- * ENTRY
- * 1. WCBWORD[0] = WORD COUNT BUFFER.
- * 2. ABHWORD[0] = APPLICATION BLOCK HEADER OF SM.
- * 3. MSGBUF[0] = BODY OF MSG SM RESPONSE.
- *
- * EXIT
- * 1. IF ABNORMAL RESPONSE -- SEND IT OFF TO THE EVENT QUEUE.
- * 2. IF NORMAL RESPONSE -- SEND TERMINAL TEXT TO THE CONNECTION
- * TRAFFIC QUEUE INDICATING MESSAGE WAS SENT.
- *
- #
- #
- **** PROC CSSCHB XREF LIST
- #
- XREF
- BEGIN
- PROC MOVEI; # MACREL-MOVE INDIRECT #
- PROC SSBCBW; # SS-CLEAR BIT IN WORD #
- PROC SSBFPB; # FIND PRIORITY BIT #
- PROC SSTAQE; # SS-ACCEPT QUEUE ENTRY #
- END
- #
- ****
- #
- ITEM FOUND B; # NPUCB FOUND INDICATOR #
- ITEM I U; # LOOP INDUCTION VAR #
- ITEM NORD U; # NPUCB ORDINAL #
- ITEM OORD U; # OCB ORDINAL #
- #
- * FLG$WORD - BASED ARRAY THAT POINTS TO THE PENDING SEND REQUEST
- * BIT MAPS IN THE NPUCB-S.
- #
- BASED ARRAY FLG$WORD [00:00] S(NPCBSZ$);
- BEGIN
- ITEM FW$WORD I(00,00,60);
- END
- #
- * HBSENT - MESSAGE FOR MESSAGE SENT.
- #
- ARRAY HBSENT [00:00] S(3);
- BEGIN
- ITEM HBS$TX0 C(00,00,05) =["NPU: "];
- ITEM HBS$NP C(00,30,07);
- ITEM HBS$TXT C(01,12,14) = [", MESSAGE SENT"];
- ITEM HBS$ZER U(02,36,24) =[0];
- END
- WCB$WORD[1] = WCB$WORD[0]; # CLEAR ENTRY WORDS #
- ABHWORD[1] = ABHWORD[0];
- FOUND = FALSE; # INIT NPUCB FOUND FLAG #
- #
- * SEARCH THE NPUCB ARRAY FOR A NPUCB WITH MATCHING NODES TO THE
- * INCOMING RESPONSE SM.
- #
- FOR I = 0 STEP 1 WHILE (NOT FOUND AND I LS CSNPCNT)
- DO
- BEGIN
- IF (ABHDN[0] EQ NPU$HID[I] AND ABHSN[0] EQ NPU$NID[I])
- THEN
- BEGIN
- FOUND = TRUE;
- NORD = I;
- END
- END
- #
- * IF NPUCB FOUND, THEN CHECK TO SEE IF THE COMMAND IS STILL ACTIVE
- * BY CHECKING THE SEND OPERATOR OF THE NPUCB. IF OUT OF RANGE, THEN
- * THE COMMAND WAS PREMATURELY ENDED - JUST CLEAR OUT THE NPUCB.
- #
- IF FOUND
- THEN
- BEGIN
- IF NPU$OPSD[NORD] GR MAXACN$
- THEN
- NPU$OPSD[NORD] = 0;
- ELSE
- #
- * SEND COMMAND STILL ACTIVE FOR THIS NPU. CLEAR THE NPUCB
- * AND CHECK THE NUMBER OF NPUS OUTSTANDING FOR THE SEND
- * COMMAND. IF COMMAND MULTIPLE AND STILL HAS OUTSTANDING
- * NPUS TO RESPOND, THEN DO NOT CLEAR OCB BUT DECREMENT
- * NUMBER OF SEND NPUS IN THE OCB.
- #
- BEGIN
- OORD = NPU$OPSD[NORD];
- NPU$OPSD[NORD] = 0;
- OC$CNPU[OORD] = 0;
- OC$NCNT[OORD] = OC$NCNT[OORD] - 1;
- P<FLG$WORD> = LOC(NPU$SDFLGS[NORD]);
- SSBCBW(FLG$WORD,OORD);
- #
- * IF ABNORMAL RESPONSE, SEND SUPERVISION EVENT.
- #
- IF EB[0]
- THEN
- BEGIN
- IF SFC[0] EQ LI
- THEN
- WCB$SMID[1] = SMID"MSGLIA";
- ELSE IF SFC[0] EQ TE
- THEN
- WCB$SMID[1] = SMID"MSGTEA";
- ELSE
- WCB$SMID[1] = SMID"MSGLLA";
- ABHCN[1] = OORD;
- SSTAQE(P<EVQ>,WCBUF[1],ABH[1],CSSM[0]);
- END
- ELSE
- #
- * SEND COMPLETED MESSAGE TO OPERATOR.
- #
- BEGIN
- HBS$NP[0] = NPU$NAME[NORD];
- WCB$WORD[1] = 0;
- ABHWORD[1] = 0;
- WCB$SMID[1] = SMID"TTEXT";
- WCB$IAF[1] = TRUE;
- #
- * IF MORE SEND NPUS NEED TO RESPOND, SET INPUT ALLOWED FALSE.
- * OTHERWISE, CLEAR OCB AND SET IAF TRUE.
- #
- IF OC$NCNT[OORD] NQ 0
- THEN
- WCB$IAF[1] = FALSE;
- ELSE
- OC$UVERB[OORD] = 0;
- WCB$WC[1] = 5;
- ABHADR[1] = OORD;
- SSTAQE(P<CNQ>,WCBUF[1],ABH[1],HBSENT[0]);
- END
- END
- #
- * IF THERE ARE MORE SENDS PENDING, GE AHEAD AND SEND IT OUT.
- #
- IF NPU$SDFLGS[NORD] NQ 0
- THEN
- BEGIN
- P<FLG$WORD> = LOC(NPU$SDFLGS[NORD]);
- SSBFPB(FLG$WORD,OORD);
- NPU$OPSD[NORD] = OORD;
- WCB$WORD[1] = OC$WC[OORD] + 2;
- ABHWORD[1] = OC$TLC[OORD];
- ABHABT[1] = APPSUP;
- ABHBT[1] = APPSUP;
- ABHDN[1] = NPU$NID[NORD];
- ABHSN[1] = NPU$HID[NORD];
- ABHACT[1] = ACTCSNP$;
- MOVEI(OC$WC[OORD],LOC(OC$SM[OORD]),LOC(CSSM[1]));
- SSTAQE(P<OTQ>,WCBUF[1],ABH[1],CSSM[1]);
- END
- END
- END #CSSCHB#
- TERM
cdc/nos2.source/nam5871/csschb.txt ยท Last modified: 2023/08/05 17:21 by Site Administrator