*DECK HPFL USETEXT NIPDEF USETEXT ACB USETEXT APPSTAT USETEXT AT USETEXT DRHDR USETEXT FLIST USETEXT PT PRGM HPFL; STARTIMS; STOPIMS; # *1DC HPFL * * 1. PROC NAME AUTHOR DATE * HPFL E. GEE 78/01/25 * * 2. FUNCTIONAL DESCRIPTION. * REISSUE ACB SCP FUNCTION LIST * * 3. METHOD USED. * CLEAR COMPLETION BITS AND RETURN CODES FROM SCP FUNCTION. * LIST * REISSUE SCP FUNCTION * PROCESS SCP FUNCTION RETURN CODE * * 4. ENTRY PARAMETERS. * ACBADDR ACB ADDRESS * * 5. EXIT PARAMETERS. * ABTADDR BUF ADR FOR XABTAPP TO USE IF ABORTING APP * ABTAPPF ABORT FLG SET IF NIP GOT SCP RC = RCUCPAOOR * FAILADR FAIL FLG SET IF NIP GET SCP RC = RCUCPGONE * * 6. COMDECKS CALLED AND SYMPL TEXTS USED. * ACB APPSTAT AT FLIST * NIPDEF OPSIZE PT * * 7. ROUTINES AND OVERLAYS CALLED. * HWLP PROCESS WORKLIST * MRELS RELEASE BUFFER SPACE * OSCCALL ISSUE SCP FUNCTION * OSCHAPP SCHEDULE APPLICATION * XTRACE RECORD PROCEDURE CALLS * * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION. * * THIS PROGRAM IS A PRIMARY OVERLAY LOADED BY SUBOURTINE 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 PRIMARY *CALL OPSIZE * * THIS OVERLAY IS CALLED BY XSACB. * # # EXTERNAL VARIABLES # XREF BEGIN PROC HWLP; # PROCESS NWL WORKLIST ENTRIES # PROC MRELS; # RELEASE BUFFER SPACE # PROC OSCCALL; # ISSUE SCP CALLS # PROC OSCHAPP; # SCHEDULE APPLICATION # PROC XTRACE; # RECORD PROCEDURE CALLS # LABEL RJMAIN; # RETURN ADDRESS IN OVCALL # END # INTERNAL VARIABLES # ITEM EXTRAWORD; # EXTRA ONE WORD FOR SFXLST FUNCTION LIST # ITEM FLW; # INDEX FOR ZEROING RC AND CB IN FUNC LIST# ITEM RELADDR; # ADDR OF BUFFER TO RELEASE # #**********************************************************************# BEGIN CONTROL IFEQ DEBUG,1; XTRACE("HPFL ") ; CONTROL FI; P = ACBADDR; # ACB ADDRESS # P = ACBFLIST[0]; # FUNCTION LIST ADDRESS # FLCB[0] = 0; FLRC[0] = 0; IF FLFC[0] EQ SFLIST OR FLFC[0] EQ SFXLST THEN # SF.LIST SCP REQUEST # BEGIN # CLEAR ALL COMPLETE BITS/RC ON LIST ENTRIES # IF FLFC[0] EQ SFXLST THEN # EXTENDED READ/WRITE LIST REQUEST # EXTRAWORD = 1; # A 4-WORD FLHEAD/2 WORD ENTRY # ELSE # NORMAL READ/WRITE LIST REQUEST # EXTRAWORD = 0; # A 3-WORD FLHEAD/1-WORD ENTRY # FOR FLW=FLSIZE + EXTRAWORD STEP (FLESIZE + EXTRAWORD) UNTIL (FLBS[0] - BLKHSIZE) DO # LOOP THROUGH ALL LIST ENTRIES # BEGIN P = ACBFLIST[0] + FLW; FLERC[0] = 0; FLECB[0] = 0; END END # REISSUE SCP FUNCTION # P = ACBFLIST[0] + FLHSIZE; # SCP CALL WORD # OSCCALL(FLE); #ISSUE SCP CALL # # PROCESS SCP FUNCTION RETURN CODE # IF FLRC[0] EQ 0 THEN # SCP FUNCTION COMPLETED OK # BEGIN IF ACBWRADDR[0] NQ 0 THEN # WRITE BUF IN NIP TO RELEASE # BEGIN IF ACBWRADDR[0] LS ACBADDR # CHECK IF WRADDR OUT OF ACB AREA # OR ACBWRADDR[0] GQ ACBADDR + ACBSIZE THEN BEGIN MRELS(ACBWRADDR[0]); # WRITE BUF IN NIP TO RELEASE # END ACBWRADDR[0] = 0; # CLEAR ACBWRADDR POINTER ADDRESS # END MRELS(ACBFLIST[0]); # RELEASE FUNCTION LIST BUFFER # ACBFLIST[0] = 0; HWLP; # PROCESS REST OF NWL # END ELSE BEGIN IF FLRC[0] EQ RCSWAPPEDOUT THEN # APP IS SWAPPED OUT AGAIN # BEGIN ATASBS[ACBAN[0]] = TRUE; # APP-AWAPPED-OUT FLAG IN ACB # OSCHAPP(ACBADDR); # SCHEDULE APPLICATION # END ELSE BEGIN IF FLRC[0] EQ RCUCPAOOR THEN # APP GAVE BAD AWL ADDR SO ABORT IT # BEGIN ABTAPPF = XFLERR; # SET ABORT-APPLICATION FLAG # ABTADDR = ACBADDR; # ACB ADDRESS # END ELSE # APP IS NO LONGER IN SYSTEM # FAILADR = ACBADDR; # SET APPLICATION-FAILED FLAG # END END GOTO RJMAIN; # RETURN TO CALLING PROGRAM # END TERM