*DECK HPNONVF 
USETEXT NIPDEF
USETEXT ACB 
USETEXT APPSTAT 
USETEXT AT
USETEXT AWLNTRY 
USETEXT DUMPFLG 
USETEXT INPARUT 
USETEXT KDIS
USETEXT KHDRX 
USETEXT MSGIDX
USETEXT NWLNTRY 
USETEXT OVERLAY 
USETEXT PARAMS
USETEXT PT
USETEXT SUPMSG
      PRGM HPNONVF;          # PROCESS *NET ON* RESPONSE FROM  NVF     #
  
 STARTIMS;
 #
*1DC  HPNONVF 
* 
*     1. PROC NAME           AUTHOR              DATE 
*        HPNONVF             E. GEE              77/06/02 
* 
*     2. FUNCTIONAL DESCRIPTION.
*          PROCESS NET/ON/N SUP MSG FROM NVF
* 
*     3. METHOD USED. 
*          VALIDATE APPLICATION NUMBER IN NET/ON/R SUP MSG
*          FILL IN FIELDS OF AWL NETON ENTRY
*          CLEAR WAITING-FOR-NETON-RESPONSE FLAG IN AT ENTRY
*          SCHEDULE APPLICATION NETTING ON
* 
*     4. ENTRY PARAMETERS.
*          WLADDR            CURRENT NWL ENTRY (NETPUT) ADDRESS 
* 
*     5. EXIT PARAMETERS. 
*          AWLCB             =1,THE COMPLETE BIT
*          AWLRC             RETURN CODE
*          AN                 APPLICATION NUMBER
* 
* 
*     6. COMDECKS CALLED AND SYMPL TEXTS USED.
*        ACB     APPSTAT     AT 
*        NIPDEF     KDIS     NWLNTRY     OPSIZE 
         PT    SUPMSG 
* 
*     7. ROUTINES AND OVERLAYS CALLED.
*          KPUT              UPDATE K-DISPLAY INFORMATION 
*          OMSG              ISSUE DAYFILE MESSAGES 
*          OSCHAPP           SCHEDULE APPLICATION 
*          XTRACE            TRACES CALLS 
* 
*     8. DAYFILE MESSAGES.  NONE
* 
*        THIS PROGRAM IS A PRIMARY OVERLAY LOADED BY SUBROUTINE OVLCALL.
*        WHEN EXECUTION HAS COMPLETED, A JUMP IS MADE TO LOCATION RJMAIN
*        TO RETURN TO THE CALLING PROGRAM.
* 
*        W A R N I N G - THIS PROGRAM CANNOT EXCEED THE PRIMARY 
*CALL OPSIZE
* 
*        THIS OVERLAY IS CALLED BY HPPUT. 
* 
 #
 STOPIMS; 
# 
                    EXTERNAL VARIABLES
# 
 XREF BEGIN 
   PROC HSFAPPL;             #  I S S U E    F A I L / A P P L         #
   PROC HSNOFF;              # I S S U E   N E T / O F F   SUP/MSG     #
   PROC KPUT ;
   PROC OSCHAPP;             # SCHEDULER APPLICATION                   #
   PROC OMSG;                # ISSUE DAYFILE MSG                       #
   PROC RDUMP;               # DUMP NIP FL                             #
   PROC ABORT ; 
   PROC XTRACE;              # TRACE CALLS                             #
   LABEL RJMAIN;             # RETURN ADDRESS IN OVLCALL               #
   END
# 
                    INTERNAL VARIABLES
# 
 ITEM AN; 
 CONTROL IFEQ DEBUG,1;
   ARRAY BADBUFWA P(4); 
     BEGIN
     ITEM BADMSG C(0,0,34) = ["BAD AN NET/ON SM RESPONSE FROM NVF"];
     ITEM EBADMSG U(3,36,24) = [0]; 
     END
 CONTROL FI;
#**********************************************************************#
      BEGIN 
      CONTROL IFEQ DEBUG,1 ;
        XTRACE("HPNVF") ; 
      CONTROL FI; 
      P<NWLENTRY> = WLADDR;  # WORKLIST ADDRESS                        #
      P<SUPMSG>   =     LOC(NWLEABH[0]) + ABHSIZE; # SUP MSG ADDRESS   #
      P<SMNVF> = P<SUPMSG>;  # BASE NET/ON TEMPLATE                    #
# 
      CHECK IF VALID AN IN NET/ON/R SUP MSG 
# 
      AN = NETAN[0];         #APPLICATION NUMBER                       #
      P<ACB> = ATACBA[AN];   # ACB ADDRESS                             #
      CONTROL IFEQ DEBUG,1; 
        IF AN LQ NVFAN OR AN GR ATHAN OR NOT ATNVFR[AN] 
           OR ATACBA[AN] EQ 0 
        THEN                 # INVALID AN IN NET/ON/R SUP/MSG          #
          BEGIN 
          OMSG(BADBUFWA,0);    # SEND NIP DAYFILE MSG                  #
          ABORT(0,0) ;
          END 
      CONTROL FI; 
# 
      UPDATE APPLICATION NAME TO WHAT WAS RETURNED FROM NVF 
# 
      ACBANAME[0] = NETANAM[0] ;
      IF KDST[0]
         AND ACBKNDX[0] NQ 0
         AND ACBKNDX[0] GQ KDAPPST[0] 
         AND ACBKNDX[0] LQ KDAPPND[0] 
      THEN
        KPUT(KHDRNP[0],ACBKNDX[0]-KDAPPST[0],KPAPNM,ACBANAME[0]) ;
  
#     CLEAR WAITING-FOR-NETON-RESPONSE FLAG IN AT                      #
      ATNVFR[AN] = FALSE; 
      IF NETK[0]
      THEN
            BEGIN 
            ATK[AN] = TRUE; 
            IF KDST[0]
              AND ACBKNDX[0] NQ 0 
              AND ACBKNDX[0] GQ KDAPPST[0]
              AND ACBKNDX[0] LQ KDAPPND[0]
            THEN
              KPUT(KHDRNP[0],ACBKNDX[0]-KDAPPST[0],KPAPI,"N") ; 
            END 
      ATXFR[AN] = NETXFER[0] ;     # SAVE INFOR ABOUT XFR IN AT        #
  
      ATPRU[AN] = NETPRU[0] ;      # FLAG FOR PRU APPLICATION IF ON    #
  
      IF NOT ATNVFB[AN]      # IF NOT WAITING TO SEND OTHER SM TO NVF  #
      THEN                   # PROCESS NET/ON RESPONSE FROM NVF        #
        BEGIN 
# 
        FILL IN FIELDS OF AWL NETON ENTRY 
# 
        P<AWLENTRY> = LOC(ACBAWL0[0]);         # AWL NETON ENTRY ADDR  #
        AWLCB[0] = 1; 
        AWLRC[0] = NETRC[0]; # NET ON RETURN CODE                      #
        AWLNIN[0] = INPNIN[1] ; 
  
        AWLEWD1[0] = AN;     # APPLICATION NUMBER OF APP NETTING ON    #
  
# 
        SCHEDULE APPLICATION NETTING ON 
# 
        OSCHAPP(P<ACB>);
        END 
      GOTO RJMAIN;           # RETURN TO CALLING PROGRAM               #
      END 
TERM
