*DECK     CSESDE
USETEXT TEXTCS
USETEXT TEXTSS
USETEXT TXCMDCS 
USETEXT TXTAPSS 
USETEXT TXTSMCS 
      PROC CSESDE;
# TITLE - SEND DIAGNOSTICS END MESSAGE.                                #
      BEGIN 
# 
**    CSESDE - SEND DIAGNOSTICS END MESSAGE.
* 
*     D.K. ENDO    82/06/07 
* 
*     THIS PROCEDURE SENDS THE FINAL MESSAGE WHEN NPU DIAGNOSTICS ARE 
*     REQUESTED.
* 
*     PROC CSESDE 
* 
*     ENTRY        1. OLD/IN/N OR OLD/IN/A SM.
* 
*     EXIT         1. NULL TEXT TO CNQ (OLD/IN/N) 
*                  2. NO DIAGNOSTICS MESSAGE TO CNQ (OLD/IN/A)
* 
# 
# 
****  PROC CSESDE - XREF LIST BEGINS. 
# 
      XREF
        BEGIN 
        PROC CSESLE;         # SEND LOG FILE ENTRY                     #
        PROC SSBSBF;         # STORE BIT FIELD                         #
        PROC SSTAQE;         # ACCEPT QUEUE ENTRY                      #
        END 
# 
****
# 
  
  
      DEF NOD$TXTL # 50 #;   # NO DIAGNOSTICS MESSAGE TEXT LENGTH      #
      DEF SNM$TXTL # 30 #;   # SOURCE NPU-NAME MESSAGE TEXT LENGTH     #
  
  
      ITEM CNST1;            # INTEGER CONSTANT ---> 1                 #
      ITEM CNST2;            # INTEGER CONSTANT ---> 2                 #
      ITEM CNST3;            # INTEGER CONSTANT ---> 3                 #
      ITEM I;                # LOOP INDUCTION VARIABLE                 #
  
  
# 
      THIS ARRAY DEFINES THE -NO ONLINE DIAGNOSTICS- MESSAGE TEXT SENT
      WHEN AN OLD/IN/A SM IS RECEIVED.
# 
      ARRAY NOD$TXT [00:04] S(1); 
        BEGIN 
        ITEM NOD$TIM    C(00,00,10);
        ITEM NOD$MSG1   C(01,00,20) = [" NO ONLINE DIAGNOSTI"]; 
        ITEM NOD$MSG2   C(03,00,11) = ["CS PRESENT."];
        ITEM NOD$ZBYT   U(04,06,54) = [0];
        END 
  
  
# 
      THIS ARRAY DEFINES THE SOURCE NPU$NAME MESSAGE TEXT.
# 
      ARRAY SNM$TXT [00:02] S(1); 
        BEGIN 
        ITEM SNM$TIM    C(00,00,10);
        ITEM SNM$MSG    C(01,00,14) = ["FROM UNKNOWN: "]; 
        ITEM SNM$ZBYT   U(02,24,36) = [0];
        END 
      CONTROL EJECT;
#                                                                      #
#                            CSESDE CODE BEGINS HERE                   #
#                                                                      #
# 
*     IF THIS SM IS OLD/IN/N, THEN SEND A NULL TEXT WITH THE INPUT
*     ALLOWED FLAG SET. 
# 
  
      IF WCB$SMID[0] EQ SMID"OLDINN"
      THEN
        BEGIN 
        WCB$WORD[1] = 2;
        WCB$SMID[1] = SMID"TTEXT";
        WCB$IAF[1] = TRUE;
  
        ABHWORD[1] = 0; 
        ABHADR[1] = OLDDO[0]; 
  
        SSTAQE(P<CNQ>,WCBUF[1],ABH[1],CSSM[1]); 
        END 
  
# 
*     IF THIS SM IS OLD/IN/A, THEN SEND A -NO ONLINE DIAGNOSTICS- 
*     MESSAGE TEXT WITH THE INPUT ALLOWED FLAG SET.  (*** NOTE - THE
*     SOURCE NODE IS IN THE DN FIELD AND THE OCB ORDINAL IS IN THE
*     ABN FIELD. ***) 
# 
      ELSE
        BEGIN 
  
        SNM$TIM[0] = CTM$CLOCK[0];
  
        FOR I=0 STEP 1 WHILE ABHDN[0] NQ NPU$NID[I] AND 
                             I LS CSNPCNT 
        DO
          BEGIN 
          END 
  
        CNST1 = 1;
        CNST2 = 30; 
        CNST3 = 42; 
  
        IF I LS CSNPCNT 
        THEN
          BEGIN 
          SSBSBF(SNM$TXT,CNST1,CNST2,CNST3,B<0,42>NPU$NAME[I]); 
          END 
        ELSE
          BEGIN 
          SSBSBF(SNM$TXT,CNST1,CNST2,CNST3,"   UNKNOWN"); 
          END 
  
  
  
        WCB$WORD[1] = 2 + SNM$TXTL/10;
        WCB$SMID[1] = SMID"TTEXT";
  
        ABHWORD[1] = SNM$TXTL;
        ABHADR[1] = OLDDO[0]; 
  
  
        SSTAQE(P<CNQ>,WCBUF[1],ABH[1],SNM$TXT); 
        CSESLE(ABHDN[0],WCBUF[1],SNM$TXT);
  
  
        NOD$TIM[0] = CTM$CLOCK[0];
  
        WCB$WC[1] = 2 + NOD$TXTL/10;
        WCB$IAF[1] = TRUE;
  
        ABHWORD[1] = NOD$TXTL;
        ABHADR[1] = OLDDO[0]; 
  
        SSTAQE(P<CNQ>,WCBUF[1],ABH[1],NOD$TXT); 
        WCB$IAF[1] = FALSE; 
        CSESLE(ABHDN[0],WCBUF[1],NOD$TXT);
        END 
  
  
      RETURN;                # **** RETURN ****                        #
      END 
      TERM
