*DECK NETSTC
*IF,DEF,STAT
USETEXT NP$STAT 
*ENDIF
PROC NETSTC((OPTION),STSTAT); 
*IF DEF,IMS 
 #
*1DC  NETSTC
*     1. PROC NAME           AUTHOR             DATE
*        NETSTC              S. KRULEVITCH      77/07/11
* 
*     2. FUNCTIONAL DESCRIPTION 
*        PROCESSES THE NETSTC CALL FROM AN APPLICATION. STATISTICS
*        LOGGING IS STARTED OR TERMINATED ACCORDING TO OPTION = 0 
*        OR 1, WHEN AIP IS COMPILED WITH *DEFINE STAT. OTHERWISE
*        STATUS = 1  IS RETURNED INDICATING THE STATISTICS LOGGING
*        OPTION IS NOT ON.
* 
*     3. METHOD USED
*        MOST OF THE LOGIC IN THIS PROCEDURE IS CONDITIONALLY COMPILED. 
*        WHEN *DEFINE,STAT IS NOT USED, STSTAT IS SET EQUAL TO 1 AND
*        CONTROL IS RETURNED TO CALLER. WHEN *DEFINE, STAT IS USED, 
*        STATISTICS LOGGING IS TURNED ON IF OPTION = 0  OR OFF IF 
*        OPTION = 1, AND STSTAT IS SET EQUAL TO ZERO. THE CALL TO NETSTC
*        IS LOGGED ON FILE ZZZZZSN. 
* 
*     4. ENTRY CONDITIONS 
*        OPTION=0  TURN STATISTICS LOGGING ON 
*               NOT 0 TURN STATISTICS LOGGING OFF 
* 
*     5. EXIT CONDITIONS
*        STSTAT = 0 STATISTICS LOGGING AVAILABLE
*               NOT 0 STATISTICS LOGGING NOT AVAILABLE. 
*        STATON IS SET TRUE OR FALSE AS REQUESTED BY OPTION EQUAL TO
*                       0   OR   1. 
* 
*     6. COMDECKS CALLED AND SYMPL TEXTS USED.
*        NP$CRT    NP$STAT
* 
*     7. PROCEDURES/FUNCTIONS CALLED
*        NP$CLK 
*        NP$DATE
*        NP$PIOE - PROCESS I/O ERROR ON FILE
*        NP$SPRT
*        NP$TIM 
*        NP$WRTW
* 
*     8. DAYFILE/DIAGNOSTIC MESSAGES
*        NONE 
* 
* 
 #
      CONTROL EJECT;
*ENDIF
    BEGIN 
*CALL NP$CRT
#                                                                     # 
#     FORMAL PARAMETERS                                               # 
#                                                                     # 
      ITEM
        OPTION          I,              #0 TO TURN ON LOGGING,ELSE 1  # 
        STSTAT          I;              #0 IF STAT IS DEFINED,ELSE 1  # 
*IF DEF,STAT
#                                                                     # 
#     EXTERNAL ROUTINES                                               # 
#                                                                     # 
      XREF
        BEGIN 
        PROC NP$CLK;
        PROC NP$DATE; 
        PROC NP$PIOE;                  # PROCESS I/O ERROR             #
        PROC NP$SPRT;                   #DUMPS STATISTICS TO ZZZZZSN  # 
        PROC NP$TIM;                    #GETS ACCUMULATED CPU TIME    # 
        PROC NP$WRTW; 
        END 
#                                                                     # 
#     LOCAL DECLARATIONS                                              # 
#                                                                     # 
      ITEM CHARWD       C(10);
      ARRAY STMSG       P(5); 
        ITEM
          ST$CC     C(0,0,10)=["0         "],     #DOUBLE SPACE       # 
          ST$MSG1   C(1,0,35)=["NAM STATISTICS GATHERING "],
          ST$MSG2   C(3,30,10); 
      ARRAY STMSGA      P(6); 
        ITEM
          ST$CCA    C(0,0,10)=["          "],     #SINGLE SPACE       # 
          ST$MSG3       C(1,0,13)=["NETSTC  DATE "],
          ST$DATE       C(2,18,10), 
          ST$MSG4       C(3,18,7)=["   TIME"],
          ST$TIME       C(4,0,10),
          ST$EOLA       I(5,0,60)=[0];
*ENDIF
#                                                                     # 
#     NETSTC EXECUTION BEGINS HERE                                    # 
#                                                                     # 
  
      ENTRY PROC QTSTC((OPTION),STSTAT);  # QTRM ENTRY POINT FOR PROC  #
  
      STSTAT = 1; 
*IF DEF,STAT
      IF OPTION EQ 0
      THEN
        BEGIN 
        ST$MSG2 = "STARTED   "; 
        STATON = TRUE;                  #TURN ON STATISTICS GATHERING # 
        NP$TIM(ST$CLK[0]);              #CPU STARTING TIME            # 
        END 
      ELSE
        BEGIN 
        ST$MSG2 = "TERMINATED"; 
        STATON = FALSE; 
        END 
      NP$DATE(CHARWD);      #PUT CURRENT DATE IN OUTPUT LINE          # 
      ST$DATE = CHARWD; 
      NP$CLK(CHARWD);       #GET TIME IN DISPLAY CODE                 # 
      ST$TIME = CHARWD;     #PUT DISPLAY CODE TIME IN CHARACTER ARRAY # 
      NP$WRTW(SN$FET,STMSG,5);
      NP$WRTW (SN$FET,STMSGA,6);
# 
      CHECK FOR I/O ERROR IN STATISTICS FILE
# 
      IF SN$AT[0] NQ 0
      THEN                             # I/O ERROR HAS OCCURRED ON FILE#
        BEGIN 
        NP$PIOE(SN$FET);               # PROCESS I/O ERROR             #
        END 
      IF NOT STATON 
      THEN
        NP$SPRT; #WHEN STATISTIC GATHERING IS TERMINATED THEN DUMP    # 
                 #STATISTICS TO ZZZZZSN.                              # 
      STSTAT = 0; 
*ENDIF
      RETURN; 
  END #NETSTC#
TERM
