cdc:nos2.source:nam5871:xsapp
Table of Contents
XSAPP
Table Of Contents
- [00012] PRGM XSAPP
- [00076] PROC ABORT
- [00077] PROC MRELS
- [00078] PROC OSCCALL
- [00079] PROC OVLCALL
- [00080] PROC RDUMP
- [00081] PROC XSAPPRC
- [00082] PROC XTRACE
Source Code
- XSAPP.txt
- *DECK XSAPP
- USETEXT NIPDEF
- USETEXT APPSTAT
- USETEXT DRHDR
- USETEXT DUMPFLG
- USETEXT FLIST
- USETEXT MSGIDX
- USETEXT OVERLAY
- USETEXT PARAMS
- USETEXT SCPCOM
- USETEXT SWAPIN
- PRGM XSAPP; # PROCESS SWAPIN OF (NO ACB) APPLICATION #
- STARTIMS;
- #
- *1DC XSAPP
- *
- * 1. PROC NAME AUTHOR DATE
- * XSAPP E. GEE 77/07/27
- *
- * 2. FUNCTIONAL DESCRIPTION.
- * PROCESS SWAPIN OF (NO ACB) APPLICATION AND REISSUE PREVIOUS
- * SYSTEM CONTROL POINT FUNCTION.
- *
- * 3. METHOD USED.
- * CHECK IF APPLICATION HAS BEEN SWAPPED IN
- * PROCESS SCP SWAPIN FUNCTION RETURN CODE
- * CLEAR RETURN CODES AND COMPLETION BITS OF PREVIOUS SCP
- * CALL IF NECESSARY
- * REISSUE PREVIOUS SYSTEM CONTROL POINT FUNCTION
- * PROCESS SCP FUNCTION RETURN CODE FROM SECOND CALL
- *
- * 4. ENTRY PARAMETERS.
- * SWAPINFP ADDR OF FIRST ENTRY IN (NO ACB) SWAPIN
- * CHAIN
- *
- * 5. EXIT PARAMETERS.
- * NONE
- *
- * 6. COMDECKS CALLED AND SYMPL TEXTS USED.
- * APPSTAT DUMPFLG FLIST
- * MSGIDX NIPDEF OPSIZE OVERLAY
- * PARAMS SCPCOM SWAPIN
- *
- * 7. ROUTINES AND OVERLAYS CALLED
- * MRELS RELEASE BUFFER SPACE
- * OSCCALL ISSUE SCP CALLS
- * OVLCALL LOAD AND EXECUTE OVERLAYS
- * RDUMP DUMP NIP-S FIELD LENGTH
- * XABTAPP OVL ABORT APPLICATION
- * XERRMSG OVL ISSUE DAYFILE MESSAGE
- * XSAPPRC PROCESS (NO ACB) SCP FUNCTION RETURN CODE
- * XTRACE RECORD PROCEDURE CALLS
- *
- * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION.
- * * NIP/SCP ERROR RC = XXB,JOBID=XXXX*
- *
- * THIS PROGRAM IS A PRIMARY OVERLAY LOADED BY SUBROUTINE
- * 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 AND PROCEDURE XSAPPRC
- * COMPRISE THIS OVERLAY AND THE TOTAL OF
- * THE TWO CANNOT EXCEED THE PRIMARY
- *CALL OPSIZE
- *
- * THIS OVERLAY IS CALLED BY XSACB.
- *
- #
- STOPIMS;
- #
- EXTERNAL VARIABLES
- #
- XREF
- BEGIN
- PROC ABORT ;
- PROC MRELS; # RELEASE BUFFER SPACE #
- PROC OSCCALL; # ISSUE SYSTEM CONTROL POINT CALLS #
- PROC OVLCALL; # LOAD AND EXECUTE OVERLAYS #
- PROC RDUMP; # DUMP NIP-S FIELD LENGTH #
- PROC XSAPPRC; # PROCESS (NO ACB) SCP FUNCTION RC #
- PROC XTRACE; # RECORD PROCEDURE CALLS #
- LABEL RJMAIN; # RETURN ADDRESS IN OVLCALL #
- END
- #
- INTERNAL VARIABLES
- #
- ITEM FLW; # INDEX FOR CLEARING RETURN CODES #
- ITEM NEXT; # ADDR OF NEXT ENTRY IN SWAPIN CHAIN #
- ITEM RC; # SYS CONTROL POINT FUNCTION RETURN CODE #
- ITEM SENTRY; # ADDR OF (NO ACB) SWAPIN ENTRY #
- ITEM SIZE; # SIZE OF SCP FUNCTION LIST #
- #**********************************************************************#
- BEGIN
- CONTROL IFEQ DEBUG,1;
- XTRACE("XSAPP") ;
- CONTROL FI;
- SENTRY = SWAPINFP; # SWAPIN ENTRY TO PROCESS #
- #
- LOOP THROUGH (NO ACB) SWAPIN CHAIN UNTIL ALL ENTRIES ARE PROCESSED
- #
- FOR SENTRY=SENTRY WHILE SENTRY NQ LOC(SWAPINFP) DO
- BEGIN
- P<SWPIE> = SENTRY;
- NEXT = SWPINFP[0]; # ADDR OF NEXT ENTRY IN SWAPIN CHAIN #
- IF SWPICB[0] EQ 1
- THEN # SWAPIN SCP CALL HAS COMPLETED #
- BEGIN
- P<SCPCALL> = SWPIFL[0]; # FUNCTION LIST FOR (NO ACB) APP #
- SIZE = SCPBS[0];
- #
- CHECK SCP SWAPIN FUNCTION RETURN CODE
- #
- IF SWPIRC[0] EQ 0
- THEN # APP SWAPPED IN WITH NO PROBLEMS #
- BEGIN
- #
- CLEAR RETURN CODES AND COMPLETION BITS IN ORIGINAL SCP
- FUNCTION LIST
- #
- SCPRC[0] = 0; # ZERO SCP FUNCTION LIST RETURN CODE #
- SCPCB[0] = 0; # CLEAR SCP FUNCTION LIST COMPLETION BIT #
- IF SCPBS[0] GR SCPSIZE
- THEN # THERE ARE SF.LIST ENTRIES TO CLEAN UP #
- BEGIN
- FOR FLW=SCPSIZE STEP FLESIZE UNTIL SCPBS[0]-1 DO
- BEGIN
- P<FLE> = P<SCPCALL> + FLW; # ADDR OF SF.LIST ENTRY #
- FLERC[0] = 0; # ZERO SF.LIST ENTRY RETURN CODE #
- FLECB[0] = 0; # CLEAR SF.LIST ENTRY COMPLETION BIT #
- END
- END
- # REISSUE ORIGNIAL SCP FUNCTION CALL #
- P<FLE> = LOC(SCPFW[0]);
- OSCCALL(FLE);
- #
- PROCESS SCP FUNCTION RETURN CODE
- #
- RC = SCPRC[0]; # SCP FUNCTION RETURN CODE #
- XSAPPRC(SENTRY,RC);
- IF RC EQ RCUCPAOOR
- THEN # UCP GAVE US BAD ADDR SO ABORT IT #
- BEGIN
- ABTAPPF = XFLERR; # SET ABORT-APPLICATION FLAG #
- ABTADDR = P<SCPCALL>; # ADDR OF BUF FOR XABTAPP TO USE #
- ABTSIZE = SIZE; # SIZE OF BUF FOR XABTAPP TO USE #
- ABTJOBID = SWPIJOBID[0]; # APP JOB ID WORD #
- OVLNAME = XABTAPPP; # NAME OF OVERLAY TO LOAD #
- OVLCALL; # LOAD AND EXECUTE OVELAY #
- END
- ELSE
- BEGIN
- IF RC NQ RCSWAPPEDOUT
- THEN # IT IS OKAY TO RELEASE BUFFER #
- MRELS(P<SCPCALL>);
- END
- END
- ELSE # GOT NONZERO RETURN CODE FROM SWAPIN CALL#
- #
- PROCESS SCP SWAPIN CALL RETURN CODE
- #
- BEGIN
- RC = SWPIRC[0]; # SCP FUNCTION RETURN CODE #
- XSAPPRC(SENTRY,RC);
- IF (RC NQ 0) # SCP RC NOT EQUAL TO ZERO #
- AND (RC NQ RCSWAPPEDOUT) # UCP NOT SWAPPED OUT #
- AND (RC NQ RCUCPGONE) # UCP STILL IN SYSTEM #
- AND (RC NQ RCSTCBAD)
- AND (RC NQ RCSWAPDELAY) # UCP CAN BE SWAPPED IN #
- THEN # OP SYS GAVE NIP BAD RETURN CODE #
- BEGIN
- DMPFLG = DXSAPP1; # STORE REASON CODE FOR DUMPING FL #
- RDUMP; # DUMP NIP-S FIELD LENGTH #
- PARAMS1 = DFMSG07; # DAYFILE MESSAGE NUMBER #
- PARAMS2 = RC; # SCP FUNCTION RETURN CODE #
- PARAMS3 = SWPIJOBID[0]; # APP JOB ID WORD #
- OVLNAME = XERRMSGP; # NAME OF OVERLAY TO LOAD #
- OVLCALL; # LOAD AND EXECUTE OVERLAY #
- ABORT ;
- END
- IF (RC NQ RCSWAPPEDOUT) # UCP SWAPPED OUT AGAIN #
- AND (RC NQ RCSWAPDELAY) # UCP CANNOT BE SWAPPED IN #
- THEN # ALRIGHT TO RELEASE BUFFER #
- MRELS(P<SCPCALL>);
- END
- END
- SENTRY = NEXT; # SET PTR FOR NEXT ENTRY IN SWAPIN CHAIN #
- END
- GOTO RJMAIN; # RETURN TO CALLING PROGRAM #
- END
- TERM
cdc/nos2.source/nam5871/xsapp.txt ยท Last modified: 2023/08/05 17:23 by Site Administrator