*DECK NETRR 
USETEXT AIPDEF
USETEXT NP$MODE 
USETEXT NP$DB 
USETEXT NP$NWL
USETEXT NP$ONAM 
USETEXT NP$STAT 
USETEXT NP$ZHDR 
PROC NETRR; 
*IF DEF,IMS 
 #
*1DC  NETRR 
* 
*     1. PROC NAME         AUTHOR               DATE
*        NETRR             NGUYEN, L.T.         88/04/12
* 
*     2. FUNCTIONAL DESCRIPTION 
*        PROCESSES THE NETRR CALL FROM AN APPLICATION.
* 
*     3. METHOD USED
*          IF DEBUG DEFINED, LOG NETRR ENTRY IN ZZZZZDN FILE. 
*          SEND NETRR WORKLIST TO NIP.
* 
*     4. ENTRY CONDITIONS 
*          NONE.
* 
*     5. EXIT CONDITIONS
*          NONE.
* 
*     6. COMDECKS CALLED AND SYMPL TEXTS USED.
*        AIPDEF    NP$CRT 
*        NP$DB     NP$DBA    NP$MODE   NP$NWL 
* 
*     7. PROCEDURES/FUNCTIONS CALLED
*        NP$PIOE - PROCESS I/O ERROR ON DEBUG LOG FILE
*        NP$RTIM - RETURNS CURRENT TIME FROM DEADSTART IN SECONDS 
*                  AND MILLISECONDS 
*        NP$SEND - SEND WORKLIST TO NIP.
*        NP$WRTO - WRITE ONE WORD TO FILE.
*        NP$WRTW - WRITES WORDS TO FILE - NOS DATA TRANSFER MACRO 
*        NP$ERR  - DAYFILE ERROR MESSAGE AND ABORT. 
* 
*     8. DAYFILE/DIAGNOSTIC MESSAGES
*          NONE.
 #
*ENDIF
# 
      AIP RESET 
# 
      XREF
        BEGIN 
        PROC NP$CLK  ;
        PROC NP$DATE ;
        PROC NP$ERR ; 
        PROC NP$PIOE ;
        PROC NP$RTIM ;
        PROC NP$SEND ;
        PROC NP$WRTO ;
        PROC NP$WRTR ;
        PROC NP$WRTW ;
        END 
  
      ITEM TIMEWD U     ; 
  
*IF DEF,DEBUG 
  
#     DEBUG OPTION ARRAY DEFINITIONS                                   #
  
      ARRAY RSTLINE P(2);    # LOGS NETRR   ENTRY                      #
        BEGIN 
        ITEM RST$TIM    U(0,0,60);      # TIME OF CALL TO NETRR        #
        ITEM RST$CAL    U(1,24,AL);     # NETRR   CALLING ADDRESS      #
        ITEM RST$OPC    I(1,54,6);      # NETRR   OPCODE (=12)         #
        END 
*ENDIF
  
      BEGIN             # NETRR                                        #
      IF NOT ACCEPTED 
      THEN
        NP$ERR("34") ;
  
*IF DEF,DEBUG 
#     FORMAT LOG ENTRY FOR NETRR   CALL                                #
  
      P<CALLADR> = LOC(NETRR) ;    # GET CALL ADDRESS                  #
  
      NP$RTIM(TIMEWD);       # GET REAL TIME SINCE DEADSTART           #
      RST$TIM[0] = TIMEWD;
      RST$CAL[0] = CALLADDR[0]; 
      RST$OPC[0] = OP$RR ;
      NP$WRTW(DB$FET,RSTLINE,2);        # WRITE NETRR   TO DEBUG LOG   #
# 
      UPDATE MSGCNT IN NSUP COMMUNICATION  WORD.
# 
      MSGCNT[0] = MSGCNT[0] + 1;
# 
      CHECK FOR I/O ERROR IN DEBUG LOG FILE 
# 
      IF FET$AT[0] NQ 0 
      THEN                             # I/O ERROR HAS OCCURRED ON FILE#
        BEGIN 
        NP$PIOE(DB$FET);               # PROCESS I/O ERROR             #
        END 
*ENDIF
# 
        RESET VARIABLES IN AIP
# 
        NEXT = NHDR + 1;                # SET NWL COUNTER              #
        SPACE$LEFT=LWL;                 # SET NWL POINTER              #
        N$AWL[0] = 0;                   # CLEAR AWL RESPONSE INDICATORS#
# 
        RESET POINTERS FOR SUPERVISORY MESSAGE BUFFER - SMB 
# 
        HEAD = FIRST;                   # FIRST IS START OF SMB        #
        FOOT = HEAD;                    # SMB IS EMPTY: NO MESSAGES    #
        NEXTSMLEN = 0;                  # NO SUPERVISORY MSGS IN NIP   #
# 
        RESET POINTERS FOR AIP UPLINE DATA MESSAGE BUFFER - GMB 
# 
        GMBHEAD = 1;                    # INITIAL INDX FOR FWA TO WRITE#
        GMBFOOT = 1;                    # INITIAL INDX FOR LWA TO WRITE#
        GMBUSE = FALSE;                 # INIT GMB NOT IN USE FLAG     #
        GMBTRUNC = FALSE;               # INIT NO TRUNCATION OF DATA   #
        GMBLAST = 1;                    # INITIAL INDEX FOR END OF BUF #
        GMBCN = 0;                      # INIT CON NUMBER FOR GMB      #
        GMBLN = 0;                      # INIT LIST NUMBER FOR GMB     #
        GMMESIZE = 0;                   # INIT FOR NO GMM ENTRY NEEDED #
# 
        SET UP NWL HEADER 
# 
        HDR[NHDR]   = LOC(HDR[NHDR]) + 1;#RETURN AWL AFTER CONTROL WDS# 
        HDR$P[NHDR] = PN ;             # APPLICATION NUMBER            #
        HDR$N[NHDR] = 1;                #ONLY 1 ENTRY, I.E. THE NETRR # 
        HDR$W[NHDR] = 1 + NONBSIZE; 
# 
        FORMAT NETRR NWL ENTRY
# 
        NWL[NEXT] = 0 ;                 #CLEAR AND BUILD OP WORD      # 
        NWL$OP[NEXT] = OP$RR; 
        NWL$ID[NEXT] = AWLID;  #UNPROCESSED WORKLIST ID = AWLID (=11) # 
        NWL$BS[NEXT] = NRRBSIZE;
  
# 
        SEND NETRR NWL TO NIP 
# 
        SENDGETMM = FALSE;
        SENDGETSM = FALSE;
  
        NP$SEND;
  
        SENDGETMM = TRUE; 
        SENDGETSM = TRUE; 
  
        RETURN; 
  
      END #NETRR #
TERM
