*DECK HPNOFFN
USETEXT NIPDEF
USETEXT AT
USETEXT ACB
USETEXT APPSTAT
USETEXT OVERLAY
USETEXT PARAMP
USETEXT PARAMS
USETEXT PT
USETEXT DUMPFLG
USETEXT FLIST
USETEXT MSGIDX
USETEXT SUPMSG
USETEXT SCPCOM
PRGM HPNOFFN ;
STARTIMS;
#
*1DC HPNOFFN
* 1. PROC NAME AUTHOR DATE
* HPNOFFN L.T.NGUYEN 82/06/16
*
* 2. FUNCTIONAL DESCRIPTION:
* PROCESS NET/OFF/N AND FAIL/APP/N FROM APPLICATION.
*
* 3. METHOD USED:
* IF NETTED OFF APPLICATION IS NS OR CS, SEND REG/CP.
* IF NOT PRU APPLICATION, GO AHEAD RELEASE THE ACB.
*
* 4. INPUT PARAMS:
* PARAMP1 - APPLICATION NUMBER OF NETTED OFF APPLICATION
*
* 5. EXIT PARAMS:
* NONE.
*
* 6. COMDECKS CALLED AND SYMPL TEXTS USED
* NIPDEF AT ACB
* OVERLAY PARAMP PARAMS
* PT
*
* 7. ROUTINES CALLED
* NCREGCP OVL SEND REG/CP
* RELACB OVL RELEASE ACB
* OVLCALL LOAD AND EXECUTE OVERLAY
* XTRACE TRACE PROCEDURE CALL
*
* 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION
* W A R N I N G - THIS PROGRAM CANNOT EXCEED THE PRIMARY
*CALL OPSIZE
* THIS PROGRAM IS CALLED BY HPPUT.
*
*
#
STOPIMS;
#
XREF
#
XREF LABEL RJMAIN ;
XREF PROC ABORT ;
XREF PROC MGETS ;
XREF PROC MRELS ;
XREF PROC OSCCALL ;
XREF PROC OMSG ;
XREF PROC RDUMP ;
XREF PROC OVLCALL ;
XREF PROC XTRACE ;
ITEM AN ;
ITEM FLOFFAD I ; # ADDRESS OF FLHEAD FOR NETOFFN CASE#
ARRAY LOCALFL S(FLSIZE) ;
BEGIN
ITEM FLWORD U(0,0,60) ;
END
ITEM REASON U ;
ITEM FLNTRY U ;
BEGIN # HPNOFFN #
P<SUPMSG> = WLADDR + AIPHSIZE + ABHSIZE ;
CONTROL IFEQ DEBUG,1;
IF PFCSFC[0] EQ NETOFFN
THEN
XTRACE("NOFFN") ;
ELSE
XTRACE("FAILN") ;
CONTROL FI;
P<SMNVF> = P<SUPMSG> ;
AN = NETAN ; # APPLICATION NUMBER #
P<AT> = PTAT[0] ;
P<ACB> = ATACBA[AN] ; # ACB OF NETOFFED APPL. #
IF PFCSFC[0] EQ NETOFFN
THEN
BEGIN # NET OFF CASE #
# CALLING SCP TO DISCONNECT SHORT AND LONG TERM CONNECTIONS #
IF ATNVFR[AN]
THEN
FLNTRY = 2 ; # WAITING FOR NET/ON/N #
ELSE
FLNTRY = 3 ; # APPLICATION NETTED ON O.K. #
MGETS(FLSIZE+SWPISIZE+FLNTRY*FLESIZE,FLOFFAD,TRUE) ;
P<FLHEAD> = FLOFFAD ;
FLID[0] = NONMOVEABLE ; # MAKE FUNCTION WORKLIST NON-MOVE #
FLAN[0] = AN ; # APPLICATION NUMBER #
FLFW[0] = 0 ;
FLFP[0] = FLNTRY ;
FLFC[0] = SFLIST ; # FUNCTION CODE #
FLJOBID[0] = ACBJNWD[0] ;
P<FLE> = FLOFFAD + FLSIZE ;
FLSCPA[0] = P<FLE> ;
FLEWD0[0] = 0 ;
FLEFC[0] = SFENDT ;
FLEUCPA[0] = ACBUCPADR[0] + 2; # COMPLETION ADDRESS #
FLEWD0[1] = 0 ;
FLEFC[1] = SFENDT ;
FLEUCPA[1] = ACBUCPADR[0] ; # COMPLETION ADDRESS #
FLEWD0[2] = 0 ;
FLEFC[2] = SFCLTC ;
P<FLE> = LOC(FLFW[0]) ;
OSCCALL(FLE) ;
P<FLHEAD> = FLOFFAD ;
END # NET/OFF/N CASE #
ELSE
BEGIN # APPL/FAIL/N CASE #
P<FLHEAD> = LOC(LOCALFL) - 1 ; # BLOCK FOR SCP CALL #
FLFW[0] = 0 ;
FLUCPA[0] = -1 ;
FLFC[0] = SFENDT ;
FLJOBID[0] = ACBJNWD[0] ;
P<FLE> = LOC(LOCALFL) ;
HFCALL = TRUE ;
OSCCALL(FLE) ;
HFCALL = FALSE ;
END # APPL/FAIL/N CASE #
#
PROCESS RETURNED REASON CODE
#
REASON = FLRC[0] ;
IF PFCSFC[0] EQ NETOFFN
THEN
BEGIN # NETTING OFF CASE #
IF REASON EQ RCSWAPPEDOUT
THEN
BEGIN # SWAPPED OUT DURING NETOFF #
PARAMS1 = FLOFFAD ;
FLBS[0] = FLBS[0] - SWPISIZE ; # RESET SCP BUFFER SIZE,THE #
# REST IS FOR SWIPIN ENTRY #
PARAMS2 = FLOFFAD + FLBS[0] ;
PARAMS3 = 0 ;
OVLNAME = OSCPSIP ;
OVLCALL ;
# GO AND RELEASE ACB IF CAN #
END # SWAPPED OUT #
ELSE
BEGIN # OTHER THAN SWAPPED OUT RC #
MRELS(FLOFFAD) ; # RELEASE THIS FL BUFFER #
IF REASON EQ RCUCPGONE
THEN
BEGIN
FAILADR = P<ACB> ;
GOTO RJMAIN ;
END
ELSE
BEGIN # BAD REASON CODE #
IF REASON NQ 0
THEN
BEGIN
D25M2[0] = "HPNOFFN" ;
OMSG(DFMSG25,0) ;
RDUMP ;
END
END
END # OTHER THAN SWAPPED OUT RC #
END # NETTING OFF CASE #
ELSE
BEGIN # HAPFAIL CASE #
IF REASON EQ RCUCPAOOR
THEN
BEGIN # BAD REASON CODE FROM OS #
D25M2[0] = "HPFAILN";
OMSG(DFMSG25,0); # "NIP DUMP TAKEN" #
RDUMP ;
END # BAD REASON CODE FROM OS #
END # HAPFAIL CASE #
IF AN EQ PROCAN[NSORD]
OR AN EQ PROCAN[CSORD]
THEN
BEGIN # CS OR NS WENT AWAY #
IF AN EQ PROCAN[NSORD]
THEN
PROCAN[NSORD] = 0;
IF AN EQ PROCAN[CSORD]
THEN
PROCAN[CSORD] = 0;
OVLNAME = NCREGCPP ; # SEND REG/CP TO ALL #
PARAMS1 = 0 ;
PARAMS2 = 0 ;
OVLCALL ;
END # CS OR NS WENT AWAY #
IF ACBNPRU[0] EQ 0
THEN
BEGIN # NO PRU #
OVLNAME = RELACBP ; # RELEASE ACB AND ACNT #
PARAMS1 = AN ;
OVLCALL ;
END
ELSE
ACBWOFF[0] = TRUE ; # TURN ON WORK LIST OFF FLAG #
GOTO RJMAIN ;
END # HPNOFFN #
TERM