*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 
  
  
  
  
