*DECK HPNONSR 
USETEXT NIPDEF
USETEXT APPSTAT 
USETEXT AWLNTRY 
USETEXT DRHDR 
USETEXT DUMPFLG 
USETEXT FLIST 
USETEXT MSGIDX
USETEXT NWLHEAD 
USETEXT PARAMS
USETEXT SCPCOM
 PRGM HPNONSR;               # PROCESS NONZERO SF.STAT RETURN CODE     #
  
  
 STARTIMS;
 #
*1DC  HPNONSR 
* 
*     1. PROC NAME           AUTHOR              DATE 
*        HPNONSR             E. GEE              77/07/27 
* 
*     2. FUNCTIONAL DESCRIPTION.
*          PROCESS NONZERO SF.STAT RETURN CODE
* 
*     3. METHOD USED. 
*          IF BAD RETURN CODE, DUMP NIP-S FIELD LENGTH
*          IF APP IS SWAPPED OUT, REJECT NETON WITH RC=1.  CREATE AWL 
*            NETON ENTRY AND SCP FUNCTION TO WRITE AWL BACK AND CLEAR 
*            SHORT TERM CONNECTION. 
* 
*     4. ENTRY PARAMETERS.
*          NWLADDR           ADDR OF NWL (SF.STAT SCP) BUFFER 
* 
*     5. EXIT PARAMETERS. 
*          PARAMS4           ADDR OF SCP FUNCTION LIST IF RETURN CODE 
*                            WAS APP-SWAPPED-OUT
* 
*     6. COMDECKS CALLED AND SYMPL TEXTS USED.
*        APPSTAT     AWLNTRY     DRHDR
*        FLIST     NIPDEF     NWLHEAD 
*        PARAMS    SCPCOM 
* 
*     7. ROUTINES AND OVERLAYS CALLED.
*         OMSG               ISSUE DAYFILE MESSAGE
*         RDUMP              DUMP NIP-S FIELD LENGTH
*         XTRACE             RECORD PROCEDURE CALLS 
* 
*     8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION.
* 
*        THIS PROGRAM IS A SECONDARY OVERLAY LOADED BY SUBROUTINE 
*        OVLCALL.  WHEN EXECUTION IS 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 VARIABLES
# 
 XREF 
   BEGIN
   PROC OMSG;                # DAYFILE MESSAGE                         #
   PROC RDUMP;
   PROC XTRACE; 
   LABEL RJMAIN;
   END
# 
                    INTERNAL VARIABLES
# 
 ITEM SCPADDR;
  
#**********************************************************************#
  
      BEGIN 
  
      CONTROL IFEQ DEBUG,1; 
        XTRACE("HPNSR") ; 
      CONTROL FI; 
# 
      PROCESS SCP FUNCTION RETURN CODE
# 
      P<SCPCALL> = NWLADDR;  # ADDR OF SCP FUNCTION LIST               #
      IF SCPRC[0] NQ RCUCPGONE
      THEN                   # APP IS STILL IN SYSTEM                  #
        BEGIN 
        IF SCPRC[0] NQ RCSWAPPEDOUT 
        THEN                 # OP SYS GAVE US BAD RETURN CODE          #
          BEGIN 
          RDUMP;             # DUMP NIP-S FIELD LENGTH                 #
          D25M2[0] = "HPNONSR"; 
          OMSG(DFMSG25,0); # "NIP DUMP TAKEN"                          #
          END 
        ELSE                 # APP IS SWAPPED OUT                      #
          BEGIN 
# 
          DO NOT BOTHER TO CONTINUE PROCESSING NETON OF APP.  INSTEAD 
          REJECT NETON WITH RC = 1 AND LET APP TRY TO NETON AGAIN.
# 
#         CREATE AWL TO REJECT NETON                                   #
          P<DRHDRWD> = NWLADDR; # ADDR OF BUF TO HOLD AWL              #
          BLKID[0] = MOUTIDVALUE; # (NONMOVABLE) WRITE BUF BLK ID      #
          BLKBS[0] = AWLNSIZE;            # SIZE OF (NETON) AWL        #
          P<AWLENTRY> = NWLADDR + BLKHSIZE; # ADDR OF AWL NETON ENTRY  #
          AWLEAIPH[0] = 0;
          AWLRC[0] = TRYAGAIN; # RETURN CODE IF NAM NOT AVAILABLE      #
          AWLOP[0] = WLOPNON; # AIP OPCODE FOR NETON                   #
          AWLCB[0] = 1; 
          AWLEWD1[0] = 0; 
  
#         CREATE SCP FUNCTION TO WRITE AWL AND CLEAR SHORT TERM CONN   #
          SCPADDR = NWLADDR + AWLNSIZE;            # BUF TO HOLD SCP FL#
          P<SCPCALL> = SCPADDR; 
          SCPWD0[0] = 0;
          SCPID[0] = NAFLIDVALUE; # (NO ACB) SCP FUNC LIST BLK ID VALUE#
          SCPBS[0] = SCPSIZE + 2*FLESIZE; # SIZE OF FUNCTION LIST      #
          SCPFW[0] = 0; 
          SCPFP[0] = 2;      # NO OF ENTRIES IN FUNCTION LIST          #
          SCPSCPA[0] = SCPADDR + SCPSIZE; # ADDR OF FUNC LIST ENTRIES  #
          SCPFC[0] = SFLIST; # SCP SF.LIST FUNCTION CODE               #
          SCPJOBID[0] = JOBID; # JOB ID WORD                           #
          P<FLE> = SCPADDR + SCPSIZE; 
          FLEWD0[0] = 0;
          FLEFP[0] = AWLNSIZE - BLKHSIZE; # NO OF WDS TO WRITE TO UCP  #
          FLEUCPA[0] = AWLA; # UCP APP WORKLIST ADDRESS                #
          FLESCPA[0] = NWLADDR + BLKHSIZE; # ADDR OF AWL IN NIP        #
          FLEFC[0] = SFWRITE; # SCP SF.WRITE FUNCTION CODE             #
          P<FLE> = P<FLE> + FLESIZE;
          FLEWD0[0] = 0;
          FLEUCPA[0] = CBA;  # UCP COMPLETION BIT ADDRESS              #
          FLEFC[0] = SFENDT; # SCP SF.ENDT FUNCTION CODE               #
          PARAMS4 = SCPADDR; # ADDR OF SCP FUNCTION LIST               #
          END 
        END 
      GOTO RJMAIN;           # RETURN TO CALLING PROGRAM               #
      END 
TERM
