*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 = WLADDR + AIPHSIZE + ABHSIZE ; CONTROL IFEQ DEBUG,1; IF PFCSFC[0] EQ NETOFFN THEN XTRACE("NOFFN") ; ELSE XTRACE("FAILN") ; CONTROL FI; P = P ; AN = NETAN ; # APPLICATION NUMBER # P = PTAT[0] ; P = 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 = 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 = FLOFFAD + FLSIZE ; FLSCPA[0] = P ; 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 = LOC(FLFW[0]) ; OSCCALL(FLE) ; P = FLOFFAD ; END # NET/OFF/N CASE # ELSE BEGIN # APPL/FAIL/N CASE # P = LOC(LOCALFL) - 1 ; # BLOCK FOR SCP CALL # FLFW[0] = 0 ; FLUCPA[0] = -1 ; FLFC[0] = SFENDT ; FLJOBID[0] = ACBJNWD[0] ; P = 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 ; 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