*DECK     CSSAIN
USETEXT TEXTCS; 
USETEXT TXCMDCS;
USETEXT TEXTSS; 
USETEXT TXTAPSS;
USETEXT TXTSMCS;
USETEXT TXTSUSS;
PROC CSSAIN;
# TITLE CSSAIN - ACTION INFO COMMAND #
  
      BEGIN # CSSAIN #
  
# 
**    CSSAIN - ACTION INFO COMMAND. 
* 
*     C. BRION          82/06/15. 
* 
*     THIS PROCEDURE PERFORMS THE PROCESSING FOR THE INFO COMMAND.
* 
*     PROC CSSAIN 
* 
*     ENTRY:  
* 
*       HDRCMD = THE COMMAND HEADER WORD. 
*       PARMS = ARRAY THAT HOLDS THE COMMAND TEXT, THE SYNTAX PARAMETER 
*               LIST AND THE ADDRESS PARAMETER LIST.
* 
*     EXIT: 
* 
*       A STATUS LINE FOR EACH NPU AND OPERATOR CURRENTLY ACTIVE TO 
*       CS IS ISSUED TO THE ORIGIN OPERATOR VIA AN ENTRY TO THE 
*       CONNECTION TRAFFIC QUEUE. 
* 
# 
  
  
  
  
# 
****  PROC CSSAIN XREF LIST 
# 
  
      XREF
        BEGIN 
        PROC SSBSBF;                     # SS-STORE BIT FIELD # 
        PROC SSTAQE;                     # SS-ACCEPT QUEUE ENTRY #
        FUNC XCDD;                       # MACREL-DCD INTEGER TO CHAR#
        END 
# 
****
# 
  
# 
*     PROC CSSAIN ITEM DEFS 
# 
  
      ITEM CNST1        I;               # CONSTANT 1 # 
      ITEM CNST2        I;               # CONSTANT 2 # 
      ITEM CNST3        I;               # CONSTANT 3 # 
      ITEM NPUORD       I;               # NPU ORDINAL #
      ITEM OCBORD       I;               # OCB ORDINAL #
      ITEM I            I;
  
# 
*     PROC CSSAIN ARRAY DEFS
# 
  
  
# 
*     BLANKLINE - BLANK LINE FOR DISPLAY. 
# 
  
      ARRAY BLANKLINE [00:00] S(1); 
        BEGIN 
        ITEM BLA$TXT0   C(00,00,01) = [" "];
        ITEM BLA$ZERO   U(00,06,54) = [0];
        END 
  
  
  
# 
*     NPLINE - MSG ARRAY FOR NPU INFO LINE. 
# 
  
      ARRAY NPLINE [00:00] S(4);
        BEGIN 
        ITEM NPL$TXT0   C(00,00,04) = ["NPU:"]; 
        ITEM NPL$NPNAME C(00,24,07);            # NPU NAME #
        ITEM NPL$TXT1   C(01,06,01) = [","];
        ITEM NPL$NID    C(01,12,03);            # NPU NODE ID # 
        ITEM NPL$TXT2   C(01,30,01) = [","];
        ITEM NPL$STATE  C(01,36,02);            # NPU STATE # 
        ITEM NPL$TXT3   C(01,48,01) = [","];
        ITEM NPL$NGO    C(01,54,06);            # NEED GO STATE # 
        ITEM NPL$TXT4   C(02,30,01) = [","];
        ITEM NPL$TNAM   C(02,36,07);            # TERM NAME # 
        ITEM NPL$ZBYT   U(03,18,42) = [0];
        END 
  
# 
*     OPLINE - MSG ARRAY FOR OPERATOR INFO LINE.
# 
  
      ARRAY OPLINE[00:00] S(4); 
        BEGIN 
        ITEM OPL$TXT0   C(00,00,04) = ["NOP:"]; 
        ITEM OPL$TNAM   C(00,24,07);           # OP TERMINAL NAME # 
        ITEM OPL$TXT1   C(01,06,01) = [","];
        ITEM OPL$UNAM   C(01,12,07);           # USER NAME #
        ITEM OPL$TXT2   C(01,54,02) = [", "]; 
        ITEM OPL$ACN    U(02,06,18);           # ACN VALUE #
        ITEM OPL$CTL    C(02,24,05);           # CONTROL TEXT # 
        ITEM OPL$ZERO   U(02,54,06) = [0];
        ITEM OPL$ZERO2  I(03,00,60) = [0];
        END 
  
  
# 
*     TN - TERMINAL NAME BUFFER TO MAKE THE NAME RIGHT JUSTIFIED IN 
*     THE CM WORD.
# 
      ARRAY TN [00:00] S(1);
        BEGIN 
        ITEM TN$NAME    C(00,18,07);
        END 
  
  
  
  
  
  
# 
* PROC CSSAIN START 
# 
  
  
# 
*     INITIALIZE OUTGOING ENTRY AND LOCAL BIT MOVE VARIABLES. 
# 
  
      WCB$WORD[1] = 0;
      ABHWORD[1] = 0; 
      ABHADR[1] = HDR$OPORD[0];          # OCB ORD FIELD #
      WCB$SMID[1] = SMID"TTEXT";
  
      OCBORD = ABHADR[1]; 
  
  
# 
*     SET UP DISPLAY STARTING WITH BLANK LINE.
# 
  
      WCB$WC[1] = 3;
      SSTAQE(P<CNQ>,WCBUF[1],ABH[1],BLANKLINE[0]);
  
  
      WCB$WC[1] = 6;
      FOR NPUORD = 0 STEP 1 WHILE NPUORD LS CSNPCNT 
      DO
        BEGIN 
        IF NPU$STAT[NPUORD] NQ SUPSTAT"SUPLOST" 
        THEN
          BEGIN 
          NPL$NPNAME[0] = NPU$NAME[NPUORD]; 
          NPL$NID[0] = NPU$DNID[NPUORD];
  
          IF NPU$CNOP[NPUORD] NQ 0
          THEN
            BEGIN 
            NPL$TXT4[0] = ",";
            TN$NAME[0] = OC$TNAM[NPU$CNOP[NPUORD]]; 
            CNST1 = 2;
            CNST2 = 36; 
            CNST3 = 42; 
            SSBSBF(NPLINE,CNST1,CNST2,CNST3,TN);
            END 
          ELSE
            BEGIN 
            CNST1 = 2;
            CNST2 = 30; 
            CNST3 = 48; 
            SSBSBF(NPLINE,CNST1,CNST2,CNST3," "); 
            END 
  
          IF NPU$STAT[NPUORD] EQ SUPSTAT"SUP" 
          THEN
            NPL$STATE[0] = "AC";
          ELSE
            NPL$STATE[0] = "MI";
  
          CNST1 = 1;
          CNST2 = 54; 
          CNST3 = 36; 
          IF NPU$GFLAG[NPUORD]
          THEN
            BEGIN 
            TN$NAME[0] = " NEEDGO"; 
            SSBSBF(NPLINE,CNST1,CNST2,CNST3,TN);
            END 
          ELSE
            BEGIN 
            SSBSBF(NPLINE,CNST1,CNST2,CNST3," "); 
            END 
  
          SSTAQE(P<CNQ>,WCBUF[1],ABH[1],NPLINE[0]); 
          END 
        END # FOR NPUORD #
  
  
  
  
      WCB$WC[1] = 6;
      FOR OCBORD = HOPORD$ STEP 1 WHILE OCBORD LQ MAXACN$ 
      DO
        BEGIN 
  
        IF OC$STATE[OCBORD] 
        THEN
          BEGIN 
  
          IF OC$TYPE[OCBORD] EQ OPTYP"HOP"
          THEN
            BEGIN 
            OPL$TXT0[0] = "HOP:"; 
            END 
          ELSE IF OC$TYPE[OCBORD] EQ OPTYP"NOP" 
          THEN
            BEGIN 
            OPL$TXT0[0] = "NOP:"; 
            END 
          ELSE
            BEGIN 
            OPL$TXT0[0] = "DOP:"; 
            END 
  
          TN$NAME[0] = OC$TNAM[OCBORD]; 
          CNST1 = 0;
          CNST2 = 24; 
          CNST3 = 42; 
          SSBSBF(OPLINE,CNST1,CNST2,CNST3,TN);
          OPL$UNAM[0] = OC$UNAM[OCBORD];
          OPL$ACN[0] = XCDD(OC$ACN[OCBORD]); # CONVERT ACN TO CHARS # 
          IF OCBORD EQ CSACNOP               # IF CONTROL OP #
          THEN
            OPL$CTL[0] = ",AUTO"; 
          ELSE
            OPL$CTL[0] = "     "; 
  
          SSTAQE(P<CNQ>,WCBUF[1],ABH[1],OPLINE[0]); 
          END 
  
        END 
  
      WCB$WC[1] = 3;
      WCB$IAF[1] = TRUE;
      SSTAQE(P<CNQ>,WCBUF[1],ABH[1],BLANKLINE[0]);
  
      END # CSSAIN #
  
 TERM 
