*DECK XTERMST 
USETEXT NIPDEF
USETEXT NBT 
USETEXT PT
USETEXT STATTAB 
USETEXT STATTB2 
USETEXT KDIS
PROC XTERMST;                # DAYFILE GLOBAL STATISTICS AT TERMINATION#
*CALL OVLSTAT 
  STARTIMS; 
 #
*1DC  XTERMST 
*     1. PROC NAME           AUTHOR              DATE 
*        XTERMST             P.C.TAM             77/08/02 
* 
*     2. FUNCTIONAL DESCRIPTION.
*        THIS ROUTINE IS A SECONDARY OVERLAY CALLED WHENEVER NAM
*        SHUT DOWN TO DAYFILE GLOBAL STATISTICS.
* 
*     3. METHOD USED. 
*        A. THE FREQUENCY OF CALL OF ALL OVERLAYS ARE CONVERTED TO
*           OCTAL NUMBERS IN DISPLAY CODE AND WRITTEN TO THE DAYFILE. 
*        B. THE VALUES OF ALL STATISTICS VARIABLE UNDER THE COMMON
*           STATTAB ARE CONVERTED TO OCTAL DISPLAY CODES AND DAYFILED.
*        C. REPEAT STEP B FOR MEMORY MANAGER STATISTICS.
* 
*     4. ENTRY PARAMETERS.
*        NONE.
* 
*     5. EXIT PARAMETERS. 
*        NONE 
* 
*     6. COMDECKS CALLED AND SYMPL TEXTS USED.
*        NIPDEF    OPSIZE    OVLSTAT   STATTAB
*        NBT                 NETWORK BUFFER TABLE 
*        PT                  GLOBAL COMDECK 
*        STATTB2
* 
*     7. ROUTINES CALLED. 
*        MCLRIL              CLEAR NIP/PIP INTERLOCK
*        MSETIL              SET NIP/PIP INTERLOCK
*        OCTCON              CONVERT A BINARY NUMBER INTO OCTAL DISPLAY 
*                            CODE NUMBER
*        OCTDIS              CHECK A NUMBER FOR 00B"S AND CONVERT THEM
*                            INTO 55B"S.
*        OMSG                DAYFILE MESSAGE
*        XCDD                CONVERT INTEGER TO DECIMAL DISPLAY 
*        XTRACE              RECORD PROCEDURE CALLS 
* 
*     8. DAYFILE MESSAGES.
*        A. *OVLNAMEXXX=  XXXXXXXXXX* 
*        B. *ST$XXXXX= XXXXXXXXXXXXXXXXXXXX*
* 
*        W A R N I N G - THIS ROUTINE IS LOADED WITH XCLOST, XENDNAM, 
*                        AND OSCEXIT, OR ENDRPV.  THE SUM OF THE SIZES
*                        OF XENDNAM, OSCEXIT, XCLOST AND XTERMST, OR
*                        THAT OF XENDRPV, XCLOST AND XTERMST CANNOT 
*                        EXCEED THE SIZE OF THE PRIMARY 
*CALL OPSIZE
* 
*        THIS ROUTINE IS CALLED BY XENDNAM, OR XENDRPV. 
* 
 #
  STOPIMS;
  
#     EXTERNAL VARIABLES                                               #
  
 XREF 
   BEGIN
   PROC      MCLRIL;         # CLEAR NIP/PIP INTERLOCK                 #
   PROC      MSETIL;         # SET NIP/PIP INTERLOCK                   #
   PROC      OCTDIS;
   PROC      OCTCON;
   PROC      OMSG;
   FUNC      XCDD C(10);     # CONVERT INTEGER TO DECIMAL DISPLAY      #
   PROC      XTRACE;         # RECORD PROCEDURE CALLS                  #
   END
  
  
#     INTERNAL VARIABLES                                               #
  
  
      BASED ARRAY OVLTMP; 
        BEGIN 
        ITEM  OVLPGM      C(0,0,7);    # OVERLAY PGM NAME IN 7 CHAR    #
        ITEM  OVLCNT      I(0,42,18);  # NO OF TIMES THE OVERLAY CALLED#
        ITEM  OVLWD0      U(0,0,WL);
        END 
  
  
      BASED ARRAY ST$TAB S(1);
        ITEM  ST$CNT                 U(0,0,WL); 
  
      ARRAY [0:STAB1NO] S(1); 
      BEGIN 
        ITEM  ST$NMX1        C(0,0,5) = 
                             ["IDLN",   "CNBC",   "NOAP",   "ACB",
                              "ACBX",   "AQ",     "AQX",  "NIB",
                              "INB",    "INC",    "IDB",
                              "IDC",    "ONB",    "ONC",    "ODB",
                              "ODC",    "LNB",    "LNC",    "LDB",
                              "LDC",    "ENB",    "ESB",    "RCL",
                              "LOOP",   "NOL",    "NOC",   "NMS", 
                              "NSC",    "NSI",    "NDA",   "NWR", 
                              "NBR",    "NAW",    "NGE",   "NGS", 
                              "NPU",    "NWA",    "NHR",   "NXS", 
                              "NXP",    "TOL",    "TMS",   "TSC", 
                              "TSI",    "TDA",    "TWR",   "TBR", 
                              "TAW",    "TGE",    "TGS",   "TPU", 
                              "TWA",    "THR",    "TFL",   "TMG", 
                              "TXS",    "TXP",    "TNI",   "THI", 
                              "TT2",    "TT3",    "LOL",   "LMS", 
                              "LSC",    "LSI",    "LDA",   "LWR", 
                              "LBR",    "LAW",    "LGE",   "LGS", 
                              "LPU",    "LWA",    "LHR",   "LFL", 
                              "LMG",    "LXS",    "LXP",   "LNI", 
                              "LHI",    "LT2",    "LT3",   "MXS", 
                              "MNI",    "MHI",    "MT2",   "MT3", 
                              "MXIB"];
      END 
  
      ARRAY ST$REJ [0:3] S(4);
        BEGIN 
        ITEM ST$TYP          C(0,00,10) = ["NET IVT RE", "NET PRU RE",
                                           "PIP IVT RE", "PIP PRU RE"]; 
        ITEM ST$FIL1         C(1,00,10) = [4("JECTS = ")];
        ITEM ST$NUMREJ       C(2,00,04);
        ITEM ST$FIL2         C(2,24,02) = [4(", ")];
        ITEM ST$ET           C(2,36,02);
        ITEM ST$FIL3         C(2,48,02) = [4(", ")];
        ITEM ST$FIL4         C(3,00,05) = [4("NN = ")]; 
        ITEM ST$NODE         C(3,30,03);
        ITEM ST$REJEND       U(3,48,12) = [4(0)]; 
        END 
  
  
      ARRAY [0:STAB2NO] S(1); 
      BEGIN 
        ITEM ST$NMX2         C(0,0,5) = 
                             ["GET",    "GNB",    "REL",    "RNB",
                              "FL",     "FLW",    "FLX",
                              "FLWX",   "FLT",    "FWT",
                              "FBT",    "GBWM",   "GBGC"];
      END 
  
      ARRAY DYFL1 S(3); 
        BEGIN 
        ITEM  OVLPRGM                C(0,0,WC); 
        ITEM  OVLEQU                 C(0,48,1); 
        ITEM  OVLFREQ                C(1,0,WC); 
        ITEM  FILL2A                 U(2,0,WL)=[0]; 
        END 
  
       ARRAY DYFL2 S(4);
         BEGIN
         ITEM  FILL1B                 C(0,0,WC)=["ST$     - "]; 
         ITEM  STNAME                 C(0,18,5);
         ITEM STVALU1                 C(1,0,WC);
         ITEM STVALU2                 C(2,0,WC);
         ITEM  FILL2B                 U(3,0,WL)=[0];
         END
  
       ARRAY TWOWD S(2);
         BEGIN
         ITEM  WORD1                  C(0,0,WC);
         ITEM  WORD2                  C(1,0,WC);
         END
  
       DEF NUMOVL  #OVLNUM-1#;     # NUMBER OF OVERLAYS - 1            #
  
       ITEM I,J;
  
#**********************************************************************#
  
      BEGIN 
      CONTROL IFEQ STAT,1;
  
      CONTROL IFEQ DEBUG,1; 
        XTRACE("XTERM") ; 
      CONTROL FI; 
# 
      LOG NO OF TIMES EACH OVERLAY GET CALLED 
# 
      P<OVLTMP> = LOC(HAPFAILS); # 1ST OVERLAY IN OVLSTAT TABLE        #
      FOR I = 0 STEP 1 UNTIL NUMOVL  # LOOP TO DAYFILE OVLSTAT TABLE   #
      DO                     # STATISTICS                              #
        BEGIN 
        OCTDIS(OVLWD0[I], DYFL1); 
        OVLEQU[0] = "=";
        OCTCON(OVLCNT[I],TWOWD);
        OVLFREQ = WORD2;
        OMSG(DYFL1,0);
        IF KNAMRS[0]
        THEN
          OVLCNT[I] = 0;
        END 
# 
      LOG STATISTICS FROM NIP INTERNAL PROCS
# 
      P<ST$TAB> = LOC(STTBM)+ 1 ; 
      FOR I = 0 STEP 1 UNTIL STAB1NO
      DO
        BEGIN                # LOOP TO DAYFILE ALL STATISTICS          #
        STNAME = ST$NMX1[I]; # COLLECTED IN STATTAB                    #
        OCTCON(ST$CNT[I],TWOWD);
        STVALU1 = WORD1;
        STVALU2 = WORD2;
        OMSG(DYFL2,0);
        IF KNAMRS[0]
        THEN
          ST$CNT[I] = 0;
        END 
# 
      LOG STATISTICS FROM MEMORY MANAGER
# 
      P<ST$TAB> = LOC(ST$GET);
      FOR I = 0 STEP 1 UNTIL STAB2NO
      DO
        BEGIN                # LOOP TO LOG ALL STATISTICS FROM MEMORY M#
        STNAME = ST$NMX2[I];
        OCTCON(ST$CNT[I], TWOWD); 
        STVALU1 = WORD1;
        STVALU2 = WORD2;
        OMSG(DYFL2,0);
        IF KNAMRS[0]
        THEN
          ST$CNT[I] = 0;
        END 
# 
      GET STATISTICS FOR NUMBER OF NPU AND PIP REJECTS
# 
      FOR I = 0 STEP NBTFETNO UNTIL NBTMAXID
      DO
        BEGIN 
        IF NBTIUF[I]
        THEN                 # NBT ENTRY IS IN USE                     #
          BEGIN 
          ST$ET[0] = NBTET[I];  # EQUIPMENT MNEUMONIC                  #
          J = XCDD(NBTHN[I]);# CONVERT HOST NODE NUMBER TO DISPLAY DEC #
          ST$NODE[0] = C<7,3>J; # HOST NODE NUMBER IN DISPLAY DECIMAL  #
          ST$TYP[0] = "NET IVT RE"; 
          J = XCDD(NBTNIREJ[I+4]);  # CONVERT NO OF REJECTS TO DIS DEC #
          ST$NUMREJ[0] = C<6,4>J;  # NUMBER OF NPU REJECTS OF IVT DATA #
          OMSG(ST$REJ,0);    # ISSUE DAYFILE MESSAGE                   #
          ST$TYP[0] = "NET PRU RE"; 
          J = XCDD(NBTNPREJ[I+4]);  # CONVERT NO OF REJECTS TO DIS DEC #
          ST$NUMREJ[0] = C<6,4>J;  # NUMBER OF NPU REJECTS OF PRU DATA #
          OMSG(ST$REJ,0);    # ISSUE DAYFILE MESSAGE                   #
          ST$TYP[0] = "PIP IVT RE"; 
          J = XCDD(NBTPIREJ[I+5]);  # CONVERT NO OF REJECTS TO DIS DEC #
          ST$NUMREJ[0] = C<6,4>J;  # NUMBER OF PIP REJECTS OF IVT DATA #
          OMSG(ST$REJ,0);    # ISSUE DAYFILE MESSAGE                   #
          ST$TYP[0] = "PIP PRU RE"; 
          J = XCDD(NBTPPREJ[I+5]);  # CONVERT NO OF REJECTS TO DIS DEC #
          ST$NUMREJ[0] = C<6,4>J;  # NUMBER OF PIP REJECTS OF PRU DATA #
          OMSG(ST$REJ,0);    # ISSUE DAYFILE MESSAGE                   #
          IF (NBTNIREJ[I+4] + NBTNPREJ[I+4] NQ 0) AND 
             (NOT NAMFAIL                       ) 
          THEN               # NEED TO ZERO NO OF NPU REJECTS          #
            BEGIN 
            MSETIL(0);       # SET NIP/PIP INTERLOCK                   #
            NBTNIREJ[I+4] = 0; # CLEAR NUMBER OF NPU IVT REJECTS       #
            NBTNPREJ[I+4] = 0; # CLEAR NUMBER OF NPU PRU REJECTS       #
            MCLRIL;          # CLEAR NIP/PIP INTERLOCK                 #
            END 
          NBTPIREJ[I+5] = 0; # CLEAR NUMBER OF PIP IVT REJECTS         #
          NBTPPREJ[I+5] = 0; # CLEAR NUMBER OF PIP PRU REJECTS         #
          END 
        END 
  
      CONTROL FI; 
      END                    # XTERMST                                 #
      TERM
