*DECK HCNONFL 
USETEXT NIPDEF
USETEXT APPSTAT 
USETEXT AWLNTRY 
USETEXT DRHDR 
USETEXT FLIST 
USETEXT INPARUT 
USETEXT NWLHEAD 
USETEXT NWLNTRY 
USETEXT PARAMS
USETEXT SCPCOM
 PRGM HCNONFL;               # CREATE NETON FUNCTION LIST              #
  
 STARTIMS;
 #
*1DC  HCNONFL 
* 
*     1. PROC NAME           AUTHOR              DATE 
*        HCNONFL             E. GEE              77/09/14 
*                            N. NICHOLAS         80/09/12 
* 
*     2. FUNCTIONAL DESCRIPTION.
*          CREATE NETON FUNCTION LIST 
* 
*          HCNONFL IS CALLED HERE IN TWO CASES. 
* 
*          1. NVF NETS ON,IN THIS CASE AN ACB 
*             FOR NVF EXISTS AND NETS ON
*             IS ACCEPTED.
* 
*          2. A REGULAR APPLICATION TRIES TO NETON
*             AND REJECTED.  IN THIS CASE NO ACB EXISTS.
* 
*     3. METHOD USED. 
*             CREATE AWL NETON ENTRY OUTSIDE OF ACB.
*          CREATE SCP FUNCTION LIST FOR WRITING BACK NETON AWL
*          IF NVF NETTING ON, ALSO SET SCP LONG TERM CONNECTION 
* 
*     4. ENTRY PARAMETERS.
*          AWLA              UCP AWL ADDRESS
*          CBA               UCP COMPLETION BIT ADDRESS 
*          JOBID             UCP JOB ID WORD
*          NWLADDR           ADDR OF BUF TO HOLD NETON AWL ENTRY
*          PARAMS1           NONZERO VALUE (AN) IF NVF NETTING ON 
*          PARAMS4           NETON REJECT RETURN CODE FROM NVF
* 
*     5. EXIT PARAMETERS. 
*          PARAMS7           ADDR OF SCP FUNCTION LIST
* 
*     6. COMDECKS CALLED AND SYMPL TEXTS USED.
*        APPSTAT   AWLNTRY   DRHDR     FLIST
*        NIPDEF    NWLHEAD   NWLNTRY   OSSIZE 
*        PARAMS    SCPCOM 
* 
*     7. ROUTINES AND OVERLAYS CALLED.
*          XTRACE            RECORD PROCEDURE CALLS 
* 
*     8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION.
* 
*        THIS PROGRAM IS A SECONDARY 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 SECONDARY 
*CALL OSSIZE
* 
*        THIS OVERLAY IS CALLED BY HPNON. 
* 
 #
 STOPIMS; 
# 
                    EXTERNAL REFERENCES 
# 
XREF
   BEGIN
   PROC XTRACE; 
   LABEL RJMAIN;
   END
# 
                    INTERNAL REFERENCES 
  
                       N O N E
# 
  
#****************  E X E C U T A B L E   C O D E  *********************#
  
      BEGIN 
  
      CONTROL IFEQ DEBUG,1; 
        XTRACE("HCNON") ; 
      CONTROL FI; 
  
# 
      CREATE NETON AWL ENTRY
# 
      P<DRHDRWD> = NWLADDR;  # ADDR OF BUF TO HOLD NETON AWL ENTRY     #
      CMWORD[0] = 0;
      BLKID[0] = MOUTIDVALUE; # BLK ID FOR MSG TO BE WRITTEN TO APP    #
      BLKBS[0] = AWLNSIZE;   # SIZE OF AWL NETON ENTRY                 #
# 
      CREATE AWL NETON ENTRY
# 
      P<AWLENTRY> = NWLADDR + BLKHSIZE; 
      AWLEAIPH[0] = 0;
      AWLRC[0] = PARAMS4;    # SYSTEM CONTROL POINT  RETURN CODE (RC)  #
      AWLOP[0] = WLOPNON;    # NETON OPCODE                            #
      AWLCB[0] = 1;          # SET OPCODE COMPLETION BIT               #
      AWLNIN[0] = INPNIN[1]; # CURRENT INVOCATION NUMBER               #
      AWLEWD1[0] = PARAMS1;  # APPLICATION NUMBER IN THE ( AT ) TABLE  #
# 
      CREATE SCP FUNCTION LIST FOR NETON RESPONSE 
# 
      P<FLHEAD> = NWLADDR + AWLNSIZE; # ADDR OF BUF TO HOLD FUNC LIST  #
      FLWD0[0] = 0; 
      FLSCPA[0] = NWLADDR + AWLNSIZE + FLSIZE; # ADDR OF SF.LIST ENTRYS#
      FLJOBID[0] = JOBID;    # JOB ID WORD                             #
      FLFP[0] = 2;
      P<FLE> = P<FLHEAD> + FLSIZE; # ADDR OF FIRST SF.LIST ENTRY       #
      FLEWD0[0] = 0;
      FLEFP[0] = AWLNSIZE - BLKHSIZE; # NO OF WDS TO WRITE TO APP      #
      FLEUCPA[0] = AWLA;     # UCP ADDR TO WRITE NETON RESPONSE        #
      FLESCPA = NWLADDR + BLKHSIZE; # ADDR OF AWL NETON ENTRY          #
      FLEFC[0] = SFWRITE;    # SF.WRITE SCP FUNCTION                   #
# 
             CHECK IF APPLICATION NUMBER (PARAMS1) = NON ZER0 
# 
      IF PARAMS1 NQ 0 
      THEN                    # THIS IS NVF NETING ON                  #
        BEGIN                # MUST SET LONG TERM CONNECTION WITH SUP  #
        P<FLE> = P<FLE> + FLESIZE;
        FLEWD0[0] = 0;
        FLEFC[0] = SFSLTC;   # SF.SLTC SCP FUNCTION                    #
        FLID[0] = FLIDVALUE; # FUNCTION LIST BLOCK ID VALUE            #
        FLBS[0] = FLSIZE + 2*FLESIZE; # SIZE OF FUNCTION LIST          #
        FLAN[0] = PARAMS1;   # APPLICATION NUMBER (AN) IN (AT ENTRY)   #
        END 
      ELSE                   # REJECTED NETON OF NON-SUP APP           #
        BEGIN 
        FLBS[0] = SCPSIZE + 2*FLESIZE; # SIZE OF (NO ACB) FUCN LIST    #
        FLID[0] = NAFLIDVALUE; # (NO ACB) FUNCTION LIST ID VALUE       #
        P<FLE> = P<FLE> + FLESIZE;
        FLEWD0[0] = 0;
        FLEUCPA[0] = CBA;    # UCP COMPLETION BIT ADDR                 #
        FLEFC[0] = SFENDT;
        END 
      PARAMS7 = NWLADDR + AWLNSIZE; # ADDR OF FUNC LIST                #
      GOTO RJMAIN;
      END 
TERM
