*DECK CSSCTR
USETEXT TEXTCS;
USETEXT TEXTSS;
USETEXT TXTAPSS;
USETEXT TXTSMCS;
USETEXT TXTSUSS;
PROC CSSCTR;
# TITLE - CSSCTR - COMPLETE TEST REQUEST. #
BEGIN # CSSCTR #
#
** CSSCTR - COMPLETE TEST REQUEST .
*
* C. BRION 82/05/06.
*
* THIS PROCEDURE PROCESSES THE NORMAL AND ABNORMAL RESPONSES
* TO THE TEST REQUEST SM.
*
* PROC CSSCTR
*
* ENTRY:
*
* WCBUF = WORD COUNT WORD OF RESPONSE SM ENTRY.
* ABH = APPLICATION BLOCK HEADER OF RESPONSE SM.
* CSSM = BODY OF RESPONSE SM ENTRY.
*
* EXIT:
*
* A SUPERVISION EVENT IS ISSUED.
* THE NPUCB OVERLAY STATE IS UPDATED.
*
#
#
**** PROC CSSCTR XREF LIST.
#
XREF
BEGIN
PROC SSBCBW; # SS-CLEAR BIT IN WORD #
PROC SSBTBW; # SS-TEST BIT IN WORD #
PROC SSTAQE; # SS-ACCEPT QUEUE ENTRY #
END
#
****
#
ITEM FOUND B; # NPUCB FOUND FLAG #
ITEM I U; # LOOP INDUCTION VAR #
ITEM NORD U; # NPUCB ORDINAL #
ITEM OORD I; # OPERATOR ORDINAL #
ITEM RUNNING B; # ONLINE DIAG OPERATOR FLAG #
#
* FLG$WORD - BASED ARRAY THAT POINTS THE THE ONLINE DIAGNOSTICS
* OPERATOR BIT MAP.
#
BASED ARRAY FLG$WORD [00:00] S(NPCBSZ$);
BEGIN
ITEM FW$WORD I(00,00,60);
END
OORD = OLDDO[0];
ABHWORD[1] = ABHWORD[0]; # SET OUTGOING SM ABH #
#
* FIND NPUCB WITH MATCHING NODE NUMBERS AS 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 IF TEST REQUEST STILL CURRENT BY CHECK-
* ING THE CURRENT OVERLAY OPERATOR ORDINAL OF THE NPUCB. IF OUT OF
* RANGE, MEANS THAT REQUEST CANCELED BY OPERATOR ACTION-SIMPLY
* CLEAR CURRENT OVERLAY OCB ORDINAL. OTHERWISE, REQUEST STILL CUR-
* RENT.
#
IF FOUND
THEN
BEGIN
P<FLG$WORD> = LOC(NPU$OVFLGS[NORD]);
SSBTBW(FLG$WORD,OORD,RUNNING);
IF RUNNING
THEN
BEGIN
ABHDN[1] = ABHSN[1]; # SWITCH DN,SN FOR EVQ #
OC$UVERB[OORD] = 0; # CLEAR OCB VERB #
#
* IF ABNORMAL RESPONSE, CLEAR OVERLAY OCB ORDINAL OF NPUCB AND
* SET OVERLAY STATE TO IDLE.
#
IF EB[0]
THEN
BEGIN
SSBCBW(FLG$WORD,OORD);
END
#
* SEND SUPERVISION EVENT TO EVENT PROCESSOR.
#
SSTAQE(P<EVQ>,WCBUF[0],ABH[1],CSSM[0]);
END
#
* OPERATOR MUST HAVE DISCONNECTED. SEND TERMINAL TEXT WITH THE
* INPUT ALLOWED FLAG SET TO COMPLETE THE TERMINATION PROCESSING
* IN THE C-LAYER.
#
ELSE
BEGIN
WCB$WORD[1] = 2;
WCB$SMID[1] = SMID"TTEXT";
WCB$IAF[1] = TRUE;
ABHADR[1] = OORD;
SSTAQE(P<CNQ>,WCBUF[1],ABH[1],CSSM[1]);
END
END
END #CSSCTR#
TERM