*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