TITLE 'IEAVEED0 - DETACH SVC - ENTRY POINT IGC062' 00050002 IGC062 CSECT 00100002 *A-000000-999999 @Y02752 00150002 SPACE 2 00200002 * /* START OF SPECIFICATIONS **** 00300002 * 00350002 *01* MODULE-NAME = IEAVEED0 00400002 * 00450002 *02* CSECT-NAME = IGC062 00500002 * 00600002 *01* DESCRIPTIVE-NAME = DETACH 00650002 * 00700002 *01* COPYRIGHT = NONE 00750002 * 00800002 *01* STATUS = OS/VS2 RELEASE 2 VERSION 1 00900002 * 00960002 *01* FUNCTION = THIS MODULE PROVIDES AN SVC TO FREE TCB RESOURCES OF A 01020002 * COMPLETED SUBTASK, AND TO FORCE COMPLETION OF AN INCOMPLETE 01080002 * SUBTASK. A BRANCH ENTRY IS USED FOR THE LATTER PURPOSE BY ABEND, 01140002 * AND IS CALLED BY END OF TASK PROCESSING AS A TASK TERMINATION 01200002 * RESOURCE MANAGER (TRRM). 01250002 * 01300002 *02* OPERATION = SVC ENTRY PERFORMS VALIDITY CHECKING AND 01380002 * INITIALIZATION FUNCTIONS AND CALLS SUBROUTINE SUBRTN (SEE 01410002 * INTRODUCTORY COMMENTS FOR SUBRTN). ABEND BRANCH ENTRY SAVES 01500002 * REGISTERS AND CALLS SUBROUTINE SUBRTN. END OF TASK BRANCH 01560002 * ENTRY (TTRM) POSTS THE END OF TASK ECB, IF THERE IS ONE, AND 01620002 * SCHEDULES THE END OF TASK EXIT ROUTINE (ETXR) IF THERE IS 01640002 * ONE. THE TCB IS DEQUEUED FROM THE TCB DISPATCHING QUEUE. IF 01700002 * THERE WAS NEITHER AN ECB NOR ETXR, THE TCB RESOURCES ARE 01800002 * FREED, OTHERWISE NOT. 01850002 * 01900002 *01* NOTES = 01950002 * 02000002 *02* DEPENDENCIES = THE LOCAL LOCK IS HELD UPON ENTRY, AND MAY BE 02050002 * RELEASED AND REOBTAINED BY SUBROUTINE SUBRTN. OTHERWISE, IT 02150002 * IS HELD THROUGHOUT THIS MODULE. 02200002 * 02250002 *03* CHARACTER-CODE-DEPENDENCIES = NONE 02300002 * 02350002 *02* RESTRICTIONS = THE BRANCH ENTRY POINT IS LIMITED IN USE TO 02450002 * ABEND AND END OF TASK. 02500002 * 02550002 *02* REGISTER-CONVENTIONS = REGISTER DEFINITIONS FOLLOW THESE 02590002 * SPECIFICATIONS. FURTHER INFORMATION ON THE USAGE OF REGISTERS 02670002 * IS CONTAINED IN THE INTRODUCTORY COMMENTS PRECEEDING 02710002 * EACH SUBROUTINE, RECOVERY ROUTINE, AND THE BRANCH 02790002 * ENTRY ROUTINE. 02830002 * 02910002 *02* PATCH-LABEL = NONE 02950002 * 03050002 *01* MODULE-TYPE = SVC ROUTINE 03100002 * 03150002 *02* PROCESSOR = ASSEMBLER 03200002 * 03250002 *02* MODULE-SIZE = SEE SYMBOL IGC062 IN THE EXTERNAL SYMBOL 03350002 * DICTIONARY. 03400002 * 03450002 *02* ATTRIBUTES = PAGED-LPA, ZERO PROTECT KEY, REFRESHABLE, 03510002 * SUPERVISOR MODE. 03570002 * 03650002 *01* ENTRY-POINT = IGC062 03700002 * 03760002 *02* PURPOSE = SVC DETACH 03820002 * 03880002 *02* LINKAGE = SVC 62 (DETACH MACRO) 03950002 * 04000002 *02* INPUT = REGISTER 1 CONTAINS THE ADDRESS OF A FULLWORD, WHICH 04050002 * IN TURN CONTAINS THE ADDRESS OF THE SUBTASK TCB TO BE 04100002 * DETACHED. BIT 0 OF REGISTER 1 = 0 INDICATES STAE=NO, BIT 0 OF 04150002 * REGISTER 1 = 1 INDICATES STAE=YES. 04210002 * 04270002 *02* OUTPUT = SEE BELOW. 04350002 * 04400002 *01* EXIT-NORMAL = 04500002 * 04550002 *02* CONDITIONS = RETURN VIA EXIT PROLOGUE, IEAVEXPR. 04600002 * 04650002 *02* OUTPUT = RETURN CODE. IF THE SUBTASK IS INCOMPLETE, IT IS 04700002 * ABTERMED, USING CODE 13E FOR STAE=NO, 33E FOR STAE=YES. THIS 04800002 * IS OUTPUT TO RTM (RECOVERY TERMINATION MANAGER), USED TO 04850002 * DETERMINE WHETHER OR NOT A STAE EXIT IS TO BE SCHEDULED. 04900002 * 04950002 *02* RETURN-CODES = 4 - AN INCOMPLETE SUBTASK WAS ABTERMED WITH 05000002 * CODE 33E. 0 - ALL OTHER CONDITIONS. 05050002 * 05100002 *01* EXIT-ERROR = DET00100 05150002 * 05200002 *02* CONDITIONS = AN INVALID PARAMETER OR INVALID PARAMETER WORD 05300002 * ADDRESS WAS PASSED TO DETACH. 05360002 * 05420002 *02* OUTPUT = ABEND CODE 23E. 05500002 * 05550002 *02* RETURN-CODES = NONE 05600002 * 05700002 *01* ENTRY-POINT = IGC062R1 05750002 * 05800002 *02* PURPOSE = CALLED AS A DETACH BRANCH ENTRY BY ABEND, AND AS A 05850002 * TTRM BY END OF TASK. 05900002 * 06000002 *02* LINKAGE = BRANCH ENTERED, ADDRESS OBTAINED FROM CVT062R1. 06050002 * 06100002 *02* INPUT = SEE INTRODUCTORY COMMENTS PRECEEDING IGC062R1. 06150002 * 06200002 *02* OUTPUT = NONE 06250002 * 06310002 *01* EXIT-NORMAL = DET04010 06370002 * 06450002 *02* CONDITIONS = RETURN VIA BR 14. 06500002 * 06600002 *02* OUTPUT = NONE 06650002 * 06710002 *02* RETURN-CODES = NONE 06770002 * 06830002 *01* EXIT-ERROR = NONE 06900002 * 06950002 *01* ENTRY-POINT = IGC062R2 07000002 * 07050002 *02* PURPOSE = FUNCTIONAL RECOVERY ROUTINE (FRR) IN EFFECT WHILE 07100002 * LOCAL LOCK IS HELD. 07200002 * 07260002 *02* LINKAGE = FROM RTM, ADDRESS FROM STACK ELEMENT CREATED BY 07262002 * SETFRR (SEE SUBROUTINE FRRON). 07357002 * 07403602 *02* INPUT = REGISTER 0 - ADDRESS OF A 200 BYTE WORKAREA. 07457002 * REGISTER 1 - ADDRESS OF AN SDWA. REGISTER 14 - 07560002 * RETURN ADDRESS. 07563002 * 07633002 *02* OUTPUT = SEE BELOW. 07703002 * 07773002 *01* EXIT-NORMAL = DET80000 07850002 * 07900002 *02* CONDITIONS = FRR WAS ENTERED FROM SVC DETACH, AS A RESULT OF A 07950002 * FAILURE, OR AS A RESULT OF VALIDITY CHECKING. 08010002 * 08070002 *02* OUTPUT = RETURN CODE. SDWACMPC MAY BE MODIFIED TO 23E (INVALID 08150002 * INPUT PARAMETER) OR 43E (INVALID END OF TASK ECB ADDRESS). 08200002 * SDWASRSV IS UPDATED. SDWARCDE, SDWARCRD, SDWAUPRG, SDWARTYA, 08250002 * AND SDWARECP ARE SET BY SETRP MACRO. 08300002 * 08400002 *02* RETURN-CODES = 0, NO RETRY. 08450002 * 08500002 *01* EXIT-NORMAL = DET80030 08550002 * 08600002 *02* CONDITIONS = FRR WAS ENTERED FROM IGC062R1 (BRANCH ENTRY) 08670002 * PROCESSING. 08750002 * 08800002 *02* OUTPUT = RETURN CODE. SDWARCDE, SDWARCRD, AND SDWARECP ARE SET 08850002 * BY SETRP MACRO. THE DETACH TCB IS DEQUEUED FROM THE 08900002 * DISPATCHING AND FAMILY QUEUES. 09000002 * 09050002 *02* RETURN-CODES = 4, RETRY. 09100002 * 09150002 *01* EXIT-ERROR = NONE 09200002 * 09300002 *01* ENTRY-POINT = IGC062R3 09360002 * 09420002 *02* PURPOSE = RECOVERY RETRY ROUTINE (SEE INTRODUCTORY COMMENTS 09450002 * PRECEEDING IGC062R3). 09500002 * 09600002 *02* LINKAGE = FROM RTM, USING ADDRESS IN SDWARTYA. 09650002 * 09700002 *02* INPUT = SEE INTRODUCTORY COMMENTS PRECEEDING IGC062R3. 09750002 * 09800002 *02* OUTPUT = SEE INTRODUCTORY COMMENTS PRECEEDING IGC062R3. 09900002 * 09950002 *01* EXIT-NORMAL = DET70010 10000002 * 10050002 *02* CONDITIONS = RETURN TO BRANCH CALLER OF DETACH. 10100002 * 10200002 *02* OUTPUT = SEE INTRODUCTORY COMMENTS PRECEEDING IGC062R3. 10250002 * 10300002 *02* RETURN-CODES = NONE. 10350002 * 10400002 *01* EXIT-ERROR = NONE 10500002 * 10550002 *01* EXTERNAL-REFERENCES = 10600002 * 10650002 *02* ROUTINES = STATUS, TO STOP THE SUBTASK TO BE DETACHED, BRANCH 10700002 * ADDRESS OBTAINED FROM SCVTSTAT. WAIT SVC, TO WAIT FOR 10800002 * COMPLETION OF ABTERMED SUBTASK. POST TO POST END OF TASK ECB, 10850002 * BRANCH ADDRESS FROM CVT0PT02. ABTERM TO ABTERM AN INCOMPLETE 10900002 * SUBTASK, OR TO ABTERM MOTHER TASK IN CASE OF ERROR IN END OF 10950002 * TASK PROCESSING, BRANCH LINKAGE GENERATED BY CALLRTM MACRO. 11000002 * FREEMAIN TO FREE TCB, TCB PROBLEM PROGRAM SAVE AREA, IRB, IRB 11100002 * PROBLEM PROGRAM SAVE AREA, IQE, BRANCH LINKAGE GENERATED BY 11150002 * FREEMAIN MACRO. IGC044R2 TO VALIDATE THE TCB QUEUES IN ERROR 11200002 * PROCESSING, BRANCH ADDRESS FROM V-TYPE ADDRESS CONSTANT. STAGE 11250002 * II EXIT EFFECTOR TO SCHEDULE END OF TASK EXIT ROUTINE (ETXR), 11300002 * BRANCH ADDRESS FROM CVT0EF00. 11400002 * 11450002 *02* DATA-AREAS = SDWA 11500002 * 11550002 *02* CONTROL-BLOCKS = TCB(D), RB(R), CVT(R), SCVT(R), PSA(R), 11600002 * IQE(D), IRB(D) 11700002 * 11750002 *01* TABLES = NONE. 11800002 * 11850002 *01* MACROS = WAIT, ABEND, CALLRTM, FREEMAIN, SETFRR, SETRP, MODESET. 11900002 * 12000002 *02* SERIALIZATION = LOCAL LOCK. 12050002 * 12100002 *01* CHANGE-ACTIVITY = Y02752, Y02753 12150002 * 12200002 *01* MESSAGES = NONE. 12300002 * 12350002 *01* ABEND-CODES = 13E, 23E, 33E, 43E, 53E. 13E - CODE FOR ABTERMING 12400002 * INCOMPLETE SUBTASK, STAE=NO. 23E - INVALID PARAMETER OR PARAMETER 12450002 * WORD ADDRESS. 33E - CODE FOR ABTERMING INCOMPLETE SUBTASK, 12500002 * STAE=YES. 43E - INVALID IND OF TASK ECB ADDRESS (CONTENTS OF 12600002 * FIELD TCBECB IN COMPLETING TCB). 53E - ERROR OCCURRED IN TASK 12650002 * TERMINATION PROCESSING OF A SUBTASK BEFORE ECB AND ETXR COULD BE 12700002 * PROCESSED. 12750002 * 12800002 **** END OF SPECIFICATIONS ***/ 12900002 EJECT 12950002 * DETACH REGISTERS 13000002 SPACE 13050002 R0 EQU 0 WORK REGISTER 13100002 R1INPARM EQU 1 INPUT ADDRESS 13200002 R1 EQU 1 WORK REGISTER 13250002 R2 EQU 2 WORK REGISTER 13300002 R2DETTCB EQU 2 ADDRESS OF THE DETACH TCB 13350002 R3 EQU 3 WORK REGISTER 13400002 R4OTCB EQU 4 ADDRESS OF MOTHER TCB 13500002 R4 EQU 4 WORK REGISTER 13550002 R5RB EQU 5 ADDRESS OF CURRENT RB, SVC ENTRY 13600002 R5FRR EQU 5 ADDRESS OF FRR WORKAREA 13650002 R6BASE EQU 6 BASE REGISTER 13700002 R7 EQU 7 WORK REGISTER 13800002 R8 EQU 8 WORK REGISTER 13850002 R9 EQU 9 MAINTENANCE REGISTER 13900002 R10 EQU 10 WORK REGISTER 13950002 R11 EQU 11 WORK REGISTER 14000002 R12 EQU 12 WORK REGISTER 14100002 R13WKPTR EQU 13 ADDRESS OF WORKAREA 14150002 R13 EQU 13 WORK REGISTER 14200002 R14 EQU 14 BRANCH REGISTER 14250002 R15 EQU 15 WORK REGISTER 14300002 SPACE 2 14400002 * MODULE EQUATES 14450002 SPACE 14500002 USECNT1 EQU 1 IRB USE COUNT 1 14550002 C0 EQU 0 CONSTANT 0 14600002 C1 EQU 1 CONSTANT 1 14700002 C2 EQU 2 CONSTANT 2 14750002 C3 EQU 3 CONSTANT 3 14800002 C4 EQU 4 CONSTANT 4 14850002 C7 EQU 7 CONSTANT 7 14900002 C8 EQU 8 CONSTANT 8 15000002 C255 EQU 255 CONSTANT 255 15050002 CXF0 EQU X'F0' CONSTANT X'F0' 15100002 KEYMASK EQU B'11110000' MASK TO CLEAR PROTECT KEY 15150002 WORDMASK EQU B'00000011' MASK TO CHECK FULLWORD ALIGNMENT 15200002 FF EQU X'FF' BYTE OF ONES 15300002 SVAREAL EQU 72 LENGTH OF PROBLEM PGM SAVE AREA 15350002 SP250 EQU 250 SUBPOOL ID 15400002 SP253 EQU 253 SUBPOOL ID 15450002 ABEND13E EQU X'13E' ABEND CODE FOR SUBTASK ABTERM, 15500002 * WITH STAE=NO 15600002 ABEND23E EQU X'23E' ABEND CODE FOR MOTHER, INVALID 15650002 * PARAMETER 15700002 ABEND33E EQU X'33E' ABEND CODE FOR SUBTASK ABTERM, 15750002 * WITH STAE=YES 15800002 ABEND43E EQU X'43E' ABEND CODE FOR MOTHER, INVALID 15900002 * ATTACH ECB 15950002 ABEND53E EQU X'53E' CODE FOR MOTHER, SUBTASK 16000002 * ENCOUNTERED ERROR IN END OF 16050002 * TASK BEFORE ECB/ETXR PROCESSING 16100002 PTCBCODE EQU X'0B' STATUS STOP TCB ENTRY CODE 16200002 SPACE 3 16250002 * MODULE USING STATEMENTS 16300002 SPACE 2 16350002 USING WKAREA,R13WKPTR PRIVATE WORK/SAVE AREA 16400002 USING DETFRRWA,R5FRR FRR SIX WORD WORKAREA 16500002 USING PSA,R0 ADDRESSABILITY FOR PREFIX SAVE 16550002 * AREA 16600002 SPACE 3 16650002 ENTRY IGC062R1 16700002 SPACE 3 16800002 */* IGC062: CHART */ 16850002 */* FOOTING 16870002 */* DETACH MAINLINE - SVC ENTRY */ 16950002 EJECT 17000002 */* IGC062: E ENTER SVC DETACH */ 17100002 SPACE 2 17150002 USING IGC062,R6BASE 17200002 MODID BR=YES IDENTIFIER 17250002 SPACE 17300002 */* P SET UP WORKAREA IN RBEXSAVE */ 17400002 SPACE 17450002 LA R13WKPTR,RBEXSAVE-RBBASIC(,R5RB) ADDRESS WORKAREA 17500002 XC 0(WKLENTH,R13WKPTR),0(R13WKPTR) CLEAR WORKAREA 17550002 ST R14,WKR14RET SAVE RETURN ADDRESS 17600002 SPACE 17700002 */* S FRRON: ESTABLISH FRR */ 17750002 SPACE 17800002 LR R8,R5RB SAVE CURRENT RB ADDRESS 17850002 BAL R14,FRRON ESTABLISH FRR 17900002 SPACE 18000002 */* D (NO,DET00100,YES,) INPUT PARAMETER FULLWORD */ 18050002 SPACE 18100002 LA R7,WORDMASK CHECK ALIGNMENT 18150002 NR R7,R1 IS PARM ADDR ON FULLWORD BDY 18200002 BNZ DET00100 NO, GO ABEND CURRENT TASK, 23E 18300002 * YES, CHECK STORAGE KEY 18350002 SPACE 18400002 */* P VALIDITY CHECK INPUT PARM STORAGE ADDRESS */ 18450002 SPACE 18500002 L R7,RBLINK-RBBASIC(,R8) ADDRESS OF CALLER'S RB 18600002 IC R2,RBOPSW+C1-RBBASIC(,R7) PSW KEY-CMWP FIELDS 18650002 LA R7,KEYMASK TO CLEAR CMWP BITS, HIGH BYTES 18700002 NR R2,R7 CALLER'S PROTECT KEY 18750002 MODESET KEYADDR=(2) SET CALLER'S PROTECT KEY 18800002 L R7,0(,R1) INPUT PARM FETCH CHECK 18900002 ST R7,0(,R1) INPUT PARM STORE CHECK 18950002 MODESET EXTKEY=SUPR RESET KEY 0 19000002 SPACE 19050002 */* D (NO,DET00100,YES,) IS INPUT ADDRESS OF A SUBTASK */ 19100002 SPACE 19200002 LA R7,0(,R7) INSURE BYTE0 = 0 19250002 ICM R8,B'1111',TCBLTC-TCB(R4OTCB) ADDR OF NEWEST SUBTASK 19300002 B DET00210 ENTER LOOP 19350002 SPACE 19400002 DET00200 EQU * TOP OF LOOP 19500002 ICM R8,B'1111',TCBNTC-TCB(R8) ADDR OF NEXT SUBTASK 19550002 DET00210 EQU * LOOP ENTRY POINT 19600002 BZ DET00100 SUBTASK PTR 0, GO ABEND 19650002 * CURRENT TASK, 23E 19700002 CR R7,R8 IS THIS THE INPUT SUBTASK 19800002 BNE DET00200 NO, CONTINUE LOOP 19850002 * YES, CONTINUE DETACH 19900002 SPACE 19950002 */* D (NO,DET00220,YES,) WAS STAE=YES SPECIFIED */ 20000002 SPACE 20100002 LTR R1,R1 BIT0=1 FOR STAE=YES 20150002 BNM DET00220 BYPASS FLAG SETTING, BIT0 IS OFF 20200002 SPACE 20250002 */* P SET INDICATOR FOR STAE=YES */ 20300002 SPACE 20400002 OI WKFLAGS,WKSTAE SET STAE INDICATOR 20450002 SPACE 20500002 */* DET00220: D (NO,DET00240,YES,) IS DETACH TCB IN ABEND */ 20550002 SPACE 20600002 DET00220 EQU * * 20650002 TM TCBFLGS1-TCB(R7),TCBFA IS ABEND IN PROCESS 20700002 BNO DET00240 NO, BYPASS SETTING OF FLAG 20800002 SPACE 20850002 */* P SET INDICATOR FOR NO ABTERM */ 20900002 SPACE 21000002 OI WKFLAGS,WKTCBFA SUBTASK NOT TO BE ABTERMED 21050002 SPACE 21100002 */* DET00240: D (NO,DET00230,YES,) WOULD AN ABEND CAUSE RECURSION */ 21150002 SPACE 21200002 DET00240 EQU * * 21250002 TM TCBFBYT1-TCB(R7),TCBRTM2 HAS RTM2 ALREADY BEEN ENTERED 21300002 BNO DET00230 NO, BYPASS SETTING OF FLAG 21400002 SPACE 21450002 */* P SET INDICATOR FOR CONDITIONAL FREEMAINS */ 21500002 SPACE 21600002 OI WKFLAGS,WKCONDL PERFORM CONDITIONAL FREEMAINS 21650002 SPACE 21700002 */* DET00230: S SUBRTN: PERFORM DETACH, WITH ABTERM IF REQUIRED */ 21750002 SPACE 21800002 DET00230 EQU * * 21900002 LR R2DETTCB,R7 ADDRESS OF TCB TO BE DETACHED 21950002 ST R2DETTCB,WKR1TCB JOURNAL DETACH TCB ADDRESS 22000002 BAL R14,SUBRTN PERFORM DETACH 22050002 SPACE 22100002 */* S FRROFF: CANCEL FRR */ 22200002 SPACE 22250002 BAL R14,FRROFF CANCEL FRR 22300002 SPACE 22350002 */* R RETURN TO SVC CALLER */ 22400002 SPACE 22500002 L R14,WKR14RET RESTORE RETURN ADDRESS 22550002 BR R14 RETURN, VIA EXIT PROLOG 22600002 SPACE 3 22650002 */* DET00100: S FRROFF: CANCEL FRR */ 22700002 SPACE 22800002 DET00100 EQU * * 22850002 BAL R14,FRROFF CANCEL FRR 22900002 SPACE 22950002 */* L () ABEND: TERMINATE CURRENT TASK, 23E */ 23000002 SPACE 23100002 LA R1,ABEND23E ERROR CODE FOR CURRENT TASK 23150002 SPACE 23200002 ABEND (1),DUMP,,SYSTEM 23250002 SPACE 2 23300002 */* IGC062: END FLOWCHART */ 23400002 EJECT 23450002 */* SUBRTN: CHART BEGIN FLOWCHART */ 23500002 */* FOOTING 23550002 */* SUBROUTINE WHICH PERFORMS NORMAL DETACH FUNCTIONS */ 23600002 SPACE 2 23650002 *********************************************************************** 23750002 * * 23800002 * SUBROUTINE SUBRTN PERFORMS NORMAL DETACH PROCESSING: UNCHAINING OF * 23850002 * THE TCB FROM ITS FAMILY QUEUE, AND FREEING THE TCB STORAGE AND THE * 23900002 * STORAGE OCCUPIED BY THE ASSOCIATED PROBLEM PROGRAM SAVE AREA, IF * 24000002 * THERE IS ONE. THE DETACH TASK IS FIRST ABTERMED, IF IT HAS NOT COM- * 24050002 * PLETED, AND IF IT IS NOT ALREADY ABENDING. THIS ROUTINE IS CALLED * 24100002 * BY THE SVC ENTRY, AND BY THE BRANCH ENTRY FROM ABEND. * 24150002 * * 24200002 * SUBROUTINES CALLED: FRRON, FRROFF, FREE, FREETCB, POSTRTN, ABTERMR * 24300002 * * 24350002 * SYSTEM ROUTINES CALLED / MACROS ISSUED: STATUS, WAIT, SETLOCK * 24400002 * * 24450002 * REGISTER USAGE: R2DETTCB - ADDRESS OF TCB TO BE DETACHED * 24500002 * R13WKPTR - ADDRESS OF WORKAREA * 24600002 * R14 - RETURN ADDRESS * 24650002 * R5FRR - FRR WORKAREA ADDRESS SAVE REGISTER * 24700002 * * 24750002 * RETURN CODES SET: 0, 4 * 24800002 * * 24900002 *********************************************************************** 24950002 SPACE 2 25000002 */* E ENTER SUBRTN */ 25050002 SPACE 25100002 SUBRTN DS 0H ENTRY POINT 25200002 ST R14,WKSUBRET SAVE RETURN ADDRESS 25250002 SPACE 25300002 */* D (NO,DET01100,YES,) IS DETACH TCBFC = 1 */ 25350002 SPACE 25400002 TM TCBFLGS5-TCB(R2DETTCB),TCBFC HAS SUBTASK BEEN THROUGH 25500002 * EXIT 25550002 BZ DET01100 NO, FORCE COMPLETION IF 25600002 * NECESSARY 25650002 SPACE 25700002 * YES - UNCHAIN TCB AND FREE 25800002 SPACE 25850002 */* S (,DET01110) FREETCB: FREE TCB RESOURCES */ 25900002 SPACE 25924002 BAL R14,FREETCB FREE TCB RESOURCES 26000002 B DET01110 GO TO EXIT SUBROUTINE 26100002 EJECT 26150002 *********************************************************************** 26200002 * * 26250002 * PROCESS SUBTASK WHICH HAS NOT YET COMPLETED * 26300002 * * 26400002 *********************************************************************** 26450002 SPACE 2 26500002 */* DET01100: D (NO,DET01120,YES,) IS DETACH TCBACTIV = 1 */ 26550002 SPACE 26600002 DET01100 EQU * * 26650002 TM TCBFBYT1-TCB(R2DETTCB),TCBACTIV IS SUBTASK ACTIVE 26700002 BZ DET01120 NO, BYPASS STATUS STOP 26800002 SPACE 26850002 */* L STATUS: STOP DETACH TCB */ 26900002 SPACE 27000002 LR R1,R2DETTCB ADDR OF TCB TO STOP @YM02796 27050002 LR R7,R13WKPTR SAVE 27100002 L R15,CVTPTR ADDRESS OF CVT 27150002 L R15,CVTABEND-CVTMAP(,R15) ADDR OF SECONDARY CVT 27200002 L R15,SCVTSTAT-SCVTSECT(,R15) ADDR OF STATUS BRANCH ENTRY 27300002 LA R0,PTCBCODE STATUS ENTRY CODE, STOP TCB 27350002 SR R13,R13 MASK, NO NONDISP BITS TO BE SET 27400002 BALR R14,R15 INVOKE STATUS (STOPS TASK VIA 27450002 * SIGP, STAYS STOPPED WHILE 27500002 * DETACH HOLDS LOCAL LOCK) 27600002 LR R13WKPTR,R7 RESTORE 27650002 SPACE 27700002 */* DET01120: D (NO,DET01130,YES,) IS THERE AN ETXR */ 27750002 SPACE 27800002 DET01120 EQU * * 27850002 ICM R8,B'1111',TCBIQE-TCB(R2DETTCB) ADDRESS OF IQE 27900002 BZ DET01130 IF ADDRESS 0, BYPASS PROCESSING 28000002 SPACE 28050002 */* D (NO,DET01140,YES,) IS IRB USE COUNT = 1 */ 28100002 SPACE 28200002 L R11,IQEIRB-IQESECT(,R8) ADDRESS OF IRB 28250002 CLI RBUSE-RBSECT(R11),USECNT1 IS USE COUNT 1 28300002 BNE DET01140 NO, GO DECREMENT USE COUNT 28350002 SPACE 28400002 */* S FREE: FREE IRB PROB PGM SAVE AREA, SUBPOOL 250 */ 28450002 SPACE 28550002 L R1,RBPPSAV-RBSECT(,R11) ADDRESS OF IRB USER SAVE AREA 28600002 LA R0,SVAREAL LENGTH OF SAVE AREA 28650002 LA R3,SP250 SUBPOOL NUMBER 28700002 BAL R14,FREE FREE SAVE AREA 28800002 SPACE 28850002 */* S (,DET01150) FREE: FREE IRB,SUBPOOL 253 */ 28900002 SPACE 28950002 LA R0,RBSECT-RBPRFXST(R0) OFFSET FROM IRB ADDR TO PREFIX 29000002 LR R1,R11 ADDRESS OF IRB 29100002 SR R1,R0 ADDRESS OF IRB PREFIX 29150002 LA R0,IRBLEN LENGTH OF IRB 29200002 LA R3,SP253 SUBPOOL NUMBER 29250002 BAL R14,FREE FREE IRB 29300002 B DET01150 CONTINUE ETXR PROCESSING 29400002 SPACE 29450002 */* DET01140: P DECREMENT IRB USE COUNT BY 1 */ 29500002 SPACE 29550002 DET01140 EQU * * 29600002 IC R0,RBUSE-RBSECT(,R11) IRB USE COUNT IN LOW ORDER BYTE 29700002 BCTR R0,R0 LESS 1 29750002 STC R0,RBUSE-RBSECT(,R11) SAVE USE COUNT 29800002 SPACE 29850002 */* DET01150: S FREE: FREE IQE, SUBPOOL 253 */ 29900002 SPACE 30000002 DET01150 EQU * * 30050002 LR R1,R8 ADDRESS OF IQE 30100002 LA R0,IQELEN LENGTH OF IQE 30150002 LA R3,SP253 SUBPOOL NUMBER 30200002 BAL R14,FREE FREE IQE 30300002 SPACE 30350002 */* P SET DETACH TCBIQE = 0, TCBFETXR = 0 */ 30420002 SPACE 30425002 XC TCBIQE-TCB(C4,R2DETTCB),TCBIQE-TCB(R2DETTCB) ZERO 30485002 NI TCBFLGS2-TCB(R2DETTCB),FF-TCBFETXR ETXR FLAG OFF 30600002 SPACE 30650002 */* DET01130: D (NO,DET01160,YES,) SHOULD SUBTASK BE ABTERMED */ 30700002 SPACE 30750002 DET01130 EQU * * 30800002 TM WKFLAGS,WKTCBFA WAS SUBTASK IN ABEND WHEN SVC 30900002 * WAS ISSUED 30950002 BO DET01160 YES, BYPASS ABTERM 31000002 SPACE 31050002 */* P INDICATE ABEND CODE 13E FOR SUBTASK */ 31100002 SPACE 31200002 LA R1,ABEND13E CODE FOR SUBTASK, STAE=NO 31250002 SPACE 31270002 */* D (NO,DET01170,YES,) WAS STAE=YES SPECIFIED */ 31350002 SPACE 31400002 TM WKFLAGS,WKSTAE IS COMP CODE 13E CORRECT 31500002 BZ DET01170 YES, STAE=NO 31550002 * NO, STAE=YES 31600002 SPACE 31650002 */* P INDICATE ABEND CODE 33E FOR SUBTASK */ 31700002 SPACE 31800002 LA R1,ABEND33E CODE FOR SUBTASK, STAE=YES 31850002 SPACE 31900002 */* DET01170: L RTM: ABTERM SUBTASK */ 31950002 SPACE 32000002 DET01170 EQU * * 32050002 LR R12,R2DETTCB SAVE 32100002 BAL R14,ABTERMR CALL ABTERMING SUBROUTINE 32170002 LR R2DETTCB,R12 RESTORE 32250002 SPACE 32300002 */* DET01160: P SAVE DETACH TCBECB, RESET TO WORKAREA ECB ADDRESS */ 32400002 SPACE 32450002 DET01160 EQU * * 32500002 L R10,TCBECB-TCB(,R2DETTCB) GET ECB ADDRESS 32550002 LA R8,WKECB ADDRESS OF WORKAREA ECB 32600002 ST R8,TCBECB-TCB(,R2DETTCB) INTO DETACH TCB 32700002 TM TCBFBYT2-TCB(R2DETTCB),TCBECBNV IS NO CHECK FLAG NOW SET 32750002 BZ DET02030 NO, SAVE THIS STATUS 32800002 OI WKFLAGS,WKECBNV YES, SAVE THIS STATUS 32850002 DET02030 EQU * * 32900002 OI TCBFBYT2-TCB(R2DETTCB),TCBECBNV WORKAREA ECB NOT CHECKED 33000002 SPACE 33050002 */* S FRROFF: CANCEL FRR */ 33100002 SPACE 33150002 BAL R14,FRROFF CANCEL FRR 33200002 SPACE 33250002 */* L SETLOCK: RELEASE LOCAL LOCK */ 33350002 SPACE 33400002 LR R7,R13WKPTR SAVE 33450002 SETLOCK RELEASE,TYPE=LOCAL,RELATED=('ENTERED WITH LOCK HELD') 33500002 SPACE 33600002 */* L WAIT SVC: ALLOW SUBTASK TO COMPLETE */ 33650002 SPACE 33700002 LR R1,R8 ECB ADDRESS 33750002 WAIT ECB=(1) ISSUE SVC 33800002 SPACE 33900002 */* L SETLOCK: GET LOCAL LOCK */ 33950002 SPACE 34000002 SETLOCK OBTAIN,TYPE=LOCAL,MODE=UNCOND, *34050002 RELATED=('RELEASED BY EXIT') 34100002 LR R13WKPTR,R7 RESTORE 34200002 SPACE 34250002 */* S FRRON: ESTABLISH FRR */ 34300002 SPACE 34350002 BAL R14,FRRON ADD DETACH FRR TO STACK 34400002 SPACE 34500002 */* D (NO,DET01180,YES,) WAS THERE AN ATTACH ECB */ 34550002 SPACE 34600002 LTR R11,R10 IS SAVED ECB PTR = 0 34650002 BZ DET01180 YES, BYPASS POST 34700002 SPACE 34800002 */* S POSTRTN: POST ATTACH ECB WITH TCB COMPLETION CODE */ 34850002 SPACE 34900002 TM WKFLAGS,WKECBNV WAS NO CHECK FLAG ON PREVIOUSLY 34950002 BO DET02040 YES, LEAVE ON 35000002 NI TCBFBYT2-TCB(R2DETTCB),FF-TCBECBNV NO, RESET TO CHECK 35100002 DET02040 EQU * * 35150002 BAL R14,POSTRTN INVOKE POST 35200002 SPACE 35250002 */* DET01180: S FREETCB: FREE TCB RESOURCES */ 35300002 SPACE 35400002 DET01180 EQU * * 35450002 BAL R14,FREETCB UNCHAIN AND FREE TCB, SAVEAREA 35500002 SPACE 35550002 */* P SET RETURN CODE TO 4 */ 35600002 SPACE 35700002 LA R15,C4 RETURN CODE USED WHEN SUBTASK 35750002 * ABTERMED WITH 33E 35800002 SPACE 35850002 */* D (YES,DET01190,NO,) WAS STAE=YES SPECIFIED */ 35900002 SPACE 36000002 TM WKFLAGS,WKSTAE WAS STAE=YES SPECIFIED 36050002 BO DET01190 YES, LEAVE RETURN CODE AS IS 36100002 SPACE 36150002 */* DET01110: P SET RETURN CODE 0 */ 36200002 SPACE 36250002 DET01110 EQU * * 36350002 SR R15,R15 RETURN CODE 0 36400002 SPACE 36450002 */* DET01190: R RETURN TO CALLING POINT */ 36500002 SPACE 36550002 DET01190 EQU * * 36600002 L R14,WKSUBRET RESTORE RETURN ADDRESS 36650002 BR R14 RETURN 36700002 SPACE 2 36750002 */* SUBRTN: END FLOWCHART */ 36800002 EJECT 36850002 */* POSTRTN: CHART */ 37000002 */* FOOTING 37050002 */* POSTS ATTACH ECB */ 37100002 SPACE 2 37200002 *********************************************************************** 37250002 * * 37300002 * SUBROUTINE POSTRTN VALIDITY CHECKS AND POSTS THE ATTACH ECB, * 37350002 * ADDRESSED BY TCBECB OF THE DETACH TCB. IF VALIDITY CHECK FAILS, THE * 37400002 * FRR IS ENTERED TO SET CODE 43E. THIS SUBROUTINE IS CALLED BY SUBROU-* 37500002 * TINE SUBRTN AND BY THE END OF TASK BRANCH ENTRY. * 37550002 * * 37600002 * SUBROUTINES CALLED: NONE * 37650002 * * 37700002 * SYSTEM ROUTINES CALLED / MACROS ISSUED: POST IS INVOKED AT BRANCH * 37800002 * ENTRY IEA0PT02 * 37850002 * * 37900002 * RETURN CODES SET: NONE * 37950002 * * 38000002 * REGISTER USAGE: R0 - DESTROYED * 38100002 * R2DETTCB - DETACH TCB ADDRESS * 38150002 * R4OTCB - ADDRESS OF MOTHER TCB OF DETACH TCB * 38200002 * R10 - DESTROYED * 38250002 * R11 - INPUT, ECB ADDRESS * 38300002 * R12 - DESTROYED * 38400002 * R14 - RETURN ADDRESS * 38450002 * * 38500002 *********************************************************************** 38550002 SPACE 3 38600002 */* E ENTER POSTRTN */ 38700002 SPACE 38750002 */* D (NO,DET04110,YES,) IS ECB TO BE VALIDITY CHECKED */ 38800002 SPACE 38850002 POSTRTN EQU * ENTRY POINT 38900002 TM TCBFBYT2-TCB(R2DETTCB),TCBECBNV IS SYSTEM ECB INDICATED 39000002 BO DET04110 YES, BYPASS VALIDITY CHECK 39050002 SPACE 39100002 */* P VALIDITY CHECK ECB BEFORE POSTING */ 39150002 SPACE 39200002 LR R0,R2DETTCB SAVE DETACH TCB ADDRESS 39300002 SR R2,R2 CLEAR 39350002 IC R2,TCBPKF-TCB(R4OTCB) CORRECT ECB PROTECT KEY 39400002 OI DETFRRF1,DETECB INDICATE CHECKING ECB 39450002 MODESET KEYADDR=(2) SET CALLER'S PROTECT KEY 39500002 OC 0(C4,R11),0(R11) REFERENCE ECB IN CALLER'S KEY 39600002 MODESET EXTKEY=SUPR RESET KEY 0 39650002 NI DETFRRF1,FF-DETECB RESET CHECK FLAG 39700002 LR R2DETTCB,R0 RESTORE 39750002 SPACE 39800002 */* DET04110: L IEAV0PT02: POST ATTACH ECB */ 39900002 SPACE 39950002 DET04110 EQU * * 40000002 SR R10,R10 CLEAR 40050002 L R15,CVTPTR ADDRESS OF CVT 40100002 LR R0,R14 SAVE RETURN ADDRESS 40200002 ICM R10,B'0111',TCBCMPC-TCB(R2DETTCB) GET COMPLETION CODE 40250002 LR R12,R4OTCB ADDRESS OF MOTHER TCB 40300002 L R15,CVT0PT02-CVT(,R15) BRANCH ENTRY ADDRESS 40350002 BALR R14,R15 INVOKE POST 40400002 * NOTE - - REGISTERS 10 - 15 DESTROYED 40450002 SPACE 40500002 */* R RETURN */ 40550002 SPACE 40600002 LR R14,R0 RESTORE RETURN ADDRESS 40650002 BR R14 RETURN 40700002 SPACE 40800002 */* POSTRTN: END FLOWCHART */ 40860002 EJECT 40862002 */* ABTERMR: CHART */ 40924002 */* FOOTING 41000002 */* ABTERM SUBROUTINE */ 41050002 *********************************************************************** 41150002 * * 41200002 * SUBROUTINE ABTERMR ABTERMS A TCB. IT IS CALLED BY SUBROUTINE SUBRTN * 41250002 * AND RECOVERY RETRY ROUTINE IGC062R3. * 41300002 * * 41400002 * SUBROUTINES CALLED: NONE * 41450002 * * 41500002 * SYSTEM ROUTINES CALLED / MACROS ISSUED: CALLRTM * 41550002 * * 41600002 * RETURN CODES SET: NONE * 41700002 * * 41750002 * REGISTER USAGE: * 41800002 * R0 - DESTROYED * 41850002 * R1 - INPUT, COMPLETION CODE * 41900002 * R2 - DESTROYED * 42000002 * R7 - DESTROYED * 42050002 * R12 - ADDRESS OF TCB TO BE ABTERMED * 42100002 * R14 - RETURN ADDRESS * 42150002 * R15 - DESTROYED * 42200002 * * 42300002 *********************************************************************** 42350002 */* E ENTER ABTERMR */ 42400002 SPACE 42450002 ABTERMR EQU * ENTRY POINT 42500002 LR R7,R14 SAVE RETURN ADDRESS 42600002 SPACE 42650002 */* L CALLRTM: ABTERM TASK */ 42700002 SPACE 42750002 CALLRTM TYPE=ABTERM,DUMP=NO,COMPCOD=(1),TCB=(12) @YM03636 42800002 SPACE 42900002 */* R () RETURN */ 42950002 SPACE 43000002 LR R14,R7 RESTORE RETURN ADDRESS 43050002 BR R14 RETURN 43100002 */* ABTERMR: END FLOWCHART */ 43200002 EJECT 43250002 */* FREETCB: CHART */ 43300002 */* FOOTING 43350002 */* SUBROUTINE WHICH FREES TCB RESOURCES */ 43400002 SPACE 2 43500002 *********************************************************************** 43550002 * * 43600002 * SUBROUTINE FREETCB DEQUEUES THE DETACH TCB FROM ITS FAMILY QUEUE, * 43650002 * FREES THE TCB'S PROBLEM PROGRAM SAVE AREA, IF ONE EXISTS, AND FREES * 43700002 * THE TCB STORAGE. IT IS CALLED BY SUBROUTINE SUBRTN AND BY THE * 43800002 * BRANCH ENTRY FROM END-OF-TASK. * 43850002 * * 43900002 * SUBROUTINES CALLED: FREE, DEQUEUE * 43950002 * * 44000002 * SYSTEM ROUTINES CALLED / MACROS ISSUED: NONE * 44100002 * * 44150002 * RETURN CODES SET: NONE * 44200002 * * 44250002 * REGISTER USAGE: R5 - RESTRICTED * 44300002 * R8 - RETURN ADDRESS SAVE REGISTER * 44400002 * R2DETTCB - ADDRESS OF THE DETACH TCB * 44450002 * R14 - RETURN ADDRESS * 44500002 * * 44550002 *********************************************************************** 44600002 SPACE 2 44700002 */* E ENTER FREETCB */ 44750002 SPACE 44800002 FREETCB DS 0H ENTRY POINT 44850002 LR R8,R14 SAVE RETURN ADDRESS 44900002 SPACE 44950002 */* D (NO,DET02000,YES,) IS THERE A PROB PGM SAVE AREA */ 45020002 SPACE 45100002 SR R1,R1 CLEAR 45150002 ICM R1,B'0111',TCBFSAB-TCB(R2DETTCB) SAVE AREA ADDRESS 45200002 BZ DET02000 BYPASS FREEING IF ADDRESS 0 45300002 SPACE 45350002 */* S FREE: FREE PROBLEM PROGRAM SAVE AREA, SP 250 */ 45400002 SPACE 45450002 LA R0,SVAREAL LENGTH OF SAVE AREA 45500002 LA R3,SP250 SUBPOOL NUMBER 45570002 BAL R14,FREE FREEMAIN SAVE AREA 45650002 SPACE 45700002 */* DET02000: S DEQUEUE: UNCHAIN TCB FROM FAMILY QUEUE */ 45750002 SPACE 45800002 DET02000 EQU * * 45900002 BAL R14,DEQUEUE UNCHAIN FROM FAMILY QUEUE 45950002 SPACE 46000002 */* S FREE: FREE DETACH TCB */ 46050002 SPACE 46100002 LR R1,R2DETTCB ADDRESS OF TCB 46200002 LA R7,TCBPXLEN LENGTH OF TCB PREFIX 46250002 SR R1,R7 ADDRESS OF TCB PREFIX 46300002 LA R0,TCBLEN LENGTH OF TCB 46350002 LA R3,SP253 SUBPOOL NUMBER 46400002 BAL R14,FREE FREE TCB 46500002 SPACE 46550002 */* R RETURN TO CALLING POINT */ 46600002 SPACE 46650002 LR R14,R8 RESTORE 46700002 BR R14 RETURN 46750002 SPACE 2 46850002 */* FREETCB: END FLOWCHART */ 46900002 EJECT 46950002 */* FREE: CHART */ 47000002 */* FOOTING 47100002 */* SUBROUTINE WHICH PERFORMS FREEMAINS */ 47150002 SPACE 2 47200002 *********************************************************************** 47250002 * * 47300002 * SUBROUTINE FREE INVOKES A BRANCH ENTRY FREEMAIN. IF THE DETACH TASK * 47400002 * IS IN ABEND, THE FREEMAIN IS CONDITIONAL. OTHERWISE, THE FREEMAIN * 47450002 * IS UNCONDITIONAL. IT IS CALLED BY SUBROUTINES FREETCB AND SUBRTN. * 47500002 * * 47550002 * SYSTEM ROUTINES CALLED / MACROS ISSUED: FREEMAIN BRANCH ENTRY * 47600002 * * 47700002 * RETURN CODES SET: NONE * 47750002 * * 47800002 * REGISTER USAGE: R0 - LENGTH OF AREA TO BE FREED * 47850002 * R1 - ADDRESS OF AREA TO BE FREED * 47900002 * R2DETTCB - ADDRESS OF THE DETACH TCB * 48000002 * R3 - SUBPOOL ID OF AREA TO BE FREED * 48050002 * R4OTCB - ADDRESS OF THE MOTHER TCB * 48100002 * R5 - RESTRICTED * 48150002 * R8 - RESTRICTED * 48200002 * R12 - RETURN ADDRESS SAVE REGISTER * 48300002 * R13WKPTR - ADDRESS OF WORKAREA * 48350002 * * 48400002 *********************************************************************** 48450002 SPACE 2 48540002 */* E ENTER FREE */ 48600002 SPACE 48650002 FREE DS 0H ENTRY POINT 48700002 LR R12,R14 SAVE RETURN ADDRESS 48750002 SPACE 48800002 */* D (YES,DET03010,NO,) IS THIS A PERMANENTLY RESIDENT TASK */ 48900002 SPACE 48950002 TM TCBFLGS7-TCB(R2DETTCB),TCBRSTSK IS TASK PERM RESIDENT 49000002 BO DET03010 YES, PERFORM NO FREEMAINS 49050002 SPACE 49100002 L R7,PSAAOLD-PSA(R0) ADDRESS OF CURRENT ASCB 49150002 SPACE 49200002 */* D (NO,DET03000,YES,) WAS CONDITIONAL FREEMAIN REQUESTED */ 49300002 SPACE 49350002 TM WKFLAGS,WKCONDL CONDITIONAL FREEMAIN REQUESTED 49400002 BZ DET03000 NO, ISSUE UNCONDITIONAL REQUEST 49500002 SPACE 49550002 */* L (,DET03010) FREEMAIN: CONDITIONALLY FREE INPUT AREA */ 49600002 SPACE 49650002 FREEMAIN RC,LV=(0),A=(1),SP=(3),BRANCH=YES 49700002 B DET03010 GO EXIT SUBROUTINE 49800002 SPACE 49850002 */* DET03000: L FREEMAIN: UNCOND FREE INPUT AREA */ 49900002 SPACE 49950002 DET03000 EQU * * 50000002 FREEMAIN RU,LV=(0),A=(1),SP=(3),BRANCH=YES 50100002 SPACE 50150002 */* DET03010: R RETURN TO CALLING POINT */ 50200002 SPACE 50250002 DET03010 EQU * * 50300002 LR R14,R12 RESTORE 50400002 BR R14 RETURN 50450002 SPACE 2 50500002 */* FREE: END FLOWCHART */ 50550002 EJECT 50600002 */* DEQUEUE: CHART */ 50700002 */* FOOTING 50750002 */* SUBROUTINE REMOVES DETACH TCB FROM THE FAMILY QUEUE */ 50800002 *********************************************************************** 50850002 * * 50900002 * SUBROUTINE DEQUEUE REMOVES THE DETACH TCB FROM THE FAMILY QUEUE, * 51000002 * IF IT IS STILL ON THAT QUEUE. * 51050002 * * 51100002 * SUBROUTINES CALLED: NONE * 51150002 * * 51200002 * SYSTEM ROUTINES CALLED / MACROS ISSUED: NONE * 51250002 * * 51350002 * RETURN CODES SET: NONE * 51400002 * * 51450002 * REGISTER USAGE: * 51500002 * R2DETTCB - ADDRESS OF THE DETACH TCB * 51600002 * R4OTCB - ADDRESS OF THE MOTHER TCB * 51650002 * R7 - DESTROYED * 51700002 * R11 - DESTROYED * 51750002 * R14 - RETURN ADDRESS * 51800002 * * 51900002 * LEVEL - 2 (CALLED BY SUBROUTINE FREETCB AND THE FRR) * 51950002 * * 52000002 *********************************************************************** 52050002 SPACE 52100002 */* E ENTER DEQUEUE */ 52150002 */* P REMOVE DETACH TCB FROM THE FAMILY QUEUE */ 52250002 SPACE 52300002 DEQUEUE EQU * * 52350002 LA R11,TCBLTC-TCB(,R4OTCB) INITIAL CHAIN FIELD ADDRESS 52400002 B DET02010 ENTER LOOP 52450002 SPACE 52550002 DET02020 EQU * TOP OF LOOP 52620002 LA R11,TCBNTC-TCB(,R7) UPDATE CHAIN FIELD ADDRESS 52624002 DET02010 EQU * * 52700002 ICM R7,B'1111',0(R11) CHAIN FIELD CONTENTS (ADDRESS 52750002 * OF NEXT SUBTASK) 52850002 BZ DET02050 NO MORE SUBTASKS, RETURN 52900002 CR R7,R2DETTCB IS THIS THE DETACH TCB 52950002 BNE DET02020 NO, CONTINUE 53000002 * YES, UNCHAIN IT 53055002 L R7,TCBNTC-TCB(,R2DETTCB) ADDRESS OF NEXT SUBTASK, OR 0 53108002 ST R7,0(,R11) INTO PREVIOUS CHAIN FIELD 53200002 SPACE 53250002 */* DET02050: R () RETURN */ 53300002 SPACE 53400002 DET02050 EQU * * 53450002 BR R14 RETURN 53500002 SPACE 53550002 */* DEQUEUE: END FLOWCHART */ 53600002 TITLE 'IEAVEED0 - DETACH BRANCH ENTRY - IGC062R1' 53700002 */* IGC062R1: CHART */ 53750002 */* FOOTING 53800002 */* BRANCH ENTRY FOR ABEND AND EOT */ 53850002 *********************************************************************** 53900002 * * 53950002 * IGC062R1 IS A BRANCH ENTRY POINT FOR USE BY ABEND AND END-OF-TASK. * 54010002 * IT PROVIDES ABEND WITH A DIRECTED DETACH FUNCTION, FOR WHICH THE * 54070002 * DETACH TCB NEED NOT BE A SUBTASK OF THE CURRENT TCB. FOR END-OF- * 54150002 * TASK IT IS A RESOURCE MANAGER, AND HANDLES SCHEDULING OF ETXR, * 54240002 * POSTING ATTACH ECB, AND FREEING TCB RELATED RESOURCES. * 54300002 * * 54350002 * SUBROUTINES CALLED: FRRON, FRROFF, SUBRTN, FREETCB, POSTRTN * 54400002 * * 54450002 * SYSTEM ROUTINES CALLED / MACROS ISSUED: STAGE II EXIT EFFECTOR * 54500002 * * 54550002 * RETURN CODES SET: NONE * 54620002 * * 54680002 * REGISTER USAGE: R0 - AN ENTRY CODE: * 54750002 * 0 - EOT PROCESSING * 54800002 * 1 - ABEND PROCESSING * 54850002 * R1 - ADDRESS OF TCB TO BE DETACHED * 54920002 * R13 - ADDRESS OF A 72 BYTE REGISTER SAVE AREA * 54990002 * R14 - RETURN ADDRESS * 55060002 * R15 - ENTRY POINT ADDRESS * 55130002 * * 55200002 * NOTE: LOCAL LOCK IS HELD UPON ENTRY * 55260002 * * 55320002 *********************************************************************** 55380002 SPACE 55440002 */* E ENTER IGC062R1 */ 55500002 SPACE 55550002 IGC062R1 DS 0H ENTRY POINT 55600002 STM R14,R12,WKR14RET SAVE REGISTERS 55650002 SR R2,R2 CLEAR 55700002 STC R2,WKFLAGS CLEAR FLAGS 55800002 ST R2,WKECB CLEAR ECB 55850002 LR R2DETTCB,R1 DETACH TCB ADDRESS 55900002 USING IGC062R1,R15 55950002 L R6BASE,DET062EP ESTABLISH ADDRESSABILITY 56000002 DROP R15 56100002 SPACE 56150002 */* P GET MOTHER TCB ADDRESS */ 56200002 SPACE 56250002 L R4OTCB,TCBOTC-TCB(,R2DETTCB) SET MOTHER TCB ADDRESS 56300002 SPACE 56400002 */* S FRRON: ESTABLISH FRR */ 56450002 SPACE 56500002 BAL R14,FRRON ADD ELEMENT TO STACK 56550002 SPACE 56600002 */* P INDICATE CONDITIONAL FREEMAINS TO BE PERFORMED, BRANCH ENTRY */ 56700002 SPACE 56750002 OI WKFLAGS,WKCONDL+WKBRNTY ABEND NOT PERMISSIBLE THIS ENTRY 56800002 * DETACH WAS BRANCH ENTERED 56850002 SPACE 56900002 */* D (0,DET04000,1,) CHECK ENTRY CODE */ 56950002 SPACE 57050002 CLI WKR0+C3,C0 IS ENTRY CODE 0 57100002 BE DET04000 YES, GO PERFORM EOT PROCESSING 57150002 SPACE 57200002 */* P CLEAR TCBECB IN DETACH TCB */ 57250002 SPACE 57350002 SR R15,R15 ZERO 57400002 ST R15,TCBECB-TCB(,R2DETTCB) NO POST FOR THIS ENTRY 57450002 SPACE 57500002 */* S (,DET04010) SUBRTN: PERFORM DETACH */ 57600002 SPACE 57650002 BAL R14,SUBRTN DETACH INPUT TCB, WITH STAI=NO, 57700002 * AND WITH ABTERM ALLOWED 57750002 B DET04010 GO TO EXIT 57800002 SPACE 2 57850002 *********************************************************************** 57900002 * * 58000002 * PERFORM EOT PROCESSING * 58050002 * * 58100002 *********************************************************************** 58200002 SPACE 58250002 */* DET04000: P SET END OF TASK INDICATOR FOR FRR */ 58300002 SPACE 58350002 DET04000 EQU * * 58400002 OI DETFRRF1,DETEOT INDICATE EOT ENTRY @Y02753 58450002 SPACE 58500002 */* D (NO,DET04020,YES,) IS THERE AN ATTACH ECB */ 58600002 SPACE 58650002 ICM R11,B'1111',TCBECB-TCB(R2DETTCB) ECB ADDRESS 58700002 BZ DET04020 IF ADDRESS 0, BYPASS POST 58800002 SPACE 58850002 */* S POSTRTN: VALIDITY CHECK AND POST ATTACH ECB */ 58900002 SPACE 58950002 BAL R14,POSTRTN INVOKE POST SUBROUTINE 59000002 OI WKFLAGS,WKHOLD TCB NOT TO BE FREED 59100002 SPACE 59150002 */* DET04020: D (NO,DET04030,YES,) IS THERE AN ETXR */ 59200002 SPACE 59250002 DET04020 EQU * * 59300002 TM TCBFLGS2-TCB(R2DETTCB),TCBFETXR DOES ATTACH ETXR EXIST 59400002 BZ DET04030 NO, BYPASS SCHEDULING 59450002 SPACE 59500002 */* L STAGE II EXIT EFFECTOR: SCHEDULE ETXR */ 59550002 SPACE 59600002 L R1,TCBIQE-TCB(,R2DETTCB) IQE ADDRESS 59700002 LCR R1,R1 COMPLEMENT OF IQE ADDR IS INPUT 59750002 L R15,CVTPTR ADDRESS OF CVT 59800002 L R15,CVT0EF00-CVTMAP(,R15) ADDR OF STAGE II EXIT EFFECT 59850002 BALR R14,R15 SCHEDULE ETXR 59900002 OI WKFLAGS,WKHOLD TCB NOT TO BE FREED 59950002 SPACE 60050002 */* DET04030: P SET TCBACTIV = 0 */ 60100002 SPACE 60150002 DET04030 EQU * * 60200002 NI TCBFBYT1-TCB(R2DETTCB),FF-TCBACTIV ACTIVE SWITCH OFF 60300002 OI DETFRRF1,DETCOMPL INDICATE ECB,ETXR PROCESSING 60350002 * COMPLETED @Y02753 60400002 SPACE 60450002 */* P UNCHAIN TCB FROM DISPATCHING QUEUE */ 60500002 SPACE 60600002 L R14,PSAAOLD-PSA(R0) ADDRESS OF CURRENT ASCB 60650002 L R14,ASCBASXB-ASCB(,R14) ADDRESS OF CURRENT ASXB 60700002 SR R10,R10 INITIAL PREVIOUS TCB PTR 60750002 L R11,ASXBFTCB-ASXB(,R14) INITIAL COMPARE TCB PTR, ADDR 60800002 * OF FIRST TCB ON READY QUEUE 60900002 L R12,TCBTCB-TCB(,R11) INITIAL NEXT TCB PTR 60950002 B DET04050 GO CHECK COMPARE TCB 61000002 SPACE 61050002 DET04040 EQU * SEARCH LOOP 61100002 LR R10,R11 COMPARE TCB BECOMES PREVIOUS 61200002 LR R11,R12 NEXT BECOMES COMPARE 61210002 L R12,TCBTCB-TCB(,R12) UPDATE PTR TO NEXT TCB 61300002 DET04050 EQU * SEARCH LOOP ENTRY POINT 61350002 CR R11,R2DETTCB IS COMPARE TCB THE DETACH TCB 61400002 BNE DET04040 NO, TRY NEXT 61500002 * YES, UNCHAIN IT 61550002 LTR R10,R10 IS FIRST ELEMENT BEING UNCHAINED 61600002 BZ DET04060 YES, GO UPDATE TOP OF QUEUE PTR 61650002 ST R12,TCBTCB-TCB(,R10) NO, CHAIN NEXT TO PREVIOUS BY 61700002 * FORWARD PTR 61750002 B DET04070 GO PROCESS BACK CHAIN 61808002 DET04060 EQU * * 61900002 ST R12,ASXBFTCB-ASXB(,R14) NEXT BECOMES FIRST ON QUEUE 61950002 DET04070 EQU * * 62000002 LTR R12,R12 IS LAST ELEMENT BEING UNCHAINED 62100002 BZ DET04080 YES, GO UPDATE END OF QUEUE PTR 62150002 ST R10,TCBBACK-TCB(,R12) NO, CHAIN PREVIOUS TO NEXT BY 62200002 * BACKWARD PTR 62250002 B DET04090 UNCHAINING IS COMPLETE 62300002 DET04080 EQU * * 62350002 ST R10,ASXBLTCB-ASXB(,R14) PREVIOUS BECOMES LAST ON QUEUE 62400002 SPACE 62500002 */* DET04090: P CLEAR PSATOLD, INDICATE TASK HAS COMPLETED */ 62550002 SPACE 62600002 DET04090 EQU * * 62650002 SR R10,R10 CLEAR 62700002 ST R10,PSATOLD-PSA(R0) ZERO CURRENT TCB POINTER 62800002 OI TCBFLGS5-TCB(R2DETTCB),TCBFC TASK IS COMPLETE 62850002 SPACE 62900002 */* P DECREMENT COUNT OF TCB'S ON DISPATCH QUEUE */ 63000002 SPACE 63050002 LH R10,ASXBTCBS-ASXB(,R14) NUMBER OF TCB'S ON DISPATCHING 63100002 BCTR R10,R0 QUEUE LESS ONE 63150002 STH R10,ASXBTCBS-ASXB(,R14) SAVE NEW COUNT (FIELD IS 63200002 * SERIALIZED BY LOCAL LOCK) 63300002 SPACE 63350002 */* D (YES,DET04100,NO,) WAS THERE AN ECB OR ETXR */ 63400002 SPACE 63450002 TM WKFLAGS,WKHOLD SHOULD TCB BE FREED 63500002 BO DET04100 NO, BYPASS FREEMAIN 63550002 SPACE 63650002 */* S (,DET04010) FREETCB: FREE TCB RESOURCES */ 63700002 SPACE 63750002 BAL R14,FREETCB CLEAN UP TCB 63800002 B DET04010 GO EXIT 63900002 SPACE 63950002 */* DET04100: P SET TCBIQE = 0, TCBECB = 0, TCBFETXR = 0 */ 64000002 SPACE 64050002 DET04100 EQU * * 64100002 NI TCBFLGS2-TCB(R2DETTCB),FF-TCBFETXR ETXR OFF 64200002 SR R0,R0 CLEAR 64250002 ST R0,TCBIQE-TCB(,R2DETTCB) NO IQE PTR 64300002 ST R0,TCBECB-TCB(,R2DETTCB) NO ECB PTR 64350002 SPACE 64400002 */* DET04010: S FRROFF: CANCEL FRR */ 64500002 SPACE 64550002 DET04010 EQU * * 64600002 BAL R14,FRROFF REMOVE STACK ELEMENT 64650002 SPACE 64700002 */* R RETURN TO CALLER */ 64800002 SPACE 64850002 LM R14,R12,WKR14RET RESTORE REGISTERS 64900002 BR R14 RETURN 64950002 SPACE 65000002 */* IGC062R1: END FLOWCHART */ 65100002 TITLE 'IEAVEED0 - DETACH FRR - IGC062R2' 65200002 */* IGC062R2: CHART */ 65250002 */* FOOTING 65300002 */* FRR */ 65400002 SPACE 65450002 *********************************************************************** 65500002 * * 65550002 * IGC062R2 IS THE FUNCTIONAL RECOVERY ROUTINE (FRR) FOR DETACH. IT * 65600002 * PROVIDES FOR PARAMETER VALIDITY CHECKING, VALIDATION OF THE TCB * 65700002 * DISPATCHING AND FAMILY QUEUES, AND FOR BRANCH ENTRY, RETRY TO * 65750002 * RETURN TO THE CALLER. * 65800002 * * 65850002 * SUBROUTINES CALLED: DEQUEUE * 65900002 * * 66000002 * SYSTEM ROUTINES CALLED/MACROS ISSUED: * 66050002 * IGC044R2 - TCB QUEUE VALIDATION ROUTINE, IN CHAP MODULE IEAVECH0 * 66100002 * * 66150002 * RETURN CODES SET: 0, 4 * 66200002 * * 66300002 * REGISTER USAGE: * 66350002 * R0 - ADDRESS OF 200 BYTE WORKAREA * 66420002 * R1 - ADDRESS OF THE SDWA * 66430002 * R9 - RETURN ADDRESS SAVE REGISTER * 66500002 * R14 - RETURN ADDRESS * 66600002 * R15 - ENTRY POINT ADDRESS * 66650002 * * 66700002 *********************************************************************** 66750002 SPACE 2 66800002 */* E ENTER IGC062R2 */ 66900002 SPACE 66950002 IGC062R2 EQU * ENTRY POINT @Y02753 67000002 USING IGC062R2,R15 @Y02753 67050002 L R6BASE,DET062EP SVC ENTRY POINT ADDRESS @Y02753 67100002 DROP R15 @Y02753 67150002 L R5FRR,SDWAPARM-SDWA(,R1) ADDRESS OF FRR WORKAREA @Y02753 67200002 LR R9,R14 SAVE RETURN ADDRESS @Y02753 67300002 SPACE 67350002 */* D (NO,DET80000,YES,) DID ERROR OCCUR IN CURRENT ADDRESS SPACE */ 67400002 SPACE 67500002 OC SDWAFMID-SDWA(C2,R1),SDWAFMID-SDWA(R1) ANY ASID @Y02753 67550002 BNZ DET80000 YES, GO PERCOLATE ERROR @Y02753 67600002 SPACE 67630002 */* D (NO,DET80060,YES,) WAS DETACH BRANCH ENTERED */ 67700002 SPACE 67800002 L R13WKPTR,DETWKPTR ADDRESS OF WORKAREA @Y02753 67850002 TM WKFLAGS,WKBRNTY WAS ENTRY AT IGC062R1 @Y02753 67900002 BZ DET80060 NO, CHECK ENTRY TYPE @Y02753 67950002 SPACE 68000002 */* P INDICATE TASK HAS COMPLETED */ 68100002 SPACE 68150002 L R2DETTCB,WKR1TCB ADDRESS OF DETACH TCB @Y02753 68230002 OI TCBFLGS5-TCB(R2DETTCB),TCBFC SET COMPLETE FLAG SO THAT 68310002 * IGC044R2 WILL DEQUEUE TCB FROM THE DISPATCHING QUEUE @Y02753 68390002 SPACE 68470002 */* DET80060: D (NO,DET80020,YES,) ENTRY DUE TO VALIDITY CHECK */ 68550002 SPACE 68630002 DET80060 EQU * * 68710002 IC R10,SDWAMWP1-SDWA(,R1) ERROR-TIME PSW KEY-CMWP @Y02753 68790002 LA R11,KEYMASK MASK OUT ALL BUT KEY @Y02753 68870002 NR R10,R11 CLEAR ALL BUT KEY @Y02753 68950002 BZ DET80020 KEY ZERO, ERROR ENTRY @Y02753 69030002 SPACE 69110002 TM SDWAERRA-SDWA(R1),SDWAPCHK DID A PGM CHECK OCCUR @Y02753 69190002 BZ DET80020 NO, VALIDATE QUEUES @Y02753 69270002 SPACE 69350002 */* P REQUEST DUMP, NO RECORDING */ 69430002 SPACE 69510002 SETRP RECORD=NO,DUMP=YES NO RECORDING, USER ERROR @Y02753 69590002 SPACE 69670002 */* D (NO,DET80010,YES,) WAS DETACH ENTERED BY END OF TASK */ 69750002 SPACE 69830002 TM DETFRRF1,DETEOT CHECK FOR END OF TASK @Y02753 69910002 BZ DET80010 NO, SET COMPLETION CODE @Y02753 69990002 SPACE 70070002 */* P INDICATE INVALID ECB AT END OF TASK */ 70150002 SPACE 70230002 OI DETFRRF1,DETEOT2 SET INDICATOR @Y02753 70310002 SR R2,R2 INDICATE NO SVC DUMP @Y02753 70390002 * TO IGC044R2 70470002 B DET80070 GO VALIDATE QUEUES @Y02753 70550002 SPACE 70630002 */* DET80020: L IGC044R2: VALIDATE TCB QUEUES */ 70710002 SPACE 70790002 DET80020 EQU * * 70870002 SETRP RECORD=YES,RECPARM=DETFRRID INITIALIZE RECORDING @Y02753 70950002 LA R2,DETIDLNG ADDR OF SVC DUMP HEADER @Y02753 71030002 DET80070 EQU * * 71110002 L R15,DET044R2 QUEUE VALIDATION RTN @Y02753 71190002 BALR R14,R15 INVOKE IGC044R2 @Y02753 71270002 * ALL REGISTERS, EXCEPT 0, 1, 9, 14, MAY BE CHANGED. 71350002 SPACE 71430002 USING DET80080,R14 ADDRESSABILITY @Y02753 71510002 DET80080 EQU * RETURN POINT @Y02753 71590002 L R6BASE,DET062EP SVC ENTRY POINT ADDRESS @Y02753 71670002 DROP R14 @Y02753 71750002 L R5FRR,SDWAPARM-SDWA(,R1) FRR WORKAREA ADDRESS @Y02753 71830002 L R13WKPTR,DETWKPTR ADDRESS OF WORKAREA @Y02753 71910002 L R2DETTCB,WKR1TCB ADDRESS OF DETACH TCB @Y02753 71990002 L R4OTCB,DETOTC ADDRESS OF MOTHER TCB @Y02753 72070002 SPACE 72150002 */* D (NO,DET80000,YES,) ARE QUEUES USABLE */ 72230002 SPACE 72310002 LTR R15,R15 VALIDATION SUCCESSFUL @Y02753 72390002 BNZ DET80000 NO, GO EXIT NO RETRY @Y02753 72470002 SPACE 72550002 */* D (NO,DET80000,YES,) WAS DETACH BRANCH ENTERED */ 72630002 SPACE 72710002 TM WKFLAGS,WKBRNTY ENTERED AT IGC062R1 @Y02753 72790002 BZ DET80000 NO, GO EXIT NO RETRY @Y02753 72870002 SPACE 72950002 */* S DEQUEUE: REMOVE TCB FROM FAMILY QUEUE */ 73030002 SPACE 73110002 BAL R14,DEQUEUE UNCHAIN OFF FAMILY QUEUE @Y02753 73190002 SPACE 73270002 */* D (NO,DET80030,YES,) WAS ENTRY FROM END OF TASK */ 73350002 SPACE 73430002 TM DETFRRF1,DETEOT EOT RESOURCE MGR @Y02753 73510002 BZ DET80030 NO, RETRY NO ABTERM @Y02753 73590002 SPACE 73670002 */* D (NO,DET80090,YES,) WAS ENTRY CAUSED BY ECB CHECK */ 73750002 SPACE 73830002 TM DETFRRF1,DETEOT2 VAL CHK AT EOT IS ECB @Y02753 73910002 BZ DET80090 NO, CHECK FOR 53E ABEND @Y02753 73990002 SPACE 74070002 */* P (,DET80040) INDICATE ABTERM CODE 43E */ 74150002 SPACE 74230002 LA R0,ABEND43E YES, ABTERM CODE 43E @Y02753 74310002 B DET80040 GO EXIT, RETRY @Y02753 74390002 SPACE 74470002 */* DET80090: D (YES,DET80030,NO,) WAS ECB AND ETXR PROCESSING DONE */ 74550002 SPACE 74630002 DET80090 EQU * * @Y02753 74710002 TM DETFRRF1,DETCOMPL WAS ECB/ETXR CHECKING/PROCESSING 74790002 * PERFORMED @Y02753 74870002 BO DET80030 YES, RETRY, NO ABTERM @Y02753 74950002 SPACE 75030002 */* P (,DET80040) INDICATE ABTERM, CODE 53E */ 75110002 SPACE 75190002 LA R0,ABEND53E CODE, MOTHER TASK ABTERM @Y02753 75270002 B DET80040 GO EXIT, RETRY @Y02753 75350002 SPACE 75430002 */* DET80010: D (YES,DET80100,NO,) INVALID ECB */ 75510002 SPACE 75590002 DET80010 EQU * * 75670002 TM DETFRRF1,DETECB ATTACH ECB BEING CHECKED @Y02753 75750002 BO DET80100 YES, SET COMP CODE = 43E @Y02753 75830002 SPACE 75910002 */* P (,DET80000) RESET COMPLETION CODE TO 23E */ 75990002 SPACE 76070002 MVC SDWACMPC-SDWA(C3,R1),DETSY23E INVALID PARM WORD @Y02753 76150002 B DET80000 GO EXIT, NO RETRY @Y02753 76230002 SPACE 76310002 */* DET80100: P RESET COMPLETION CODE TO 43E */ 76390002 SPACE 76470002 DET80100 EQU * * @Y02753 76550002 MVC SDWACMPC-SDWA(C3,R1),DETSY43E CODE, INVALID ECB @Y02753 76630002 SPACE 76710002 */* DET80000: R () PERCOLATE ERROR (RC=0) */ 76790002 SPACE 76870002 DET80000 EQU * * @Y02753 76950002 SETRP FRELOCK=(LOCAL),RC=0 NO RETRY @Y02753 77030002 LR R14,R9 RESTORE @Y02753 77110002 BR R14 RETURN TO RTM @Y02753 77190002 SPACE 2 77270002 */* DET80030: P INDICATE NO ABTERM TO RETRY ROUTINE */ 77350002 SPACE 77430002 DET80030 EQU * * @Y02753 77510002 SR R0,R0 NO ABTERM COMP CODE @Y02753 77590002 SPACE 77670002 */* DET80040: R () RETRY (RC = 4) */ 77750002 SPACE 77830002 DET80040 EQU * * 77910002 LA R15,IGC062R3 ADDRESS OF RETRY ROUTINE @Y02753 77990002 STM R0,R15,SDWASR00-SDWA(R1) REGISTERS FOR RETRY RTN @Y02753 78070002 SETRP RETADDR=(15),RETREGS=YES,RC=4 EXIT CODE, RETRY @Y02753 78150002 LR R14,R9 RESTORE @Y02753 78230002 BR R14 RETURN TO RTM @Y02753 78310002 SPACE 78390002 */* IGC062R2: END FLOWCHART */ 78470002 TITLE 'IEAVEED0 - DETACH RECOVERY RETRY - IGC062R3' 78550002 */* IGC062R3: CHART */ 78630002 */* FOOTING 78710002 */* RECOVERY RETRY ROUTINE */ 78790002 SPACE 2 78870002 *********************************************************************** 78950002 * * 79030002 * IGC062R3 IS A RETRY ROUTINE SCHEDULED (VIA SETRP) IN THE DETACH FRR * 79110002 * WHENEVER RECOVERY IS BEING PERFORMED FOR BRANCH ENTRY TO DETACH. * 79190002 * THIS ROUTINE ABTERMS THE MOTHER TASK OF THE CURRENT TASK UPON * 79270002 * REQUEST. IN THIS CASE, THE MOTHER TCB ADDRESS AND THE COMPLETION * 79350002 * CODE TO BE USED ARE PASSED BY THE FRR. HOWEVER, THE PRIMARY PURPOSE * 79430002 * OF THIS ROUTINE IS TO RETURN CONTROL TO THE CALLER, SINCE FAILURE * 79510002 * TO COMPLETE PROCESSING IS A MUCH LESS DRASTIC ERROR THAN PERCOLA- * 79590002 * TION, FOR THE CIRCUMSTANCES UNDER WHICH IGC062R1 IS CALLED. * 79670002 * * 79750002 * SUBROUTINES CALLED: FRROFF,ABTERMR * 79830002 * * 79910002 * SYSTEM ROUTINES CALLED / MACROS ISSUED: NONE * 79990002 * * 80070002 * RETURN CODES SET: NONE * 80150002 * * 80230002 * REGISTER USAGE: * 80310002 * R0 - INPUT, ABTERM COMPLETION CODE, OR 0 * 80390002 * R4 - ADDRESS OF MOTHER TCB OF CURRENT TASK * 80470002 * R5FRR - ADDRESS OF SIX-WORD WORKAREA FROM SETFRR * 80550002 * R6BASE - BASE REGISTER * 80630002 * R13WKPTR - ADDRESS OF DETACH WORKAREA * 80710002 * R15 - ENTRY POINT ADDRESS * 80790002 * * 80870002 *********************************************************************** 80950002 SPACE 3 81030002 */* E ENTER IGC062R3 */ 81110002 SPACE 81190002 */* D (NO,DET70010,YES,) IS ABTERM REQUESTED */ 81270002 SPACE 81350002 IGC062R3 EQU * * @Y02753 81430002 LTR R0,R0 ANY COMPLETION CODE @Y02753 81510002 BZ DET70010 NO, BYPASS ABTERM @Y02753 81590002 SPACE 81670002 */* S ABTERMR: ABTERM THE MOTHER TASK */ 81750002 SPACE 81830002 LR R12,R4 ADDRESS OF MOTHER TCB @Y02753 81910002 LR R1,R0 COMPLETION CODE @Y02753 81990002 BAL R14,ABTERMR INVOKE ABTERM SUBROUTINE @Y02753 82070002 SPACE 82150002 */* DET70010: S FRROFF: CANCEL FRR STACK ELEMENT */ 82230002 SPACE 82310002 DET70010 EQU * * @Y02753 82390002 BAL R14,FRROFF REMOVE FRR STACK ELEMENT @Y02753 82470002 SPACE 82550002 */* P RESTORE REGISTERS */ 82630002 SPACE 82710002 LM R14,R12,WKR14RET RESTORE @Y02753 82790002 SPACE 82870002 */* R () RETURN TO CALLER OF IGC062R1 */ 82950002 SPACE 83030002 BR R14 RETURN TO EOT OR ABEND @Y02753 83110002 SPACE 2 83190002 */* IGC062R3: END FLOWCHART */ 83270002 TITLE 'IEAVEED0 - DETACH SVC - ENTRY POINT IGC062' 83350002 */* FRRON: CHART */ 83430002 */* FOOTING 83510002 */* SUBROUTINE ESTABLISHES FRR */ 83590002 SPACE 2 83670002 *********************************************************************** 83750002 * * 83830002 * SUBROUTINE FRRON ESTABLISHES DETACH'S FRR VIA SETFRR * 83910002 * * 83990002 * SYSTEM ROUTINES CALLED / MACROS ISSUED: SETFRR * 84070002 * * 84150002 * RETURN CODES SET: NONE * 84230002 * * 84310002 * REGISTER USAGE: * 84390002 * R11 - DESTROYED * 84470002 * R12 - DESTROYED * 84550002 * R7 - DESTROYED * 84630002 * R4OTC - ADDRESS OF MOTHER TCB * 84710002 * R13WKPTR - ADDRESS OF WKAREA * 84790002 * R14 - RETURN ADDRESS * 84870002 * R5FRR - OUTPUT, ADDRESS OF FRR WORKAREA * 84950002 * * 85030002 *********************************************************************** 85110002 SPACE 2 85190002 */* E ENTER FRRON */ 85270002 SPACE 85350002 */* L SETFRR: ESTABLISH FRR */ 85430002 SPACE 85510002 FRRON EQU * ENTRY POINT 85590002 LA R11,IGC062R2 ADDRESS OF FRR @Y02753 85670002 SETFRR A,FRRAD=(R11),PARMAD=(R5FRR),WRKREGS=(R12,R7) @Y02753 85750002 SPACE 85830002 */* P JOURMAL MOTHER TCB ADDRESS, WORKAREA ADDRESS */ 85910002 SPACE 85990002 ST R4OTCB,DETOTC ADDRESS OF MOTHER TCB @Y02753 86070002 ST R13WKPTR,DETWKPTR ADDRESS OF WKAREA @Y02753 86150002 SPACE 86230002 */* R RETURN TO CALLING POINT */ 86310002 SPACE 86390002 BR R14 RETURN @Y02753 86470002 SPACE 2 86550002 */* FRRON: END FLOWCHART */ 86630002 EJECT 86710002 */* FRROFF: CHART */ 86790002 */* FOOTING 86870002 */* SUBROUTINE CANCELS FRR */ 86950002 SPACE 2 87030002 *********************************************************************** 87110002 * * 87190002 * SUBROUTINE FRROFF CANCELS DETACH'S FRR VIA SETFRR. * 87270002 * * 87350002 * SYSTEM ROUTINES CALLED / MACROS ISSUED: SETFRR * 87430002 * * 87510002 * RETURN CODES SET: NONE * 87590002 * * 87670002 * REGISTER USAGE: * 87750002 * R11 - DESTROYED * 87830002 * R12 - DESTROYED * 87910002 * R14 - RETURN ADDRESS * 87990002 * * 88070002 *********************************************************************** 88150002 SPACE 2 88230002 */* E ENTER FRROFF */ 88310002 SPACE 88390002 */* L SETFRR: CANCEL FRR */ 88470002 SPACE 88550002 FRROFF EQU * ENTRY POINT 88630002 SETFRR D,WRKREGS=(R11,R12) @Y02753 88710002 SPACE 88790002 */* R RETURN TO CALLING POINT */ 88870002 SPACE 88950002 BR R14 RETURN @Y02753 89030002 SPACE 2 89110002 */* FRROFF: END FLOWCHART */ 89190002 EJECT 89270002 *********************************************************************** 89350002 * * 89430002 * CONSTANTS * 89510002 * * 89590002 *********************************************************************** 89670002 SPACE 2 89750002 DET062EP DC A(IGC062) SVC ENTRY ADDRESS 89830002 DET044R2 DC V(IGC044R2) ADDRESS OF QUEUE VERIFYING *89910002 ROUTINE IN MODULE IEAVECH0 89990002 DETSY23E DC X'23E000' SYSTEM COMPLETION CODE 90070002 DETSY43E DC X'43E000' SYSTEM COMPLETION CODE 90150002 DETIDLNG DC FL1'24' LENGTH SVC DUMP HEADER 90230002 DETFRRID DS 0CL24 RECORD PARAMETER LIST 90310002 DC CL8'IEAVEEDO' MODULE NAME 90390002 DC CL8'IGC062' CSECT NAME 90470002 DC CL8'IGC062R2' FRR ID 90550002 EJECT 90630002 CVT DSECT=YES 90710002 EJECT 90790002 IHASCVT 90870002 EJECT 90950002 IHAIQE 91030002 EJECT 91110002 IHAPSA 91190002 EJECT 91270002 IHAFRRS 91350002 EJECT 91430002 IHASDWA 91510002 EJECT 91590002 IHAASCB 91670002 EJECT 91750002 IHAASXB 91830002 EJECT 91910002 IKJTCB LIST=YES 91990002 EJECT 92070002 IKJRB 92150002 EJECT 92230002 *********************************************************************** 92310002 * * 92390002 * DETACH WORKAREA * 92470002 * * 92550002 *********************************************************************** 92630002 SPACE 92710002 WKAREA DSECT DETACH WORKAREA 92790002 WKFLAGS DS C SWITCHES 92870002 WKSTAE EQU X'80' 1 - STAE=YES SPECIFIED, 0 - NO 92950002 WKTCBFA EQU X'40' 1 - DETACH TCBFA=1, NO ABTERM 93030002 * 0 - DETACH TCBFA=0, ABTERM TASK 93110002 WKHOLD EQU X'20' 1 - ECB OR ETXR, DO NOT FREE 93190002 * TCB IN EOT PROCESSING 93270002 * 0 - FREE TCB IN EOT PROCESSING 93350002 WKCONDL EQU X'10' 1 - CONDITIONAL FREEMAINS 93430002 * 0 - UNCONDITIONAL FREEMAINS 93510002 WKECBNV EQU X'08' 1 - TCBECBNV=1 BEFORE RESET 93590002 * 0 - TCBECBNV=0 BEFORE RESET 93670002 WKBRNTY EQU X'04' 1 - DETACH WAS BRANCH ENTERED 93750002 * 0 - DETACH ENTERED VIA SVC 93830002 WKRESRV DS CL3 RESERVED 93910002 WKPREVSA DS A PREVIOUS SAVE AREA PTR 93990002 WKSUBRET EQU WKPREVSA RETURN ADDRESS SAVE WORD 94070002 WKNEXTSA DS A NEXT SAVE AREA PTR 94150002 WKECB EQU WKNEXTSA ECB FOR ABTERM OF INCOMPLETE TCB 94230002 WKR14RET DS A REGISTER 14 SAVE WORD 94310002 WKR15EP DS A REGISTER 15 94390002 WKR0 DS A REGISTER 0 94470002 WKR1TCB DS A REGISTER 1, DETACH TCB ADDRESS 94550002 WKLENTH EQU *-WKAREA LENGTH OF WORKAREA 94630002 SPACE 3 94710002 *********************************************************************** 94790002 * * 94870002 * MAPPING OF SIX WORD WORKAREA PROVIDED BY SETFRR, USED TO COMMUNI- * 94950002 * CATE WITH FRR (ENTRY POINT IGC062R2) * 95030002 * * 95110002 *********************************************************************** 95190002 SPACE 95270002 DETFRRWA DSECT 95350002 DETFRRW1 DS 0F WORD 1 95430002 DETFRRF1 DS C FLAGS 95510002 DETECB EQU X'80' 1 - ECB VALIDITY CHECK ATTEMPT 95590002 DETEOT EQU X'40' 1 - END OF TASK BRANCH ENTRY 95670002 DETCOMPL EQU X'20' 1 - ECB, ETXR PROCESS COMPLETED 95750002 DETEOT2 EQU X'10' 1 - INVALID ECB AT EOT TIME 95830002 * BITS 4-7 RESERVED 95910002 DS AL3 RESERVED 95990002 DETFRRW2 DS 0F WORD 2 96070002 DETOTC DS A ADDRESS OF MOTHER TCB, EOT ENTRY 96150002 DETFRRW3 DS 0F WORD 3 96230002 DETWKPTR DS A DETACH WORKAREA ADDRESS 96310002 DETFRRW4 DS F WORD 4 96390002 DETFRRW5 DS F WORD 5 96470002 DETFRRW6 DS F WORD 6 96550002 SPACE 2 96630002 END 96710002