TITLE ' IEAVLK00 COMMENTARY' 00187202 * /* START OF SPECIFICATIONS **** 00187402 * 00187602 *01* MODULE-NAME = IEAVLK00 ( VS2 ) 00187802 * 00188002 *01* DESCRIPTIVE-NAME = PROGRAM MANAGER MODULE 1 OF 4 00188202 * 00188402 *01* COPYRIGHT = NONE 00188602 * 00188702 *01* STATUS = VERSION 2 00188802 * 00188902 *01* CHANGE-ACTIVITY = YO27758, YO2753, ZA02572, ZA02730 - RELEASE2 00189003 * RELEASE 3 - ZA10799 00189140 * OZ16851 - SEE LABEL LOXLBLD @ZA16851 00189240 * OZ17747 - SEE LABELS NOWTP AND BRANCHOU@ZA17747 00189340 * OZ17747 - SEE LABEL FREEWORK @ZA17747 00189440 * OZ20311 - GET AND FREE LOCAL LOCK @ZA20311 00189540 * OZ18512 - ALLOW FOR TWO BYTE EBCDIC REASON 00189640 * CODE IN MESSAGE @ZA18512 00189740 * OZ28684 - RESTORE REASON CODE AFTER FREEMAINS 00189940 * ARE DONE FOR THE ERRET OPTION@ZA28684 00190140 * 00190340 *01* FUNCTION = THIS MODULE CONTAINS THE DESCRIPTION AND CODE FOR 00190440 * LINK SVC 6 ENTER AT IGC006 00190540 * XCTL SVC 7 ENTER AT IGC007 00190640 * LOAD SVC 8 ENTER AT IGC008 00190940 * DELETE SVC 9 ENTER AT IGC009 00191240 * SYNCH SVC 12 ENTER AT IGC012 00191502 * THE SERVICE ROUTINES ABOVE RECEIVE CONTROL FROM THE SVC FIRST 00200002 * LEVEL INTERRUPT HANDLER. EACH ROUTINE IS ENTERED WITH THE 00208502 * LOCAL LOCK, AND 00210502 * HOLDS THE LOCAL LOCK IN MOST SECTIONS OF CODE IN THIS MODULE. 00217002 * 00225502 * ADDITIONAL CODE IS INCLUDED TO 00234002 * PERFORM LINK FUNCTION FOR ATTACH. 00242502 * ENTER AT IEAQCS01 00251002 * RESTART A REQUEST THROUGH LINK. 00259502 * ENTER AT IEAQCS02 (CDCONTRL) 00268002 * START THE NEXT REQUEST ON A SERIALLY REUSABLE PROGRAM 00276502 * ENTER AT IEAQCS03 (CDEPILOG) 00285002 * INTERFACE WITH BLDL AND FETCH 00293502 * BRANCH TO IEAVLK01 00302002 * 00310502 *01* NOTES = THE FOLLOWING IS A DESCRIPTION OF THE DEPENDENCIES, 00319002 * CONVENTIONS, AND FUNCTIONS OF IEAVLK00 00327502 * 00336002 *02* CHARACTER-CODE-DEPENDENCIES = IEAVLK00 IS EBCDIC CHARACTER CODE 00344502 * DEPENDENT. INSTRUCTIONS WITH DEPENDENCIES ARE PRECEDED WITH THE 00353002 * FOLLOWING COMMENT. 00361502 * 00370002 * THE NEXT INSTRUCTION IS EBCDIC CHARACTER CODE DEPENDENT. 00378502 * 00387002 *02* DEPENDENCIES = NONE 00395502 * 00397502 *02* PERFORMANCE = THE FOLLOWING IS A FUNCTIONAL DESCRIPTION OF 00404002 * IGC006. REFERENCES TO IEAVLK01 ARE INCLUDED TO CLARIFY THE 00412502 * ORDER OF SEARCHES. PLEASE REFER TO THE SPECIFICATIONS IN 00421002 * IEAVLK01 FOR ADDITIONAL INFORMATION. 00429502 * 00438002 * 1. VALIDITY CHECK RESOURCES (ENTRY POINT NAME, PARAMETER 00446502 * LISTS, ETC.) PRIOR TO MAIN LINE PROCESSING 00455002 * 2. PERFORM THE LINKAGE TO THE MODULE WHOSE ENTRY POINT NAME 00472002 * HAS BEEN SPECIFIED IN THE MACRO INSTRUCTION. 00480502 * 3. IN PERFORMING THE LINKAGE A SPECIFIC ORDER IS FOLLOWED 00489002 * IN SEARCHING FOR AND DETERMINING THE LOAD MODULE TO 00497502 * WHICH LINKAGE IS DESIRED. 00506002 * A. THE CONTENTS DIRECTORY ENTRIES (CDES) FOR LOAD 00514502 * MODULES CONTAINED IN THE JOB PACK AREA ARE 00523002 * SEARCHED FOR AN ENTRY CONTAINING THE SPECIFIED 00531502 * ENTRY POINT NAME (IN IEAVLK00). 00540002 * B. IF THE DCB OPERAND WAS WRITTEN IN THE MACRO 00548502 * INSTRUCTION, THE SPECIFIED LIBRARY IS SEARCHED 00557002 * ( IN IEAVLK01). 00565502 * C. IF THE DCB OPERAND WAS OMITTED IN THE MACRO 00574002 * INSTRUCTION, THE JOB LIBRARIES FOR ASCENDING 00582502 * ORIGINATING TCB'S (IF JOB LIBS EXIST) ARE SEARCHED 00591002 * UNTIL THE JOBSTEP TCB'S JOBLIB IS SEARCHED (IN 00599502 * IEAVLK01) 00608002 * D. THE CONTENTS DIRECTORY ENTRIES FOR LOAD MODULES 00616502 * CONTAINED IN THE ACTIVE LINK PACK AREA ARE SEARCHED 00625002 * FOR AN ENTRY CONTAINING THE SPECIFIED ENTRY POINT 00633502 * NAME, VIA CDSEARCH IN IEAVLK00. 00642002 * E. THE PAGEABLE LINK PACK AREA IS SEARCHED VIA 00693002 * IEAVVMSR IN IEAVLK00. 00701502 * F. THE LINK LIBRARY IS SEARCHED IN IEAVLK01. 00710002 * 00718502 * IF THE DE OPERAND, INSTEAD OF THE EP OR EPLOC OPERAND WAS 00727002 * SPECIFIED IN THE MACRO INSTRUCTION, THE CONTENTS DIRECTORY 00735502 * AND THE LIBRARIES ARE SEARCHED AS FOLLOWS. 00744002 * 00752502 * A. THE CONTENTS DIRECTORY ENTRIES FOR LOAD MODULES 00761002 * CONTAINED IN THE JOB PACK AREA ARE SEARCHED, VIA 00769502 * CDSERACH IN IEAVLK00. 00778002 * B. IF THE SPECIFIED DIRECTORY ENTRY IS FOR A LOAD 00786502 * MODULE CONTAINED IN THE LINK LIBRARY, THE CONTENTS 00795002 * DIRECTORY ENTRIES FOR THE ACTIVE LINK PACK AREA 00803502 * ARE SEARCHED IN IEAVLK00. 00812002 * C. THE PAGEABLE LINK PACK AREA IS SEARCHED IN IEAVLK01 00820502 * D. IF THE DCB OPERAND WAS WRITTEN THE LOAD MODULE IS 00829002 * FETCHED FROM THE LIBRARY IT SPECIFIES, IN IEAVLK01. 00837502 * E. IF THE DCB OPERAND WAS OMITTED, THE 'Z-BYTE' IN THE 00846002 * DIRECTORY ENTRY WILL INDICATE WHETHER THE JOBLIB, 00854502 * LINKLIB, OR TASKLIB DCB SHOULD BE USED TO FETCH THE 00863002 * MODULE (IN IEAVLK01). 00871502 * 00880002 * 4. IN PERFORMING THE LINKAGE THE FOLLOWING WILL OCCUR: 00897002 * 00905502 * A PROGRAM REQUEST BLOCK (PRB) WILL BE CREATED. 00914002 * THE FOLLOWING FIELDS WILL BE SET 00922502 * RBSIZE - NUMBER OF DOUBLE WORDS 00931002 * RBTCBNXT - SET IN RB WHICH POINTS TO THE TCB 00939502 * RBFDYN - SET TO 1, RB IS DYNAMIC, AND SO CAN 00948002 * BE FREED UPON EXIT. 00956502 * RBCDE - POINTER TO THE CONTENTS DIRECTORY 00965002 * ENTRY. 00973502 * RBOPSW - SYSTEM MASK, PROTECTION KEY, PROBLEM 00982002 * STATE, PROGRAM MASK, ALL ARE PROP- 00990502 * OGATED FROM THE PREVIOUS LINKAGE 00999002 * FOR LINK, LOAD, AND XCTL. FOR ATTACH 01007502 * KEY AND STATE ARE TCB DEFINED, ALL 01016002 * MASKS ARE SET ENABLED. 01024502 * RBPGMQ - WILL CONTAIN A QUEUE POINTER, FOR 01033002 * SERIALLY REUSABLE ROUTINES. 01041502 * RBWCF - ZERO WAIT COUNT 01050002 * RBLINK - CHAIN FIELD THROUGH WHICH THE RBS ARE 01058502 * QUEUED TO THE TCB. IF RBTCBNXT IS 1, 01067002 * THIS IS THE TCB ADDRESS. 01075502 * 01084002 * A CONTENTS DIRECTORY ENTRY WILL BE CREATED IF THE 01092502 * REQUIRED LOAD MODULE WAS NOT IN VIRTUAL STORAGE, OR DID 01101002 * NOT HAVE REUSABLE ATTRIBUTES, OR WAS FOUND IN THE LPA 01109502 * DIRECTORY. 01118002 * 01126502 * WHEN A LOAD MODULE IS LOADED INTO VIRTUAL STORAGE AN 01135002 * ENTRY POINT NAME IS PLACED IN THE CONTENTS DIRECTORY, AND 01143502 * ITS ATTRIBUTES ARE EXAMINED. OF INTEREST ARE THE 01152002 * FOLLOWING ATTRIBUTES: 01160502 * REUSABILITY - TO ESTABLISH HOW SUBSEQUENT REQUESTS FOR 01169002 * THE SAME MODULE MAY BE SATISFIED. 01177502 * LIBRARY SOURCE - TO DETECT LINK LIBRARY MODULES THAT 01186002 * ARE REENTERABLE, AND USE THEM ACROSS JOB STEPS. 01194502 * IN TEST - DETECT A MODULE RUNNING UNDER TESTRAN. 01203002 * ALIAS - DETECT THAT A MODULE HAS MORE THAN ONE ENTRY 01211502 * NAME, AND POSSIBLY MORE THAN ONE ENTRY POINT. 01220002 * AVOID HAVING THIS TYPE OF MODULE MORE THAN ONCE 01228502 * IF POSSIBLE. 01237002 * 01245502 * 5. FETCHING MODULES INTO ONE OF THE TWO PACK AREAS WILL BE 01254002 * DONE ACCORDING TO ATTRIBUTES. REENTRANT MODULES FROM 01262502 * VARIOUS LIBRARIES WILL HAVE BEEN PLACED IN THE PAGEABLE 01271002 * LINK PACK AREA BY NIP. (NUCLEUS INITIALIZATION.) 01279502 * ALL OTHERS WILL BE PLACED INTO VARIOUS JOB PACK AREAS 01288002 * BY IEAVLK01. 01296502 * ANY ADDITION TO THE ACTIVE LINK PACK AREA WILL BE 01305002 * REFLECTED IN THE LINK PACK AREA CONTROL QUEUE, WHICH IS 01313502 * A COLLECTION OF CONTENTS DIRECTORY ENTRIES DESCRIBING 01322002 * ALL ACTIVE,MODIFIED, AND FIXED LOAD MODULES IN THE LINK 01330502 * PACK AREA. THE ADDRESS OF BOTH THE LPA QUEUE AND THE 01339002 * PAGED LINK PACK DIRECTORY ARE FOUND IN THE CVT. 01347502 * ANY ADDITIONS TO THE JOB PACK AREA WILL BE REFLECTED 01356002 * IN A JOB PACK AREA CONTROL QUEUE, WHICH IS A 01364502 * COLLECTION OF CONTENTS DIRECTORY ENTRIES DESCRIBING 01373002 * ALL LOAD MODULES IN THE JOB PACK AREA FOR A JOB STEP. 01381502 * THE ORIGIN FOR A JPAQ IS A JOB STEP TCB. 01390002 * 01398502 * 6. SHARING OF LOAD MODULES IN ACCORDANCE WITH REUSABILITY 01407002 * ATTRIBUTES IS ACCOMPLISHED IN THE FOLLOWING MANNER: 01415502 * 01424002 * REENTERABLE FROM LINK PACK AREA - A SINGLE COPY OF 01432502 * A LOAD MODULE CAN BE USED BY ALL JOB STEPS IN 01441002 * THE SYSTEM. 01449502 * 01458002 * REENTERABLE FROM THE JOB PACK AREA - A SINGLE COPY 01466502 * IN THE JOB PACK AREA MAY BE USED BY ALL STEPS 01475002 * WITHIN THE JOB STEP. 01483502 * 01492002 * SERIAL REUSABLE FROM ANYWHERE - A SINGLE COPY WILL 01500502 * RESIDE IN THE JOB PACK AREA, AND MAY BE USED BY ALL 01509002 * TASKS OF THE JOBSTEP. THE USE OF THE MODULE IS 01517502 * SERIALIZED BY QUEUING THE REQUESTS BY PRIORITY. 01526002 * 01534502 * NOT REUSABLE FROM ANYWHERE - EVERY LINKAGE WILL FETCH 01543002 * A NEW COPY OF THE MODULE INTO THE JOB PACK AREA. 01551502 * 01560002 * 7. FOR TSO MODULES IN TEST, THE TTSAVE MODULE WILL BE 01568502 * INVOKED VIA AN SVC CALL IN IEAVLK01. 01577002 * 01585502 *02* RESTRICTIONS = NONE 01594002 * 01596002 *02* REGISTER-CONVENTIONS = THE REGISTER CONVENTIONS USED BY 01602502 * IEAVLK00 ARE DESCRIBED UNDER THE TOPIC REGISTER EQUATES. 01611002 * 01619502 *02* PATCH-LABEL = THIS MODULE IS RESIDENT NUCLEUS, AND HAS NO PATCH 01628002 * SPACE. 01636502 * 01645002 *01* MODULE-TYPE = MODULE 01653502 * 01662002 *02* PROCESSOR = ASSEMBLER 01670502 * 01679002 *02* MODULE-SIZE = 3250 BYTES 01687502 * 01696002 *02* ATTRIBUTES = REENTERABLE 01704502 * 01713002 *01* ENTRY = IGC006 01721502 * 01730002 *02* PURPOSE = LINK SVC ENTRY, FUNCTION AS IN NOTES ABOVE. 01738502 * 01747002 *02* LINKAGE = SVC 01755502 * 01764002 *02* INPUT = PSW ENABLED, SUPERVISOR STATE, PROTECT KEY OF ZERO 01774002 * LOCKS HELD: LOCAL 01784002 * REGISTERS ARE: 01791502 * 3 - CVT ADDRESS 01798002 * 4 - CURRENT TCB ADDRESS 01806502 * 5 - CURRENT RB ADDRESS 01815002 * 15 - ADDRESS OF PARAMETER LIST IN FOLLOWING FORMAT: 01823502 * AL1(FLAG) FLAG IS X'80' FOR DE FORM, 01832002 * IS X'00' FOR EP AND EPLOC. 01840502 * AL3(ADDR1) ADDRESS OF ENTRY POINT NAME, 01849002 * OR DE, FLAG DENOTES WHICH. 01857502 * AL1(FLAG) FLAG IS X'80' IF PARAMETER 01859502 * LIST IS EXTENDED TO A THIRD 01861502 * WORD, IS X'00' IF PARAMETER 01863502 * LIST IS ONLY TWO WORDS. 01865502 * AL3(ADDR2) ADDRESS OF DCB. IS ZERO IF 01866002 * NO DCB WAS SPECIFIED. 01874502 * FIRST BYTE IS IGNORED, NOW 01883002 * UNSUPPORTED LCS OPTION BYTE. 01891502 * AL4(ADDR3) ADDRESS OF ERRET ROUTINE. 01893502 * OTHER REGISTERS IRRELEVANT 01900002 * 01908502 *02* OUTPUT = LINKAGE ASSISTED. 01917002 * REGISTERS ARE: 01925502 * 14 - RETURN ADDRESS (POINTS TO AN SVC 3 ) 01934002 * 15 - ENTRY POINT ADDRESS LINKED TO 01942502 * 0 - CHANGED 01951002 * OTHER REGISTERS ARE TRANSPARENT 01959502 * 01968002 *02* EXIT-NORMAL = TO ROUTINE TO BE LINKED TO VIA EXIT PROLOGUE 01976502 * OR - TO WAIT IF REQUEST WAS QUEUED 01985002 * OR - TO MODULE IEAVLK01 TO PERFORM BLDL - FETCH INTERFACES 01993502 * FOR A MODULE NOT FOUND DURING CDSEARCH OR NOT REUSABLE 02002002 * WHEN TESTED IN CDALLOC. 02010502 * 02019002 *02* EXIT-ERROR = TO ABEND WITH CODES AS FOLLOWS 02027502 * 106 - ISSUED BY IEAVLK01 FOR FETCH ERROR 02036002 * REGISTER 15 HAS E - AN INVALID ADDRESS WAS DETECTED 02044502 * F - I/O ERROR OCCURED 02053002 * 206 - PARAMETER LIST ERROR DETECTED BY IEAVLK00 02061502 * REGISTER 15 HAS 1 - LIST ADDRESS ERROR 02070002 * 2 - NAME/DE ADDRESS ERROR 02078502 * 3 - DE SIZE EROOR 02087002 * 306 - AUTHORIZED ROUTINE ATTEMPTED TO USE A NON-AUTHORIZED 02089002 * LIBRARY MODULE. 02091002 * 406 - ISSUED BY IEAVLK00 AND IEAVLK01 TO INDICATE THAT AN 02095502 * ATTACH, XCTL,OR LINK WAS ISSUED TO A LOADABLE ONLY 02104002 * MODULE. 02112502 * 706 - ISSUED BY IEAVLK01 TO INDICATE THAT A MODULE WAS 02138002 * MARKED NOT EXECUTABLE BY THE LINKAGE EDITOR. 02146502 * 806 - MODULE NOT FOUND BY IEAVLK00 OR IEAVLK01 02155002 * REGISTER 15 HAS 4 - MODULE NOT IN SPECIFIED PDS 02163502 * 8 - I/O ERROR DURING BLDL 02172002 * 12 - MODULE NOT IN LPA OR LPA 02180502 * DIRECTORY 02189002 * 16 - DCB FOR BLDL NOT OPEN @ZA18512 02193040 * 906 - ISSUED BY IEAVLK00 TO INDICATE THAT A LLE COUNT 02197502 * OR A CDE COUNT EXCEEDED X'7FFF'. 02206002 * A06 - ISSUED BY IEAVLK00 TO INDICATE THAT AN INTERLOCK 02214502 * WAS DETECTED IN THE USE OF A SERIALLY REUSABLE MODULE 02223002 * 02231502 *01* ENTRY = IGC007 02240002 * 02248502 *02* PURPOSE = XCTL SERVICE ROUTINE 02257002 * 1. PERFORM THE LINKAGE TO THE LOAD MODULE SPECIFIED. THE 02265502 * MODULE GIVEN CONTROL EXECUTES AT THE SAME LEVEL OF 02274002 * CONTROL AS THE MODULE ISSUING THE XCTL MACRO INSTRUCTION 02282502 * 2. THE ORDER OF SEARCH OF LISTS AND LIBRARIES IS THE SAME AS 02291002 * FOR IGC006. 02299502 * 3. THE PRB AND CDENTRY ARE CREATED AND UPDATED AS FOR IGC006. 02308002 * 4. FETCHING AND PACKING IS DONE AS FOR LINK. 02316502 * 5. CHANGE THE RB ADDRESS IN THE STAE CONTROL BLOCK 02325002 * IS DONE BY THE TASK RECOVERY RESOURCE MANAGER (TRRM). 02352502 * 6. FOR TYPE 4 SVC'S THE CURRENT SVRB WILL BE RECLAIMED DURING 02359002 * PROCESSING. 02367502 * 02376002 *02* LINKAGE = SVC 02412002 * 02414002 *02* INPUT = PSW ENABLED, SUPERVISOR STATE, PROTECT KEY OF ZERO 02416002 * LOCKS HELD: LOCAL 02416402 * REGISTERS ARE: 02418402 * 3 - CVT ADDRESS 02425502 * 4 - CURRENT TCB ADDRESS 02435502 * 5 - CURRENT RB ADDRESS 02445502 * 15 - ADDRESS OF PARAMETER LIST IN FOLLOWING FORMAT: 02445602 * AL1(FLAG) FLAG IS X'80' FOR DE FORM, 02445702 * IS X'00' FOR EP AND EPLOC. 02447902 * AL3(ADDR1) ADDRESS OF ENTRY POINT NAME, 02449902 * OR DE, FLAG DENOTES WHICH. 02451902 * AL4(ADDR2) ADDRESS OF DCB. IS ZERO IF 02452302 * NO DCB WAS SPECIFIED. 02452402 * FIRST BYTE IS IGNORED, NOW 02454102 * UNSUPPORTED LCS OPTION BYTE. 02456102 * OTHER REGISTERS IRRELEVANT 02456502 * 02456902 *02* OUTPUT = SAME AS IGC006 02457602 * 02459302 *02* EXIT-NORMAL = SAME AS IGC006 02461002 * 02467102 *02* EXIT-ERROR = SAME AS IGC006 02474202 * 02481302 *01* ENTRY = IGC008 02488402 * 02495502 *02* PURPOSE = SVC LOAD ENTRY POINT 02502602 * 1. ACQUIRE A SPECIFIED LOAD MODULE AND RETAIN THE MODULE FOR 02509702 * USE BY THE TASK ISSUING THE LOAD. 02516802 * 2. SEARCHES AS IN IGC006. 02523902 * 3. DURING THE TIME THAT A MODULE IS RETAINED BY THE REQUESTING 02531002 * TASK, THE TASK IS SAID TO BE RESPONSIBLE FOR THE MODULE. 02538102 * A TWELVE BYTE LOAD LIST ELEMENT IS CREATED FOR EACH MODULE 02545202 * RETAINED BY A TASK. THIS LOAD LIST ELEMENT WILL POINT TO 02552302 * THE CDE DESCRIBING THE MODULE. 02559402 * 4. A MODULE THAT IS LOADED WILL CAUSE THE USE COUNT IN THE 02566502 * CDE TO BE INCREMENTED. THE COUNT IN THE CDE IS THE TOTAL 02573602 * USE FOR THE MODULE, IN ALL TASKS OF ALL JOBSTEPS. 02580702 * 5. A RESPONSIBILITY COUNT IS ALSO KEPT IN THE LLE, WHICH IS 02588502 * INCREMENTED BY LOAD, AND DECREMENTED BY DELETE. WHEN 02597002 * A MODULE HAS A USE COUNT OF ZERO IN THE LLE, THE LLE IS 02605502 * FREED. WHEN THE CDE COUNT GOES TO ZERO, THE CDE AND ALL 02614002 * STORAGE ALLOCATED TO THE MODULE IS FREED. 02622502 * 6. A SYSTEM RESPONSIBILITY COUNT IS ALSO MAINTAINED IN THE 02624502 * LEE AND IS INCREMENTED ON SYSTEM LOADS AND DECREMENTED ON 02630402 * SYSTEM DELETION. THE RESPONSIBILITY COUNT MUST ALWAYS BE 02637502 * GREATER THAN OR EQUAL TO THE SYSTEM USE COUNT. 02644602 * 7. A LOAD REQUEST IN DISTINCTION TO A LINK REQUEST IS NOT 02651702 * QUEUED FOR A SERIALLY REUSABLE MODULE. THE ENTRY POINT 02658802 * IS RETURNED EVEN IF THE MODULE IS IN USE. 02665902 * 8. FETCHING IS HANDLED AS FOR IGC006. 02673002 * 02680102 *02* LINKAGE = SVC 02687202 * 02694302 *02* INPUT = PSW AS FOR IGC006 02701402 * REGISTERS ARE AS FOLLOWS: 02708502 * 0 - ADDRESS OF ENTRY POINT NAME OR 02715602 * ADDRESS OF DE IN COMPLEMENTED FORM. 02722702 * 1 - DCB ADDRESS OR ZERO. 02729802 * THE HIGH ORDER BIT IS A FLAG WITH THE FOLLOWING 02736902 * MEANING: 02744002 * X'80' - RETURN REQUESTED ON ERROR CONDITION 02751102 * X'00' - ABEND ON ERROR CONDITION 02758202 * 3 - ADDRESS OF CVT 02765302 * 4 - ADDRESS OF CURRENT TCB 02772402 * 5 - ADDRESS OF CURRENT RB 02779502 * OTHER REGISTERS IRRELEVANT 02786602 * 02793702 *02* OUTPUT = REGISTERS ARE AS FOLLOWS: 02800802 * 0 - ADDRESS OF LOAD MODULE REQUESTED. 02807902 * 1 - HIGH ORDER BYTE CONTAINS AUTHORIZATION CODE 02815002 * LOW ORDER 3 BYTES CONTAIN SIZE OF MODULE IN 02822102 * DOUBLE WORDS. 02829202 * 02836302 *02* EXIT-NORMAL = RETURN TO CALLER VIA EXIT PROLOGUE 02843402 * 02850502 *02* EXIT-ERROR = SAME AS FOR IGC006 02857602 * 02864702 *01* ENTRY = IGC009 02871802 * 02878902 *02* PURPOSE = SVC DELETE ENTRY POINT 02886002 * 2. LOCATE THE NAMED MODULE. IF IT IS FOUND ON THE LOAD LIST 02975802 * DECREMENT THE LOAD COUNT BY 1. AND, IF SYSTEM REQUEST 02977002 * DECREMENT THE SYSTEM RESPONSIBILITY COUNT BY 1. 02977402 * IF THE COUNT REACHES ZERO FREE THE LLE. IF THE MODULE 02977802 * IS NOT FOUND RETURN TO THE CALLER WITH A CODE OF 4 IN 02977902 * REGISTER 15. 02979502 * 3. DECREMENT THE USE COUNT IN THE CDE IF THE MODULE WAS 02983202 * FOUND. IF THE COUNT GOES TO 02984802 * ZERO, FORCE THE PURGING OF THE MODULE VIA CDE HOUSEKEEPING 02986402 * ROUTINE. 02988002 * 02991802 *02* LINKAGE = SVC 02998402 * 03005002 *02* INPUT = PSW AS FOR IGC006 03015502 * REGISTERS ARE AS FOLLOWS: 03017502 * 0 - ADDRESS OF ENTRY POINT NAME OR 03019502 * ADDRESS OF DE IN COMPLEMENTED FORM. 03021502 * 1 - DCB ADDRESS OR ZERO. 03021902 * 3 - ADDRESS OF CVT 03030002 * 4 - ADDRESS OF CURRENT TCB 03040002 * 5 - ADDRESS OF CURRENT RB 03040402 * OTHER REGISTERS IRRELEVANT 03042702 * 03044702 *02* OUTPUT = REGISTERS ARE SET AS FOLLOWS: 03047502 * 15 - SET TO 0 IF MODULE FOUND 03048602 * SET TO 4 IF MODULE NOT FOUND 03056702 * OTHER REGISTERS PRESERVED 03064802 * 03072902 *02* EXIT-NORMAL = TO USER WITH EXIT CODES AS ABOVE 03081002 * 03089102 *02* EXIT-ERROR = NONE 03097202 * 03105302 *01* ENTRY = IGC012 03113402 * 03121502 *02* PURPOSE = SVC SYNCH ENTRY POINT 03129602 * 1. PROVIDE A SUPERVISOR ROUTINE THE ABILITY TO TAKE A 03137702 * SYNCHRONOUS EXIT TO A USER SUBROUTINE. 03145802 * 2. AVOID USING LINK TO ELIMINATE CDES. 03153902 * 3. ALLOW THE SUPERVISOR ROUTINE THE ABILITY TO REGAIN 03162002 * CONTROL IN SUPERVISOR MODE, AFTER THE EXIT ROUTINE 03170102 * COMPLETES IN PROBLEM PROGRAM MODE. 03178202 * 4. ALLOW STAE THE ABILITY TO SCHEDULE A SYNCHRONOUS EXIT 03186302 * ROUTINE IN PRIVILEDGED MODE. 03194402 * 03202502 *02* LINKAGE = SVC 03210602 * 03218702 *02* INPUT = REGISTERS ARE AS FOLLOWS: 03226802 * 15 - ENTRY POINT TO GET CONTROL 03234902 * 3 - ADDRESS OF CVT 03243002 * 4 - ADDRESS OF TCB 03251502 * 5 - ADDRESS OF RB 03260002 * OTHER REGISTERS IRRELEVANT 03268502 * 03277002 *02* OUTPUT = REGISTERS AS FOLLOWS : 03285502 * 14 - ADDRESS OF AN SVC EXIT 03294002 * 15 - UNCHANGED (ENTRY POINT) 03302502 * OTHER REGISTERS UNCHANGED 03311002 * 03319502 *02* EXIT-NORMAL = TO ENTRY POINT PASSED IN REGISTER 15 VIA SVC EXIT 03328002 * 03336502 *02* EXIT-ERROR = NONE 03345002 * 03353502 *01* ENTRY = IEAQCS01 03362002 * 03370502 *02* PURPOSE = LINK SERVICE FOR ATTACH 03379002 * 03387502 *02* LINKAGE = BRANCH 03396002 * 03404502 *02* INPUT = 03413002 * 03438502 * PSW = ENABLED, KEY 0, SUPERVISOR STATE 03440502 * LOCKS HELD = NONE 03442502 * GR0 - ADDRESS OF REQUESTED MODULE NAME OR PDS DE 03444502 * (COMPLEMENTED) 03446502 * GR1 - ADDRESS OF DCB 03446902 * GR3 - ADDRESS OF CVT 03454902 * GR4 - ADDRESS OF TCB 03464902 * GR5 - ADDRESS OF SVRB 03474902 * GR2,6-15 ARE IRRELEVANT 03476902 * THE MODULE NAME ON EP OR EPLOC OPERANDS WILL BE THE FIRST 03478902 * WORD OF THE RBXSA (RB EXTENDED SAVE AREA). ON DE OPERANDS, 03479302 * ATTACH WILL GETMAIN A SAVE AREA FROM SUBPOOL 255 FOR THE 03479702 * LENGTH OF THE BLDL ENTRY PLUS 4. THE SIZE OF THE BLDL ENTRY 03479802 * IS PLACED IN THE FIRST WORD AND THE BLDL ENTRY FOLLOWS. 03479902 * REGISTER 0 POINTS TO EITHER THE GOTTEN DE SAVE AREA OF THE 03480202 * RBXSA. SEE INPUTS. 03480602 * THE NINTH (9TH) BYTE OF THE RBXSA WILL CONTAIN A CODE AS 03480702 * FOLLOWS: 03480802 * X'80' - THE CALLER OF ATTACH IS AN AUTHORIZED ROUTINE. 03480902 * X'00' - THE CALLER OF ATTACH IS AN UNAUTHORIZED ROUTINE. 03483002 * THE REGISTERS TO BE PASSED TO THE ATTACHEE ARE STORED IN THE 03485002 * SVRB REGISTER SAVE AREA. R13 WILL BE SET BY ATTACH TO A USER 03487002 * REGISTER SAVE AREA. R14 AND R15 ARE IRRELEVENT SINCE THEY 03487102 * WILL BE SET BY PROGRAM MANAGER. 03487202 *02* OUTPUT = SAME AS IGC006 03487402 * 03489502 *02* EXIT-NORMAL = SAME AS IGC006 03496002 * 03504002 *02* EXIT-ERROR = SAME AS IGC006 03512002 * 03520002 *01* ENTRY = IEAQCS02 03528002 * 03536002 *02* PURPOSE = RESTART A QUEUED REQUEST THROUGH MAINLINE LINK 03544002 * 03552002 *02* LINKAGE = BRANCH 03560002 * 03568002 *02* INPUT = REGISTERS AND FIELDS AS FOLLOWS 03576002 * 3 - CVT ADDRESS 03584002 * 4 - TCB ADDRESS 03592002 * 5 - RB ADDRESS 03600002 * 6 - BASE ADDRESS 03608002 * 8 - CDE QUEUE TO SEARCH 03616002 * 9 - ADDRESS OF NAME REQUESTED 03624002 * 10 - ADDRESS OF DCB OR ZERO 03632002 * OTHER REGISTERS NOT USED 03640002 * SVRB EXTENDED SAVE AREA FULLY INITIALIZED 03648002 * 03656002 *02* OUTPUT = SAME AS IGC006 03664002 * 03672002 *02* EXIT-NORMAL = SAME AS IGC006 03680002 * 03688002 *02* EXIT-ERROR = SAME AS IGC006 03696002 * 03704002 *01* ENTRY = IEAQCS03 03712002 * 03720002 *02* PURPOSE = RESTART A QUEUED SERIAL REUSABLE REQUEST 03728002 * 03736002 *02* LINKAGE = BRANCH 03744002 * 03752002 *02* INPUT = SAME AS IEAQCS02, AND ALSO: 03760002 * 11 - ADDRESS OF REQUESTED CDE 03768002 * 12 - ADDRESS OF MAJOR CDE 03776002 * NOTE - REGS 11 AND 12 ARE EQUAL IF THE REQUEST WAS 03784002 * FOR A MAJOR NAME 03792002 * 03800002 *02* OUTPUT = SAME AS IGC006 03808002 * 03816002 *02* EXIT-NORMAL = SAME AS IGC006 03824002 * 03832002 *02* EXIT-ERROR = SAME AS IGC006 03840002 * 03848002 *01* ENTRY = IEAVVMSR 03856002 * 03864002 *02* PURPOSE = TO SEARCH THE PAGEABLE LPA DIRECTORY FOR AN LPDE 03872002 * REPRESENTING THE REQUESTED MODULE 03880002 * 03888002 *02* LINKAGE = BALR 03896002 * 03904002 *02* INPUT = REGISTERS AS FOLLOWS 03912002 * 0 - LEFT HALF OF NAME 03920002 * 1 - RIGHT HALF OF NAME 03928002 * 3 - CVT ADDRESS 03936002 * 14 - RETURN ADDRESS 03944002 * 03952002 *02* OUTPUT = REGISTERS AS FOLLOWS 03960002 * 0 - LPDE ADDRESS IF FOUND 03968002 * 6 - ALTERED 03976002 * 8 - ALTERED 03984002 * 9 - ALTERED 03992002 * OTHER REGISTERS NOT USED 04000002 * 04008002 *02* EXIT-NORMAL = RETURN IS ON REGISTER 14 + 0 IF LPDE WAS FOUND. 04016502 * RETURN IS ON REGISTER 14 + 4 IF LPDE WAS NOT FOUND. 04025002 * 04033502 *02* EXIT-ERROR = NONE 04042002 * 04050502 *01* ENTRY = IEAQCDSR 04059002 * 04067502 *02* PURPOSE = TO SEARCH A CDE QUEUE FOR A REQUESTED NAME 04076002 * 04084502 *02* LINKAGE = BALR 04093002 * 04101502 *02* INPUT = REGISTERS AS FOLLOWS 04110002 * 8 - ADDRESS OF POINTER TO FIRST CDE ON THE QUEUE 04118502 * 9 - ADDRESS OF NAME 04127002 * 14 - RETURN ADDRESS 04135502 * 04144002 *02* OUTPUT = REGISTERS AS FOLLOWS 04152502 * 0 - LEFT HALF OF NAME 04161002 * 1 - RIGHT HALF OF NAME 04169502 * 11 - CDE ADDRESS OR ZERO 04178002 * 15 - ALTERED 04186502 * OTHER REGISTERS NOT REFERENCED 04195002 * 04203502 *02* EXIT-NORMAL = RETURN IS ON REGISTER 14 + 0 IF CDE WAS FOUND. 04212002 * RETURN IS ON REGISTER 14 + 4 IF CDE WAS NOT FOUND. 04220502 * 04229002 *02* EXIT-ERROR = NONE 04237502 * 04246002 *01* ENTRY = IEAQCS04 04254502 * 04263002 *02* PURPOSE = ENTRY ADDRESS WHICH IS THE START OF THE LIST OF 04271502 * ADDRESSES WHICH IEAVLK01 USES TO RETURN TO IEAVLK00. 04280002 * 04288502 *02* LINKAGE = NONE - THIS IS AN EXTERNAL REFERENCE WHICH IS NOT 04297002 * EXECUTABLE 04305502 * 04314002 *02* INPUT = NONE 04322502 * 04331002 *02* OUTPUT = NONE 04339502 * 04348002 *02* EXIT-NORMAL = NONE 04356502 * 04365002 *02* EXIT-ERROR = NONE 04373502 * 04382002 *01* ENTRY = CDLKBASE 04390502 * 04399002 *02* PURPOSE = ADDRESS WHICH IS USED TO RESET THE BASE ADDRESS FOR 04407502 * IEAVLK00 ON RETURN FROM IEAVLK01 04416002 * 04424502 *02* LINKAGE = NONE. THIS IS A NON-EXECUTABLE ENTRY 04433002 * 04441502 *02* INPUT = NONE 04450002 * 04458502 *02* OUTPUT = NONE 04467002 * 04475502 *02* EXIT-NORMAL = NONE 04484002 * 04492502 *02* EXIT-ERROR = NONE 04501002 * 04509502 *01* ENTRY = CDCONTRL 04518002 * 04526502 *02* PURPOSE = TO SEARCH THE LPAQ 04535002 * 04543502 *02* LINKAGE = BRANCH 04552002 * 04560502 *02* INPUT = REGISTERS AS FOLLOWS 04569002 * 3 - CVT ADDRESS 04577502 * 4 - TCB ADDRESS 04586002 * 5 - RB ADDRESS 04594502 * 6 - BASE ADDRESS 04603002 * 8 - QUEUE ORIGIN TO SEARCH 04611502 * 9 - ADDRESS OF NAME 04620002 * 10 - DCB ADDRESS 04628502 * OTHER REGISTERS NOT REFERENCED 04637002 * SVRB EXTENDED SAVE AREA FULLY INITIALIZED 04645502 * 04654002 *02* OUTPUT = SAME AS IGC006 04662502 * 04671002 *02* EXIT-NORMAL = SAME AS IGC006 04679502 * 04688002 *02* EXIT-ERROR = SAME AS IGC006 04696502 * 04705002 *01* ENTRY = CDEMERGE 04713502 * 04722002 *02* PURPOSE = TO CLEAN UP BEFORE EXITING FROM IEAVLK00 04730502 * 04739002 *02* LINKAGE = BRANCH 04747502 * 04756002 *02* INPUT = REGISTERS AS FOLLOWS 04764502 * 3 - CVT ADDRESS 04773002 * 4 - TCB ADDRESS 04781502 * 5 - RB ADDRESS 04790002 * 6 - BASE ADDRESS 04798502 * 11 - REQUESTED CDE 04807002 * 12 - MAJOR CDE 04815502 * OTHER REGISTERS NOT REFERENCED 04824002 * SVRB EXSAVE FULLY INITIALIZED 04832502 * 04841002 *02* OUTPUT = SAME AS IGC006 04849502 * 04858002 *02* EXIT-NORMAL = SAME AS IGC006 04866502 * 04875002 *02* EXIT-ERROR = SAME AS IGC006 04883502 * 04892002 *01* ENTRY = CDQUECTL 04900502 * 04909002 *02* PURPOSE = QUEUE AN ALIAS PDS REQUEST FOR IEAVLK01 04917502 * 04926002 *02* LINKAGE = BRANCH 04934502 * 04943002 *02* INPUT = REGISTERS AS FOLLOWS 04951502 * 3 - ADDRESS OF CVT 04960002 * 4 - TCB ADDRESS 04968502 * 5 - RB ADDRESS 04977002 * 6 - BASE ADDRESS 04985502 * 9 - ADDRESS OF REQUESTED NAME 04994002 * 10 - DCB ADDRESS 05002502 * 11 - REQUESTED CDE 05011002 * 12 - MAJOR CDE 05019502 * OTHER REGISTERS NOT REFERENCED 05028002 * SVRB EXSAVE FULLY INITIALIZED 05036502 * 05045002 *02* OUTPUT = SAME AS IGC006 05053502 * 05062002 *02* EXIT-NORMAL = SAME AS IGC006 05070502 * 05079002 *02* EXIT-ERROR = SAME AS IGC006 05087502 * 05096002 *01* ENTRY = PLUSCONT 05104502 * 05113002 *02* PURPOSE = TO CHECK THE USABILITY OF A FOUND MAJOR FROM IEAVLK01 05121502 * 05130002 *02* LINKAGE = BRANCH 05138502 * 05147002 *02* INPUT = REGISTERS AS FOLLOWS 05155502 * 0 - LEFT HALF OF NAME 05164002 * 1 - RIGHT HALF OF NAME 05172502 * 3 - CVT ADDRESS 05181002 * 4 - TCB ADDRESS 05189502 * 5 - RB ADDRESS 05198002 * 6 - BASE ADDRESS 05206502 * 8 - ADDRESS OF LAST CDE QUEUE SEARCHED 05215002 * 9 - ADDRESS OF REQUESTED NAME 05223502 * 10 - DCB ADDRESS 05232002 * 11 - ADDRESS OF REQUESTED CDE 05240502 * 12 - ADDRESS OF MAJOR CDE 05249002 * OTHER REGISTERS NOT REFERENCED 05257502 * SVRB EXSAVE FULLY INITIALIZED 05266002 * 05274502 *02* OUTPUT = SAME AS IGC006 05283002 * 05291502 *02* EXIT-NORMAL = SAME AS IGC006 05300002 * 05308502 *02* EXIT-ERROR = SAME AS IGC006 05317002 * 05325502 *01* ENTRY = ABNDSET 05334002 * 05342502 *02* PURPOSE = TO COMPLETE PROCESSING FOR 106,306,406,706,AND 806 05351002 * ABENDS 05353002 * ISSUED FOR IEAVLK01 05359502 * 05368002 *02* LINKAGE = BRANCH 05376502 * 05385002 *02* INPUT = REGISTERS AS FOLLOWS 05393502 * 6 - BASE ADDRESS 05402002 * 13 - ABEND CODE OF (1,3,4,7, OR 8) 05410502 * 15 - REASON CODE IF 106 806 ABEND 106,306, OR 806 05419002 * SVRB EXSAVE FULLY INITIALIZED 05427502 * 05436002 *02* OUTPUT = REGISTERS AS FOLLOWS 05444502 * 0 - TCB ADDRESS 05453002 * 1 - ABEND CODE 05461502 * 05470002 *02* EXIT-NORMAL = TO ABEND VIA SVC 13 05478502 * 05487002 *02* EXIT-ERROR = NONE 05495502 * 05504002 *01* EXTERNAL-REFERENCES = THE FOLLOWING EXTERNAL REFERENCES ARE MADE: 05512502 * 05521002 *02* ROUTINES = CDHKEEP,IEAVLK01,WAIT W/O ECB,VALIDITY CHECK 05529502 * 05538002 *02* DATA-SETS = NONE 05546502 * 05548502 *02* DATA-AREA = IEATCBP,IEAQLCT,IEAVVMDI,BLDL/FETCH WORK AREA,DE 05555002 * SAVE AREA, ABEND MESSAGE BUFFER 05563502 * 05572002 *01* TABLES = NONE 05580502 * 05589002 *01* MACROS = ABEND,FREEMAIN,GETMAIN,IEZBITS,MODID, 05597502 * IHAMB,IHACDE,IHALPDE,IHALLE,IHARB,IHAPDS 05606002 * IEFTIOT1,IKJTCB,IEZJSCB,CVT,IHAFRRS,SETLOCK,SETFRR,IHAPSA, 05614502 * IHAASCB,IHAASXB,IHAFETWK,TESTAUTH,WTO,MODESET 05616502 * 05623002 **** END OF SPECIFICATIONS ***/ 05631502 TITLE ' IEAVLK00 EXTERNAL REFERENCES' 05640000 SPACE 2 05642002 */*IEAVLK00: CHART PROGRAM MANAGER SERVICE ROUTINES */ 05642402 */* HEADER 05642802 */* 05643202 */* 05643602 */* 05643702 */* SECTION 3.1.11 05643802 */*PROGRAM MANAGER SERVICE ROUTINES 05643902 */* PAGE # */ 05648402 SPACE 2 05653002 IEAVLK00 CSECT CSECT NAME **** SINGLE CSECT 05657502 MODID BR=NO 05664002 ENTRY IGC006 SVC LINK ENTRY POINT 05672002 ENTRY IGC007 SVC XCTL ENTRY POINT 05680000 ENTRY IGC008 SVC LOAD ENTRY POINT 05690000 ENTRY IGC009 SVC DELETE ENTRY POINT 05700002 ENTRY IGC012 SVC SYNCH ENTRY POINT 05710000 ENTRY CDEPILOG SVC EXIT BRANCHES HERE TO 05720000 * RESTART A QUEUED REQUEST FOR 05730000 * A SERIALLY REUSABLE MODULE 05740000 ENTRY IEAQCDSR ENTRY TO CDE SEARCH ROUTINE 05750000 ENTRY IEAQCS01 ATTACH ROUTINE ENTRY TO LINK 05760000 ENTRY IEAQCS02 CDCONTRL ENTRY POINT 05770000 ENTRY IEAQCS03 CDEPILOG ENTRY POINT 05780000 ENTRY IEAVVMSR LPDE SEARCH ROUTINE 05790000 ENTRY IEAQCS04 POINTS TO ADDRESS LIST FOR VLK01 05810000 ENTRY SYNCR ADDR OF FRR ROUTINE RETRY M01978 05830002 EXTRN IEAQLPAQ ADDRESS OF LINK PACK AREA QUEUE 05850000 * HEAD POINTER. 05860000 EXTRN CDHKEEP ROUTINE TO FREE CDES 05870000 EXTRN IEAVLK01 BLDL FETCH INTERFACE MODULE 05900000 EXTRN FRRPGMMG RECOVERY ROUTINE FOR PGM.MGR. 05910002 TITLE 'IEAVLK00 REGISTER EQUATES' 05920000 * EQUATES FOR REGISTER 0 05930000 R0 EQU 0 LM/STM AND INTERFACES 05940000 NAMELEFT EQU R0 LEFT HALF OF NAME FOR SEARCHES 05950000 LPDEADDR EQU R0 LPDE ADDR RETURNED BY IEAVVMSR 05960000 WKREG0 EQU R0 GENERAL WORK REGISTER 05970000 * EQUATES FOR REGISTER 1 05980000 R1 EQU 1 LM/STM AND INTERFACES 05990000 NAMERGT EQU R1 RIGHT HALF OF NAME FOR SEARCHES 06000000 WKREG1 EQU R1 GENERAL WORK REGISTER 06010000 * EQUATES FOR REGISTER 2 06020000 R2 EQU 2 CROSS REFERENCE EQUATE 06030000 WKREG2 EQU R2 GENERAL WORK REGISTER 06040000 OLDRB EQU R2 POINTER TO THE OLD PRB FOR XCTL 06050002 * EQUATES FOR REGISTER 3 06070000 R3 EQU 3 CROSS REFERENCE EQUATE 06080000 COMREG EQU R3 LOAD FINAL PROCESSING REG 06090000 CVTREG EQU R3 REGISTER 3 POINTS TO CVT 06100000 * EQUATES FOR REGISTER 4 06110000 R4 EQU 4 CROSS REFERENCE EQUATE 06120000 TCBREG EQU R4 REGISTER 4 POINTS TO TCB 06130000 * EQUATES FOR REGISTER 5 06140000 R5 EQU 5 CROSS REFERENCE EQUATE 06150000 RBREG EQU R5 REGISTER 5 POINTS TO THE RB 06160000 * REGISTER 6 EQUATES 06170000 R6 EQU 6 CROSS REFERENCE EQUATE 06180000 BASEREG EQU R6 BASE REGISTER FOR IEAVLK00 06182002 * REGISTER 7 EQUATES 06220000 R7 EQU 7 PARAMETER TO IEA0VL02 06230000 AREAREG EQU R7 POINTS TO BLDL FETCH WORK AREA 06232002 DESVREG EQU R7 POINTS TO DE SAVE AREA 06234002 ASCBREG EQU 7 POINTS TO THE CURRENT ASCB 06234402 * DURING PREFIXING ROUTINES 06236002 * REGISTER 8 EQUATES 06250000 R8 EQU 8 IEA0VL02 BASE REGISTER 06260000 LPDEREG EQU R8 MUST BE EVEN FOR DIVIDE 06270000 HASHREG EQU LPDEREG+1 USED TO HASH LPDE ADDRESS 06280000 * IN IEAVVMSR 06290000 DESZREG EQU R8 CONTAINS DE SIZE WHILE PREFIXING 06300000 TAXRB EQU R8 POINTS TO RB THAT WAS GOTTEN 06310000 TABREG EQU R8 POINTS TO QUE THAT WAS SEARCHED 06320000 PRBREG EQU R8 POINTS TO GOTTEN RB 06330000 NEWRB EQU R8 NEW RB FOR XCTL 06332002 * REGISTER 9 EQUATES 06340000 R9 EQU 9 RETURN REGISTER FOR IEA0VL02 06350000 NAMEREG EQU R9 POINTS TO NAME OR DE 06360000 * REGISTER 10 EQUATES 06370000 R10 EQU 10 RETURN CODE FOR IEA0VL02 06380000 PIEREG EQU R10 POINTS TO PIE 06390000 DCBREG EQU R10 POINT TO DCB DURING SEARCHES 06400000 REASON EQU R10 CONTAINS REASON CODE IN ABEND 06410000 * REGISTER 11 EQUATES 06420000 R11 EQU 11 INPUT ADDRESS FOR LXREFER 06430000 TIOTPTR EQU R11 DURING ABEND POINTS TO TIOT 06440000 CDEREG EQU R11 POINTS TO CDE FOR REQUEST 06450000 * REGISTER 12 EQUATES 06460000 R12 EQU 12 CROSS REFERENCE EQUATE 06470000 R12PARM EQU R12 PARAMETER LIST ADDR IN PREFIX 06480000 CDIREG EQU R12 POINTS TO MAJOR CDE FOR REQUEST 06490000 * REGISTER 13 EQUATES 06500000 R13 EQU 13 GENERAL WORK REGISTER 06510000 ABCODE EQU R13 CONTAINS ABEND CODE 06520000 RETURND EQU R13 RETURN REGISTER INTERNAL SUBRTNS 06530000 LDLREG EQU R13 POINTS TO LLE DURING LOAD 06540000 RJJRET EQU R13 CDHKEEP RETURN REGISTER 06550000 PICAREG EQU R13 POINTS TO PICA 06552001 * REGISTER 14 EQUATES 06560000 R14 EQU 14 GENERAL WORK REGISTER 06570000 RETURN EQU R14 RETURN REGISTER INTERNAL SUBRTNS 06580000 GR14 EQU R14 GENERAL WORK REGISTER 06590000 SUBREG1 EQU R14 GENERAL WORK REGISTER 06600000 * REGISTER 15 EQUATES 06620000 R15 EQU 15 GENERAL WORK REGISTER 06630000 GR15 EQU R15 GENERAL WORK REGISTER 06640000 SUBREG2 EQU R15 GENERAL WORK REGISTER 06650000 TITLE 'IEAVLK00 CHARACTER AND HEX MASK EQUATES' 06660000 REF EQU X'01' SET RB WAIT COUNT TO 1 IN 06670000 * CDQUECTL 06680000 * 06680500 * THE FOLLOWING TWO EQUATES ARE EBCDIC CHARACTER CODE DEPENDENT 06681000 * 06681500 BLANK EQU C' ' CHARACTER BLANK FOR MESSAGES 06690000 CHARZERO EQU C'0' CHARACTER ZERO TESTED DURING WTP 06692000 * PROCESSING 06694000 MASK1 EQU X'01' COMPARE ONE BYTE IN REG 06720000 BYTE2 EQU X'02' INSERTS IN SECOND BYTE OF A REG 06730000 MASKOFF EQU X'04' DAT ACTIVE NOT IO OR EXT 06730500 MASK EQU X'07' ICM/STCM 3 ADDR BYTES IN REG 06740000 MASK4 EQU X'0F' ICM/STCM 4 BYTE ADDR IN REG 06750000 X0F EQU X'0F' MAX. VALUE CONTAINED IN 4 BITS 06760000 X1F EQU X'1F' MAX.VALUE CONTAINED IN 5 BITS 06762002 XFE EQU X'FE' PRIVILEGED MODE OPERATION 06770000 MAX EQU X'FF' MAX. VALUE CONTAINED IN 1 BYTE 06780000 REF1BYTE EQU X'11' PUT 1 BYTE INTO REG1 06790000 REF9BTE4 EQU X'9F' PUT 4 BYTES INTO REGISTER 9 06800000 * WITH EXECUTED ICM MASK 06810000 REFABTE4 EQU X'AF' PUT 4 BYTES INTO REGISTER 10 06820000 * WITH EXECUTED ICM MASK 06830000 MASK8 EQU X'08' BYTE 0 OF REG IN ICM 06840000 AUTHBYTE EQU X'08' APF FLAG IN BYTE 0 OF REG 1 06850000 CANTFIX EQU X'24' MODULE PERMANENTLY NON-FIXABLE 06860000 * RETURN FROM PAGE FIX SVC 06862000 X40 EQU X'40' ATTACH WITH RESET APF @WAB 06863040 X80 EQU X'80' ATTACH AUTHORIZATION BIT 06864002 TITLE 'IEAVLK00 GENERAL NUMBER VALUE EQUATES' 06870000 ZERO EQU 0 06880000 SYMBEGIN EQU 0 SYMB DISPL TO BEG OF FIELD 06890000 N0 EQU 0 USED FOR ZERO OFFSETS 06900000 NEW EQU 0 NEW TCB SLOT POINTER 06910000 N1 EQU 1 USED TO INCREMENT VALUES 06920000 PRIO EQU 1 LENGTH OF DISP PRIORITY STORED 06930000 ADD1 EQU 1 USED TO INCREMENT THE USE COUNT 06940000 ONE EQU 1 REASON CODE VALUE 06950000 TWO EQU 2 REASON CODE VALUE 06970000 N2 EQU 2 USED TO INCREMENT ERROR VALUES 06980000 N3 EQU 3 USED TO INCREMENT ERROR VALUES 06990000 ADDL EQU 3 MAXIMUM LENTGH OF AOS ADDRESSES 07000000 EXIT EQU 3 USED TO RETURN TO CALLING RTN. 07010000 THREE EQU 3 REASON CODE AND MVC CONSTANT 07020000 * FOR 206 ABEND PROCESSING 07030000 OLD EQU 4 OLD TCB SLOT POINTER 07040000 N4 EQU 4 USED TO INCREMENT VALUES 07050000 WORD EQU 4 USED TO INCREMENT VALUES 07060000 STILLDIS EQU 4 RETURN IF LXREFER DIDNT ENABLE 07070000 FOUR EQU 4 RETURN CODE OR OFFSET TO DCB 07080000 * ADDRESS IN PARAMETER LIST 07090000 NAMERT EQU 4 RIGHT HALF OF NAME EQUATE 07100000 NOGOOD EQU 4 RETURN ON R+4 IF A SEARCH FAILS 07110000 PSWBASE EQU 4 PSW LENGTH LESS ADDR. FIELD 07112002 FIVE EQU 5 UNPACK SIZE FOR 206 ABENDS 07120000 NOTEQ EQU 7 NOT EQUAL COMPARES 07160000 N7 EQU 7 LENGTH OF NAME-1 07162002 NAME EQU 8 LENGTH OF AOS NAMES 07170000 NAMELTH EQU NAME-1 PREFIX NAME LENGTH VALUE 07180000 N8 EQU 8 USED AS NUMBER VALUE 07190000 EQZER EQU 8 USED TO TEST CONDITION CODES 07200000 EIGHT EQU 8 TRANSLATE SIZE FOR 206 ABENDS 07210000 XLENGTH EQU 8 OFFSET TO LENGTH FIELD IN XLIST 07220000 UNPKSIZE EQU 9 UNPACK SIZE FOR 206 ABENDS 07230000 BADRETCD EQU 12 USED TO ISSUE RETURN CODE OF 12 07250000 XSTART EQU 12 OFFSET TO ADDR FIELD IN XLIST 07260000 PRBCLR EQU 12 USED TO CLEAR IRB/XCTL RBS P2020 07265002 N20 EQU 20 USED TO POSITION ABEND CODE 07270000 TITLE ' IEAVLK00 LINK - SVC 6' 07280000 USING PSA,0 ADDRESSIBILITY TO PSA 07282002 USING CVT,CVTREG REG.3 CONTAINS CVT ADDRESS 07284002 USING TCB,TCBREG REG.4 CONTAINS TCB ADDRESS 07290000 USING RBSECT,RBREG REG.5 CONTAINS RB ADDRESS 07300000 USING WKAREA,AREAREG REG.6 CONTAINS WORK AREA ADDR 07310000 USING CDLKBASE,BASEREG REG.7 CONTAINS BASE ADDRESS 07320000 USING PRB,PRBREG REG 8 CONTAINS PRB ADDRESS 07330000 USING CDENTRY,CDEREG REG.11 CONTAINS CDENTRY ADDRESS 07340000 USING CDENTRYJ,CDIREG REG.12 CONTAINS CDENTRY ADDRESS 07350000 SPACE 2 07360002 */*IGCOO6: E ENTRY LINK */ 07360402 SPACE 2 07362002 IGC006 DS 0H ENTRY POINT TO LINK FROM 07370000 * SVC SLIH 07380000 SPACE 2 07382002 */* P ESTABLISH ADDRESSABILITY */ 07382402 SPACE 2 07384002 BALR BASEREG,ZERO SET UP BASE ADDRESS 07390000 SPACE 2 07390102 */*CDLKBASE: L SETFRR-- SET UP RECOVERY */ 07393102 SPACE 2 07397002 CDLKBASE DS 0H LINK BASE 07400002 SETFRR A,PARMAD=(R8),WRKREGS=(R11,R12),FRRAD=FRRPGM 07403002 ST R8,RBCSFRRA SAVE PARM LIST ADDRESS 07406002 ST RBREG,N0(R8) PUT SVRB IN PARM LIST 07406402 SPACE 2 07406603 */* P INDICATE PROG MGR SVRB FOR RTM */ 07406803 SPACE 2 07407003 OI RBSTAB1,RBPMSVRB THIS IS PROG MGR SVRB. @YA00094 07407203 * USED BY RTM TO INVOKE THE 07407403 * ABEND RESOURCE MGR DURING 07407603 * RECOVERY RETRY. 07408003 SPACE 2 07412003 */* S LXPREFIX:SET UP REG 9, REG 10 AND EXSAVE */ 07415003 SPACE 2 07418003 BAL RETURND,LXPREFIX INITIALIZE R9,R10, AND EXSAVE 07419003 SPACE 2 07421003 */*CDADVANS: P PREPARE POINTERS TO SEARCH JOB PACK QUEUE */ 07424003 SPACE 2 07427003 CDADVANS L TABREG,TCBJSTCB LOAD ADDR. OF INITIATED TCB 07430003 LA TABREG,TCBJSEZ(TABREG) ESTABLISH ADDR. OF JPAQ 07432003 SPACE 1 07434003 *BRANCH TABLE SET UP TO CHECK IF THE NAME REQUESTED IS IN THE LIST 07436003 *ADDRESSED BY TABREG, AND IF SO WHAT ARE ITS USABILITY CONDITIONS 07440000 SPACE 2 07450002 */*CDCONTRL: S (0,PLUSCONT,+4,CDSETUP1) CDSEARCH:CAUSE SEARCH OF A CDE 07452002 */*QUEUE */ 07454002 SPACE 2 07460002 CDCONTRL EQU * SEARCH JPAQ,LPAQ, OR TSOLPAQ 07470000 BAL SUBREG1,CDSEARCH SEARCH CDES FOR EIGHT 07480000 * BYTE NAME ADDRESSED BY NAMEREG 07490000 SPACE 1 07500000 * CDSEARCH WILL ASSUME A BRANCH TABLE AS FOLLOWS 07510000 * B ADDR1 - 8 BYTE NAME FOUND 07520000 * B ADDR2 - 8 BYTE NAME NOT FOUND 07530000 * THE BRANCH TABLE OVERLAPS WITH THAT REQUIRED BY CDALLOC 07540000 SPACE 2 07550002 */*PLUSCONT: S (0,CDSETUP1,4,CDEMERGE,8,CONTSRCH,12,%CDMPUP,16, 07552002 */*CDQUECTL) CDALLOC:TEST AVAILABILITY OF MODULE FOUND */ 07554002 SPACE 2 07556002 PLUSCONT BAL SUBREG2,CDALLOC GO TO CDALLOC .NAME FOUND 07560000 SPACE 1 07570000 * CDALLOC ASSUMES BRANCH TABLE , SEE FORMAT IN DSECT CDALLOC 07580000 B CDSETUP1 NOT FOUND - ISSUE BLDL 07590000 B CDEMERGE ALLOCATE SUCCESSFUL 07600000 B CONTSRCH NOT REUSABLE - FIND ANOTHER COPY 07610000 SPACE 2 07612002 */*%CDMPUP: S CDMOPUP:CLEAR WORK AREAS */ 07612402 SPACE 2 07614002 BAL RETURND,CDMOPUP QUEUE REQUEST - CLEAN WORK AREA 07620000 * AFTER CDMOPUP DROP THROUGH TO 07630000 * CDQUECTL 07640000 SPACE 1 07650000 * FIFTH RETURN FROM CDALLOC IS FOR MODULE BEING FETCHED, QUEUE 07660000 * THE REQUEST. CDMOPUP IS NOT USED BECAUSE THE ATTRIBUTES OF 07670000 * THE MODULE BEING FETCHED HAVE NOT BEEN TESTED, AND IF IT CAN 07680000 * NOT BE REUSED, ANOTHER FETCH WILL BE DONE. THEREFORE THE WORK 07690000 * AREAS ARE RETAINED UNTIL AFTER THE FETCH, WHEN THE ATTRIBUTES 07700000 * ARE TESTED. 07710000 EJECT 07720000 * THE REQUEST IS QUEUED USING THE LAST 4 BYTES OF THE RBOPSW 07730000 * FIELD IN THE SVRB THAT THE CONTENTS SUPERVISOR RUNS UNDER. 07740000 * THE RBOPSW FIELD CAN BE USED BECAUSE THE RESUME ADDRESS 07750000 * IS RESET WHEN THE RB IS DEQUEUED. THE FIRST BYTE IS USED 07760000 * TO SAVE THE DISPATCHING PRIORITY FROM THE TCB OF THE CURRENT 07770000 * TASK, AND THE REMAINING 3 BYTES ARE USED TO SAVE THE TCB 07780000 * ADDRESS. THE QUEUE ORIGIN FOR ALL THE SVRBS WAITING FOR A 07790000 * PARTICULAR MODULE IS THE CDRRBP FIELD OF THE MAJOR CDE FOR 07800000 * THE REQUEST. THE QUEUE IS SINGLE STRANDED, FORWARD CHAINED, 07810000 * AND IN DISPATCHING PRIORITY ORDER, QUEUED ON RBPGMQ FIELD. 07820000 * BEFORE EACH SVRB ON THE QUEUE IS CHECKED FOR THE INSERTION 07830000 * POINT OF THE NEW SVRB, ITS TCB IS LOCATED BY RUNNING DOWN THE 07840000 * RBLINK FIELDS UNTIL THE RB WITH THE RBTCBNXT FLAG IS FOUND. 07850000 * THE TCB ADDRESS IS THEN COMPARED WITH THE CURRENT TCB ADDRESS 07860000 * TO DETERMINE IF AN INTERLOCK SITUATION EXISTS. IF THE TCB 07870000 * ADDRESSES ARE EQUAL, AN A06 ABEND IS ISSUED, SINCE THE SAME 07880000 * TASK HAS REQUESTED THE SAME MODULE TWICE WITHOUT GETTING 07890000 * CONTROL OF IT. 07900000 * AFTER CDQUECTL HAS QUEUED THE CURRENT SVRB, IT INSURES THAT A 07910000 * TASK SWITCH WILL OCCUR, SETS THE SVRB TO WAIT, AND EXITS VIA 07920000 * THE DISPATCHER. WHEN DQLOAD IN IEAVLK01 IS ENTERED (QUEUED 07930000 * FETCH), ALL WAITING SVRBS WILL BE MADE READY TO REENTER 07940000 * CONTENTS SUPERVISOR AT IEAQCS02, WHEN THEIR TASKS ARE NEXT 07950000 * DISPATCHED. FOR QUEUED SERIAL REUSABLE MODULES, EXIT SETS 07960000 * THE TASK TO REENTER AT IEAQCS03, ONE-AT-A-TIME, AS THE 07970000 * MODULE BECOMES AVAILABLE. 07980000 * 07990000 SPACE 2 08000002 */*CDQUECTL: P PUT TCB PRIORITY IN RBOPSW */ 08000402 */* P PUT TCB ADDRESS IN RB EXTENDED SAVE AREA */ 08000802 */* P PUT MAJOR CDE ADDRESS IN SVRB */ 08001202 SPACE 2 08002002 CDQUECTL MVC RBXXDSP(PRIO),TCBDSP SET DISPATCHING PRIORITY IN RB 08010000 STCM TCBREG,MASK,RBOPSWA+N1 STORE TCB ADDR IN RB 08020002 STCM CDIREG,MASK,RBCDE1 PUT ADDR OF MAJOR IN RB 08030000 L WKREG1,CDRBPZ(CDIREG) START DOWN QUEUE OFF MAJOR 08040002 SPACE 2 08042002 */*OSILATE: P GET FIRST ELEMENT ON RB QUEUE (RBPGMQ) */ 08042402 SPACE 2 08044002 OSILATE LR WKREG2,WKREG1 INITIALIZE NEXT RB POINTER 08050000 SPACE 2 08060002 */*OSCULATE: D (YES,CHECKTCB,NO,) IS USER'S TCB HUNG OFF THIS RB? */ 08062002 */* P (,OSCULATE) GET NEXT RB ON LIST */ 08064002 SPACE 2 08070002 OSCULATE TM RBSTAB2Z(WKREG1),RBTCBNXT Q. DOES THIS RB POINT TO TCB 08100002 BO CHECKTCB A. YES- TAKE BRANCH 08102002 L WKREG1,RBLINKZ(WKREG1) A. NO- GO TO NEXT RB 08104002 B OSCULATE LOOP-FIND RB THAT POINTS TO TCB 08106002 SPACE 2 08106402 */*CHECKTCB: D (NO,QUECONT,YES,) TCB ADDR IN SVRB = CURRENT TCB? */ 08106502 SPACE 2 08106802 CHECKTCB CLC RBOPSWA+N1(ADDL),RBLINKAZ(WKREG1) COMPARE TCB ADDR'S 08108002 BNE QUECONT NO.CONTINUE THE QUEUEING 08110000 SPACE 2 08112002 */* D (NO,QUEEND,YES,) PARTIALLY LOADED PROGRAM? */ 08112402 */* P CLEAR CDE POINTER IN RB */ 08112802 SPACE 2 08114002 TM CDATTRJ,CDNIC Q.PARTIALLY LOADED PROG. 08120000 BNO QUEEND NO.CONTINUE 08130000 XC RBCDE1(ADDL),RBCDE1 CLEAR CDE POINTER 08140000 * CDE WILL BE FREED BY ABEND 08150000 SPACE 2 08152002 */*QUEEND: P SET ABEND REGISTER TO 0 */ 08152402 */* S () ERRLOCK:ISSUE A06 ABEND */ 08152802 SPACE 2 08154002 QUEEND EQU * ABEND A06 SITUATION 08160000 SR R13,R13 ZERO OUT GR13 FOR ERROR ROUTINE 08170000 B ERRLOCK ISSUE ABEND (A06) 08180000 SPACE 2 08182002 */*QUECONT: P (=0,CUEIT,GT 0,) GET NEXT ELEMENT ON RB QUEUE */ 08182402 SPACE 2 08184002 QUECONT EQU * CHECK FOR SVRB INSERTION 08190000 L WKREG1,RBPGMQZ(WKREG2) PICK UP NEXT RB ON QUEUE 08240002 LTR WKREG1,WKREG1 Q. CAN INSERT BE MADE HERE 08290002 BZ CUEIT A=YES INSERT RB ON QUEUE 08340002 SPACE 2 08350002 */* D (NO,OSILATE,YES,) CURRENT PRIORITY LT TEST PRIORITY */ 08352002 SPACE 2 08360002 CLC RBXXDSPZ(PRIO,WKREG1),RBXXDSP Q. IS PRIORITY OF RB HI'ER 08390002 BNL OSILATE A=YES INSERT RB ON QUEUE 08440002 SPACE 2 08450002 */*CUEIT: P PUT CURRENT SVRB ON QUEUE */ 08452002 */* P PUT CURRENT REGISTERS IN TCB */ 08454002 SPACE 2 08460002 CUEIT ST WKREG1,RBPGMQ CHAIN FOUND SVRB TO NEW 08490002 ST RBREG,RBPGMQZ(WKREG2) CHAIN NEW TO NEXT 08540002 STM R0,R15,TCBGRS SAVE REGS IN TCB 08590002 SPACE 2 08600002 */* P SET UP FOR WAIT WITHOUT ECB */ 08602002 */* P NOTE: R0=WAIT CNT(1) R5=RB(CURRENT) R15=WAIT EP LOCAL LOCK HELD 08604002 */**/ 08604402 */* L () WAIT-- IEAQCS02 */ 08608002 SPACE 2 08610002 LA R0,N1 SET UP WAIT COUNT 08640002 SR R1,R1 ASCB INDICATOR SET 08690002 L CVTREG,CVTPTR GET CVT POINTER M01585 08710002 L SUBREG2,CVTVWAIT LOAD ADDRESS OF WAIT RTN PTM1585 08740002 BR SUBREG2 GO TO WAIT PTM1585 08790002 TITLE ' IEAVLK00 XCTL - SVC 7' 08800002 SPACE 2 08850002 */*IGC007: E XCTL */ 08852002 */* P ESTABLISH ADDRESSABILITY */ 08854002 SPACE 2 08860002 IGC007 DS 0H ENTRY TO SVC XCTL FROM SVC SLIH 08890002 BALR BASEREG,ZERO SET UP BASE 08940002 USING *,BASEREG 08942002 L BASEREG,LINKBASE SET UP ADDRESSING FROM 08944002 USING CDLKBASE,BASEREG START OF SVC LINK 08946002 USING CVT,CVTREG SET ADDRESSIBILITY TO CVT 08948002 SPACE 2 08948102 */* L SETFRR-- SET UP RECOVERY ROUTINE */ 08948202 SPACE 2 08948302 SETFRR A,PARMAD=(R8),WRKREGS=(R11,R12),FRRAD=FRRPGM 08948402 SPACE 2 08950202 */* P INITIALIZE RECOVERY PARAMETERS */ 08950302 SPACE 2 08950602 ST R8,RBCSFRRA SAVE PARM LIST ADDRESS 08952202 ST RBREG,N0(R8) PUT SVRB IN PARM LIST 08952602 SPACE 2 08953602 */* P GET CALLER'S RB ADDRESS FROM RBCHAIN FIELD */ 08954002 */* D (NO,NOTSVRB,YES,) IS CALLER AN SVRB? */ 08954402 SPACE 2 08954802 L WKREG2,RBWCF GET REQUESTOR'S RB ADDR. 08955202 TM RBSTABZ(WKREG2),RBFTSVRB Q. REG'R AN SVRB 08956402 BNO NOTSVRB A. NO- CONTINUE 08957602 * 08959402 * INPUTS TO TRRM ARE AS FOLLOWS FOR SVRB: 08961202 * R0,1 = ADDRESS OF CALLERS SVRB 08963002 * R4 = ADDRESS OF CURRENT TCB (SET BY INTERRUPT HANDLER) 08964802 * R13 = ADDRESS OF A REGISTER SAVE AREA 08966602 * R14 = RETURN ADDRESS 08968402 * R15 = TRRM ENTRY POINT (FROM CVTSCBP) 08970202 * THE LOCAL LOCK MUST BE HELD AND NOT FREED OVER INTERFACE. 08972002 * XCTL IS ENTERED WITH THE LOCAL LOCK. 08973802 * 08975602 SPACE 2 08976002 */* P INITIALIZE NAME POINTER AND ADDRESS REGISTER */ 08976102 SPACE 2 08976402 L R15,N0(R15) GET ADDRESS OF MOD. NAME PTM0180 08978402 MVC RBCSNAME(N8),N0(R15) PUT MODULE NAME IN SVRB 08986402 LA NAMEREG,RBCSNAME GET ADDRESS OF NAME 08986802 USING ASCB,ASCBREG GET ADDRESSABILITY TO ASCB 08987402 SPACE 2 08989402 */* P INITIALIZE FOR TRRM ROUTINE */ 08989802 */* L TRRM-- UPDATE ANY SCB'S FOR THIS RB */ 08990202 SPACE 2 08991402 L R13,ASCBASXB GET ASXB ADDRESS 08997402 USING ASXB,R13 GET ADDRESSIBILITY TO ASXB 08997802 LA R13,ASXBFLSA GET LOCAL LOCK REG SAVE AREA 08998202 DROP R13 RELEASE ASXB 09005402 LR WKREG0,WKREG2 SET BOTH INPUT REGISTERS 0 AND 1 09006702 LR WKREG1,WKREG2 TO ADDRESS OF THE REQ'R SVRB 09008002 L SUBREG2,CVTSCBP GET ADDRESS OF TRRM ROUTINE 09009302 BALR RETURN,SUBREG2 GO TO TRRM 09011202 DROP ASCBREG RELEASE ASCB 09011902 * 09013202 * THE FOLLOWING CODE BEGINS THE SEARCH FOR THE REQUESTED MODULE 09014502 * 09015902 SPACE 2 09017802 */* L SETLOCK-- OBTAIN CMS LOCK FOR LPA SEARCH */ 09018402 SPACE 2 09019802 SETLOCK OBTAIN,TYPE=CMS,MODE=UNCOND,RELATED=('IEAVLK01') 09023502 SPACE 2 09027602 */* P SET GOOD SEARCH INDICATOR OFF */ 09029002 */* S (+0,,+4,%GOOD) CDSEARCH:SEARCH LPAQ FOR MODULE */ 09033302 SPACE 2 09034702 L TAXRB,IEAQLCTA GET START OF ACTIVE LPAQ 09036102 NI RBCSFLG1,MAX-RBCSGSF INSURE GOOD SEARCH IND. IS OFF 09037502 BAL RETURN,CDSEARCH TEST IF MODULE IS ON LPA 09040602 SPACE 2 09042602 */* P SET GOOD SEARCH INDICATOR ON */ 09043002 SPACE 2 09044602 OI RBCSFLG1,RBCSGSF SET GOOD SEARCH FLAG 09046302 STM R11,R12,RBCSGR15 SAVE VOLITAL REGS 09052002 SPACE 2 09052402 */*%GOOD: L SETLOCK-- FREE CMS LOCK */ 09052502 SPACE 2 09052802 SETLOCK RELEASE,TYPE=CMS,RELATED=('FREE CMS AFTER LPA SEARCH') 09054002 SPACE 2 09054402 */* D (NO,PLPASRCH,YES,) MODULE FOUND? */ 09054502 */* P (,EXITIT) MARK SVRB RESIDENT */ 09054602 SPACE 2 09054802 LM R11,R12,RBCSGR15 RESTORE VOLISTAL REGS 09056002 TM RBCSFLG1,RBCSGSF Q. SEARCH SUCCESSFUL 09056402 BZ PLPASRCH A. NO- SEARCH PLPA 09056802 NI RBSTAB1Z(OLDRB),MAX-RBTRSVRB MARK RB AS RESIDENT SVRB 09061302 B EXITIT GO DO TERMINATION PROCESSING 09062702 * 09064102 * THIS CODE SEARCHES THE PLPA FOR THE MODULE 09065502 * 09066902 SPACE 2 09068502 */*PLPASRCH: D (YES,,NO,%ERROR) HAS LPDE BEEN BUILT? */ 09068902 */* S (+0,FOUNDEM,+4,) SRCHDIRC:SEARCH PAGED LPA DIRECTORY */ 09070502 SPACE 2 09070602 PLPASRCH DS 0H CHECKS THE PLPA FOR MODULE 09070802 SR R13,R13 PREPARE FOR ABEND CONDITION BY 09072102 LA R15,BADRETCD SETTING REASON CODE=X'0C' 09073402 TM CVTLPDIA,CVTDICOM TEST IF LPDE HAS BEEN BUILT 09074702 BZ ERRBLDL IF NOT, ISSUE ABEND 09076002 LM R0,R1,N0(NAMEREG) PUT NAME IN REGISTERS 0,1 09077302 BAL RETURN,SRCHDIRC GO SEARCH PLPA 09078602 B FOUNDEM FOUND- PREPARE FOR TERMINATION 09079902 SPACE 2 09080302 */*%ERROR: P SET ABEND REG=0 SET RETURN CODE=12 */ 09080702 */* S () ERRBLDL:ISSUE 806 ABEND */ 09080802 SPACE 2 09081102 SR R13,R13 NOT FOUND- PREPARE FOR ABEND BY 09081202 LA R15,BADRETCD SETTING REASON CODE=X'0C' 09082502 B ERRBLDL AND ISSUING AN ABEND 09083802 SPACE 2 09084202 */*FOUNDEM: P SET SVRB TRANSIENT */ 09084802 SPACE 2 09086102 FOUNDEM LR CDEREG,WKREG0 TREAT LPDE LIKE A CDE 09087302 OI RBSTAB1Z(OLDRB),RBTRSVRB SET TO PAGEABLE SVRB 09088602 SPACE 2 09089902 */*EXITIT: P SET R15 WITH ENTRY POINT ADDRESS */ 09091302 */* P PUT ENTRY POINT ADDRESS IN RESUME PSW OF SVRB */ 09092502 */* P PUT CDE (OR LPDE) ADDRESS IN SVRB */ 09093902 SPACE 2 09095102 EXITIT DS 0H TERMINTION PROCESSING 09096502 USING CDENTRY,CDEREG SET ADDRESS OF CDE 09097702 L R15,CDENTPT GET MODULE ENTRY POINT 09098102 ST R15,RBOPSW-RBSECT+N4(WKREG2) STORE ENTRY IN REQ'R RB 09098602 STCM CDEREG,MASK,RBCDE1Z(WKREG2) STORE ADDR. OF CDE OR LPDE 09100202 * IN REQUESTOR'S SVRB 09102202 SPACE 2 09102302 */* L SETFRR-- REMOVE RECOVERY ROUTINE */ 09102402 SPACE 2 09102602 SETFRR D,WRKREGS=(R1,R2) REMOVE RECOVERY RTN 09102702 SPACE 2 09103102 */* P RESTORE REGS 0 AND 1 FROM SVRB SAVE AREA */ 09103202 */* R BRANCH EXIT PROLOGUE */ 09103302 SPACE 2 09103502 LM R0,R1,RBGRSAVE RESET XCTL INPUT REGISTERS 09104202 L RETURN,CVTEXPRO GET ADDRESS OF THE EXIT PROLOG 09110902 BR RETURN EXIT 09112902 * 09114902 * NON-SVRB PROCESSING BEGINS HERE 09116902 * 09118902 SPACE 2 09119302 */*NOTSVRB: S LXPREFIX:VALIDITY CHECK INPUT */ 09119402 */* P INDICATE PROG MGR SVRB FOR RTM */ 09119503 */* P RESET CALLERS RB ADDRESS */ 09120903 SPACE 2 09123403 NOTSVRB OI RBSTAB1,RBPMSVRB THIS IS PROG MGR SVRB. @YA00094 09123503 * USED BY RTM TO INVOKE THE 09123803 * ABEND RESOURCE MGR DURING 09124103 * RECOVERY RETRY. 09124403 BAL RETURND,LXPREFIX VALIDITY CHECK INPUT PARAMETERS 09124903 L WKREG2,RBWCF GET REQUESTOR'S RB ADDR. P1585 09125303 * AND INIT. WORK REGS. AND AREAS 09126203 SPACE 2 09127203 */* P SET UP FOR GETMAIN */ 09128803 */* L GETMAIN-- GET PRB FROM SUBPOOL 255 */ 09129903 SPACE 2 09130803 L ASCBREG,PSAAOLD GET ASCB ADDRESS FOR GETMAIN 09131703 * REGISTER 4= TCB, R7= ASCB,LOCAL LOCK MUST BE HELD 09132603 GETMAIN RU,LV=PRBSIZE,SP=255,BRANCH=YES GET A PRB 09133503 SPACE 2 09134503 */* P CLEAR PREFIX AREA */ 09135603 SPACE 2 09136703 XC N0(PRBPREF,R1),N0(R1) CLEAR THE PREFIX AREA 09137803 LA PRBREG,PRBPREF(R1) GET POINTER TO RB BASE 09138903 * INITIALIZE THE NEW RB 09140903 SPACE 2 09141903 */* P COPY OLD PRB CONTENT TO NEW PRB */ 09143203 */* P NOTE: ATTRIBUTES FROM OLD IN NEW: ATTN, TCBNXT, LASTRB, RBTYPE */ 09143303 */* P NOTE: THIS PUTS THE PROPER REGISTERS IN CURRENT PRB FOR ASIR 09145203 */* PROCESSING */ 09145603 */* P NOTE: AND SETS CHAIN POINTER TO NEXT OLDER RB OR TCB */ 09147603 SPACE 2 09147703 MVC PRBSTART(PRBSIZ),RBSECTZ(OLDRB) COPY OLD RB TO NEW RB 09149003 SPACE 2 09150903 */* P CLEAR CDE POINTER IN NEW PRB */ 09151803 SPACE 2 09152803 SR R1,R1 CLEAR REG FOR STORE 09153703 ST R1,PRBFLGS ZERO CDE POINTER IN NEW PRB 09154703 ST R1,PRBPGMQ CLEAR SER.REUS RBQUE FIELD M2444 09155603 * SET UP FOR TRRM FOR PRB 09156603 */* P SET UP FOR TRRM */ 09158503 */* L TRRM-- UPDATE ANY SCB'S */ 09159503 SPACE 2 09160503 LR R0,OLDRB PUT ADDRESS OF OLD RB IN R0 09161503 LR R1,NEWRB PUT ADDRESS OF NEW RB IN R1 09162503 USING ASCB,ASCBREG GET ADDRESSABILITY TO ASCB 09163503 L R13,ASCBASXB GET ASXB ADDRESS 09164503 USING ASXB,R13 GET ADDRESSIBILITY TO ASXB 09165503 LA R13,ASXBFLSA GET LOCAL LOCK REG. SAVE AREA 09166503 DROP R13 RELEASE ASXB 09168502 L CVTREG,CVTPTR GET CVT ADDRESS 09168602 L R15,CVTSCBP GET ADDRESS OF TRRM ROUTINE 09168902 BALR RETURN,R15 GO TO UPDATE ANY SCB'S 09171702 DROP ASCBREG RELEASE ASCB 09172302 * UPDATE THE RB CHAIN FIELD 09172902 SPACE 2 09173702 */* P INDICATE XCTL IN PROCESS */ 09173802 SPACE 2 09174102 OI RBCDFLGS,XCTL INDICATE XCTL IN PROGRESS 09174502 SPACE 2 09174802 */* D (YES,IRBPROC,NO,) IS THE REQUESTER AN IRB? */ 09174902 SPACE 2 09175102 TM RBSTABZ(OLDRB),RBFTSVRB TEST CALLERS RB FOR IRB 09175202 BNZ IRBPROC IRB-BRANCH TO PROCESS AS IRB 09175302 * 09175402 * THIS CODE IS ONLY FOR PRB'S WHICH ISSUE XCTL 09175902 * NEW RB ALREADY POINTS TO NEXT OLDER DUE TO RB INITIALIZATION 09176502 * 09177102 SPACE 2 09177502 */* P POINT OLD PRB TO SVRB */ 09177802 */* P POINT SVRB TO NEW RB */ 09178202 */* P POINT TCB TO OLD RB */ 09178602 */* P TURN OFF LAST RB FLAG */ 09179002 */* P SET SVRB RESUME PSW TO IEAQCS02 */ 09179102 SPACE 2 09179402 ST RBREG,RBLINKZ(OLDRB) POINT OLD RB TO SVRB 09179502 ST NEWRB,RBWCF POINT SVRB TO NEW RB 09179802 ST OLDRB,TCBRBP POINT TCB TO OLD RB 09181602 NI RBSTAB2Z(OLDRB),MAX-RBTCBNXT INSURE NOT EOT PROCESSING 09183202 LA WKREG1,IEAQCS02 GET RETURN POINT IN PROGRAM 09184402 ST WKREG1,RBOPSWA MANAGER AND PUT IN SVRB PSW 09184502 SPACE 2 09184602 */* L SETFRR-- REMOVE RECOVERY ROUTINE */ 09184702 SPACE 2 09184802 SETFRR D,WRKREGS=(R11,R12) REMOVE RECOVERY RTN. 09184902 SPACE 2 09185002 */* L SETLOCK-- FREE LOCAL LOCK */ 09185502 SPACE 2 09186602 SETLOCK RELEASE,TYPE=LOCAL,RELATED=FREE LOCK TO ISSUE SVC 09186802 SPACE 2 09186902 */* L EXIT-- VIA SVC 3 TO FREE OLD PRB */ 09187102 SPACE 2 09187202 SVC EXIT EXIT XCTL RESUMES AT IEAQCS02 09188002 * 09188302 * CONTROL RETURNS HERE AFTER EXIT OF CALLER PRB 09188602 * 09188902 SPACE 2 09189002 */*IEAQCS02: E IEAQCS02 */ 09189302 */* L SETLOCK-- OBTAIN LOCAL LOCK */ 09189702 SPACE 2 09190702 IEAQCS02 DS 0H FETCH RESTARTS BEGIN HERE, TOO. 09191002 SETLOCK OBTAIN,TYPE=LOCAL,MODE=UNCOND,RELATED=NO GET LOCAL 09191302 SPACE 2 09191502 */* L SETFRR-- SET UP RECOVERY ROUTINE */ 09191702 SPACE 2 09191902 SETFRR A,FRRAD=FRRPGM,WRKREGS=(R1,R15),PARMAD=(R8) 09192102 SPACE 2 09192502 */* P (,CDADVANS) INITIALIZE RECOVERY PARAMETERS */ 09192902 SPACE 2 09193102 ST RBREG,N0(R8) SAVE MY SVRB ADDR. 09193702 ST R8,RBCSFRRA SAVE PARM LIST ADDRESS 09194002 B CDADVANS PROCESS AS LINK 09194302 * 09194602 * THIS CODE IS ONLY FOR IRB'S WHICH ISSUE XCTL 09194902 * 09195202 SPACE 2 09195602 */*IRBPROC: P SET IRB OLD PSW TO SVC 3 */ 09195702 */* P MAKE NEW RB RECOGNIZABLE AS PRB */ 09195802 */* P POINT NEW RB TO IRB */ 09195902 */* P CLEAR 12 BYTE AREA IN NEW PRB */ 09196002 SPACE 2 09199002 IRBPROC DS 0H IRB PROCESSING 09203202 LA WKREG1,CVTEXIT IRB PROCDDEURE FOR XCTL IS 09205202 ST WKREG1,RBOPSWZ+N4(OLDRB) TO PUT ADDRESS OF SVC 3 09209502 * IN REQ'R PSW 09211602 XC N0(PRBCLR,NEWRB),N0(NEWRB) CLEAR FIRST 12 BYTES M3550 09213702 SPACE 2 09214702 */* P (,CDADVANS) POINT SVRB TO NEW PRB */ 09215802 SPACE 2 09217902 MVI RBSIZ1+N1(NEWRB),PRBWDLEN INSERT PRB SIZE 09219902 NI RBSTABZ(NEWRB),PRBX MARK RB AS PRB 09222502 OI RBSTAB2Z(NEWRB),RBFDYN INSURE CORE FREED ON EXIT M3550 09226002 ST OLDRB,RBLINKZ(NEWRB) POINT NEW RB TO IRB 09228002 ST NEWRB,RBWCF POINT SVRB TO NEW RB 09230002 B CDADVANS SEARCH FOR REQUESTED MODULE 09232002 TITLE ' IEAVLK00 LOAD SVC - 8' 09234002 SPACE 2 09236002 */*IGC008: E LOAD */ 09238002 */* P SET UP ADDRESSABILITY */ 09240002 SPACE 2 09242002 IGC008 DS 0H SVC LOAD ENTRY POINT 09244002 BALR BASEREG,ZERO SET UP BASE ADDRESSABILITY 09252002 USING *,BASEREG ON LOAD ENTRY 09259602 L BASEREG,LINKBASE RESET BASE TO VALUE LINK BASE 09267202 USING CDLKBASE,BASEREG FOR COMMON CODE 09274802 USING LLE,LDLREG R13 ADDRESSES THE LLE 09282402 SPACE 2 09284402 */* L SETFRR-- SET UP RECOVERY ROUTINE */ 09286402 SPACE 2 09288402 SETFRR A,PARMAD=(R8),WRKREGS=(R11,R12),FRRAD=FRRPGM 09290002 SPACE 2 09292002 */* P INITIALIZE RECOVERY PARAMETERS */ 09292402 SPACE 2 09294002 ST R8,RBCSFRRA SAVE PARM LIST ADDRESS 09300002 ST RBREG,N0(R8) SAVE SVRB IN PARM LIST 09302002 SPACE 2 09303003 */* P INDICATE PROG MGR SVRB FOR RTM */ 09304003 SPACE 2 09305003 OI RBSTAB1,RBPMSVRB THIS IS PROG MGR SVRB. @YA00094 09306003 * USED BY RTM TO INVOKE THE 09307003 * ABEND RESOURCE MGR DURING 09308003 * RECOVERY RETRY. 09309003 SPACE 2 09310002 */* P INDICATE REQUEST FOR LOAD IN VLKSVRB */ 09312002 */* S DALPRFIX:SET UP RB EXTENDED SAVE AREA */ 09314002 */* P GET POINTER TO JOB PACK AREA */ 09316002 SPACE 2 09320002 OI RBCDFLGS,LOAD INDICATE ENTRY BY LOAD MACRO. 09340002 BAL RETURND,DALPRFIX SET UP REGS 9,10, AND EXSAVE 09390002 L TABREG,TCBJSTCB GET JOB STEP TCB 09440002 LA TABREG,TCBJSEZ(TABREG) GET POINTER TO JPAQ 09490002 SPACE 2 09500002 */* S (+0,ALOCLLE2,+4,CDCONTRL) CDLLSRCH:SEARCH LLE QUEUE FOR MODULE */ 09502002 SPACE 2 09510002 BAL SUBREG2,CDLLSRCH SEARCH THE LOAD LIST QUEUE 09540002 SPACE 2 09550002 */*ALOCLLE2: S (+0,CDCONTRL,+4,LLEFOUND,+8,CONTLLSR,+16,CDQUECTL) 09552002 */*CDALLOC:DETERMINE AVAILABILITY OF MODULE */ 09554002 SPACE 2 09560002 ALOCLLE2 BAL SUBREG2,CDALLOC IF FOUND ALLOCATE 09590002 B CDCONTRL NO SUCCESSFUL ALLOC 09640002 B LLEFOUND SAVE LLE IN EXSA OF SVRB 09690002 B CONTLLSR CONTINUE SEARCH 09740002 NOP N0(N0,N0) THIS RET SHOUDL NOT BE ENTERED 09790002 B CDQUECTL QUEUE RB UNTIL MOD IF FETCHED. 09840002 SPACE 2 09850002 */*CONTLLSR: S (+0,ALOCLLE2,+4,CDCONTRL) CDLLSRCH:CONTINUE LLE SEARCH 09852002 */**/ 09854002 SPACE 2 09860002 CONTLLSR LR R1,R13 PUT BEGIN LLE IN R1 09890002 LA SUBREG2,ALOCLLE2 PUT RETURN ADDRESS IN REG 09940002 B CDLLCONT CONTINUE CONTINUE SEARCH 09990002 SPACE 2 10000002 */*LLEFOUND: P SAVE LLE ADDRESS IN RB EXTENDED SAVE AREA */ 10002002 */* D (YES,,NO,CDEMERGE) WAS MODULE LOADED BY NIP? */ 10003002 */* P SAVE VOLITAL REGSITERS ACROSS INTERFACE */ 10004002 */* L SETLOCK-- OBTAIN CMS LOCK */ 10005002 */* P (,CDEMERGE) RESTORE VOLITAL REGSITERS */ 10006002 SPACE 2 10010002 LLEFOUND ST LDLREG,RBCSLLE SAVE LLE IN EXSA OF SVRB 10040002 TM CDATTRJ,CDNIP LOADED BY NIP M01907 10047002 BZ CDEMERGE NO,CONTINUE M01907 10054002 STM R11,R12,RBCSGR0 SAVE VOLITAL REGISTERS M01907 10061002 SETLOCK OBTAIN,TYPE=CMS,MODE=UNCOND, M01907 X10068002 RELATED=('FREED BY EXIT PROLOGUE') GET CMS LOCK M01907 10075002 LM R11,R12,RBCSGR0 RESTORE VOLIATL REGISTERS M01907 10082002 B CDEMERGE COMPLETE REQUEST 10090002 EJECT 10140002 * THIS IS THE LOAD FINAL PROCESSING ROUTINE. THE LLE IS EITHER 10190002 * FOUND DURING THE LLE SEARCH, OR IS CREATED HERE (WITH COUNT 10240002 * SET TO ZERO). NEXT THE RESPONSIBILITY COUNT IS CHECKED FOR 10290002 * THE MAXIMUM VALUE (7FFF). IF MAX VALUE WAS REACHED, 906 ABEND 10340002 * IS GENERATED. OTHERWISE THE COUNT IS INCREMENTED BY ONE, R15 10390002 * IS SET TO ZERO, R0 IS SET TO THE REQUESTED ENTRY POINT, 10440002 * R1 IS SET TO THE SIZE OF THE MODULE IN DOUBLE WORDS, AND THE 10490002 * THE HIGH ORDER BYTE OF REGISTER 1 IS SET TO INDICATE THE APF 10540002 * STATUS OF THE LOADED MODULE. RETURN TO THE USER IS MADE VIA 10590002 * A BRANCH TO THE EXIT PROLOGUE. 10640002 * REGISTERS AT ENTRY 10690002 * R3,4,5- CVT,TCB,SVRB 10740002 * R6 - BASE (IEAVLK00) 10790002 * R11 - REQUESTED CDE 10840002 * R12 - MAJOR CDE FOR REQUEST 10890002 * OTHER REGISTERS NOT REFERENCED 10940002 * SVRB EXSAVE FULLY INITIALIZED. 10990002 SPACE 2 11040002 */*CDLDRET: P GET ADDR OF LLE FROM RB EXTENDED SAVE AREA */ 11050002 SPACE 2 11060002 CDLDRET DS 0H FOAD FINAL PROCESSING 11090002 L LDLREG,RBCSLLE GET LLE 11140002 SPACE 2 11150002 */* D (YES,LOLITA,NO,) WAS LLE FOUND? */ 11152002 SPACE 2 11160002 LTR LDLREG,LDLREG DOES LLE EXIST 11190002 BNZ LOLITA YES DO NOT GET ONE 11240002 SPACE 2 11250002 */* L GETMAIN-- GET LLE FROM LSQA */ 11252002 SPACE 2 11260002 L ASCBREG,PSAAOLD GET ASCB ADDRESS FOR GM 11290002 GETMAIN RU,LV=LLESIZE,SP=255,BRANCH=YES GET LLE FROM 255 11340002 SPACE 2 11350002 */* P INITIALIZE AND CHAIN LLE TO TOP OF LLE QUEUE */ 11352002 SPACE 2 11360002 LR LDLREG,R1 SET LLE BASE REGISTER 11390002 L WKREG1,TCBLLS FIND LLE QUEUE ORIGIN 11440002 ST LDLREG,TCBLLS MAKE THIS LLE FIRST LLE 11490002 ST WKREG1,LLECHN POINT NEW LLE TO NEXT LLE 11540002 LA CDEREG,0(CDEREG) CLEAR HIGH BYTE 11550002 SPACE 2 11560002 */* P POINT LLE TO MINOR CDE (OR MAJOR IF NO MINOR) */ 11562002 SPACE 2 11570002 ST CDEREG,LLECDPT POINT LLE TO CDE 11590002 SR WKREG1,WKREG1 CLEAR REG TO INITIALIZE COUNTS 11640002 STH WKREG1,LLECOUNT SET TOTAL COUNT TO ZERO 11690002 STH WKREG1,LLESYSCT SET SYSTEM COUNT TO ZERO 11740002 SPACE 2 11750002 */*LOLITA: D (NO,LOLIT,YES,) LLE RESPONS COUNT = MAX? */ 11752002 SPACE 2 11760002 LOLITA CLC LLECOUNT(N2),MAXIM IS LLECOUNT MAXIMUM 11790002 BNE LOLIT IF NOT CONTIMUE AT LOLIT 11840002 SPACE 2 11850002 */* P INITIALIZE ABEND CODE = 0 */ 11852002 */* P DECREMENT MAJOR CDE USE COUNT BY 1 */ 11854002 */* S () ERRCONT:GIVE ABEND CODE 906 */ 11856002 SPACE 2 11860002 SR R13,R13 OTHERWISE ABEND 906 11890002 LH WKREG1,CDUSEJ PICK UP FIRST BYTE 11940002 BCTR WKREG1,N0 DECREMENT COUNT BY ONE 11990002 STH WKREG1,CDUSEJ PUT COUNT BACK IN CDE 12040002 B ERRCOUNT GO TO ABEND 12340002 SPACE 2 12350002 */*LOLIT: P INCREMENT LLE TOTAL RESPONSIBILITY BY 1 */ 12352002 SPACE 2 12360002 LOLIT LH WKREG1,LLECOUNT PICK UP USE COUNT 12390002 LA WKREG1,N1(WKREG1) INCREMENT BY ONE 12440002 STH WKREG1,LLECOUNT STORE THE NEW COUNT 12490002 SPACE 2 12500002 */* D (NO,LOXLBLD,YES,) IS THIS A SYSTEM REQUEST? */ 12502002 SPACE 2 12510002 TM RBCSFLG1,RBCSSYSR SYSTEM REQUEST 12540002 BZ LOXLBLD NO- GET EP AND LNG FOR EXIT 12590002 SPACE 2 12600002 */* P INCREMENT SYSTEM RESPONSIBILITY COUNT IN LLE BY 1 */ 12602002 SPACE 2 12610002 LH WKREG1,LLESYSCT LOAD LLE SYSTEM USE COUNT 12640002 LA WKREG1,N1(WKREG1) INCREMENT BY ONE 12690002 STH WKREG1,LLESYSCT STORE NEW LLE SYSTEM USE COUNT 12740002 SPACE 2 12750002 */*LOXLBLD: P SET RETURN CODE = 0 */ 12752002 */* P GET ADDRESS OF EXTENT LIST */ 12754002 */* P GET NUMBER OF EXTENTS FROM XL */ 12756002 SPACE 2 12760002 LOXLBLD DS 0H 12790002 SR R15,R15 CLEAR RETURN CODE REGISTER 14790002 SR WKREG1,WKREG1 CLEAR REGISTER FOR LOOP @ZA16851 14810040 L WKREG2,CDXLMJPJ GET XTLST ADDRESS 14840002 LTR WKREG2,WKREG2 DOES XTLST EXIST? @ZA16851 14850040 BZ NOXL NO.SKIP MOD LENGTH CALC @ZA16851 14860040 L COMREG,N4(WKREG2) GET NUMBER OF EXTENTS 14890002 SPACE 2 14950002 */*ADDLOOP: P CALCULATE MODULE LENGTH */ 14952002 */* P REDUCE LENGTH TO NO. OF DWDS IN R1 */ 14954002 SPACE 2 14960002 ADDLOOP AL WKREG1,N8(WKREG2) ADD NEXT LENGTH 14990002 LA WKREG2,N4(WKREG2) POINT TO NEXT LENGTH 15040002 BCT COMREG,ADDLOOP IF ANOTHER EXTENT, ADD IT 15090002 * OTHERWISE DROP THROUGH 15140002 LA WKREG1,MASK(WKREG1) ROUND UP TO NEXT BOUNDARY 15190002 SRL WKREG1,N3 CONVERT SIZE TO DOUBLE WORDS 15240002 SPACE 2 15250002 */* P SET R0 = ENTRY POINT OF MODULE (FROM MINOR CDE) */ 15252002 SPACE 2 15260002 NOXL DS 0H @ZA16851 15270040 L COMREG,CDENTPT GET ENTRY POINT FROM CDE 15290002 LA R0,N0(COMREG) SET RETURN REG AND CLEAR BYTE 15340002 SPACE 15390002 * LOAD APF INCIDATOR SETTING. PUT AUTHORIZATION INTO REGISTER 15440002 * 1, HIGH ORDER BYTE. 15490002 SPACE 15540002 TM CDATTR2,CDAUTH IS MAJOR AUTHORIZED 15590002 BNO NOLDAUTH SKIP FLAG SETTING 15640002 ICM R1,AUTHBYTE,AUTHON SET APF FLAG 15690002 SPACE 2 15700002 */*NOLDAUTH: L SETFRR-- REMOVE RECOVERY ROUTINE */ 15702002 SPACE 2 15710002 NOLDAUTH DS 0H FLAG SKIP LABEL 15740002 SETFRR D,WRKREGS=(R11,R12) REMOVE RECOVERY RTN. 15742002 SPACE 2 15744002 */* P GET ADDRESS OF EXIT PROLOGUE IN R14 */ 15746002 */* R RETURN BR 14 */ 15746402 SPACE 2 15748002 L CVTREG,CVTPTR GET CVT ADDRESS 15750002 L R14,CVTEXPRO GET EXIT ADDR. 15790002 BR R14 EXIT TO ISSUER OF LOAD SVC 15840002 TITLE ' IEAVLK00 DELETE - SVC 9' 15890002 SPACE 2 15900002 */*IGC009: E DELETE */ 15902002 */* P ESTABLISH ADDRESSABILITY */ 15904002 SPACE 2 15910002 IGC009 DS 0H DELETE ENTRY POINT 15940002 BALR BASEREG,ZERO SET UP BASE ADDRESS 15950002 USING *,BASEREG SET UP TEMPORARY BASE 15960002 L BASEREG,LINKBASE SET UP ADDRESSABILITY OVER 15970002 USING CDLKBASE,BASEREG ENTIRE MODULE. 15980002 SPACE 2 15980102 */* L SETFRR-- SET UP RECOVERY ROUTINE */ 15981802 */* P INITIALIZE FRR PARAMETERS */ 15983802 SPACE 2 15984502 SETFRR A,PARMAD=(R8),WRKREGS=(R11,R12),FRRAD=FRRPGM 15986202 ST R8,RBCSFRRA SAVE PARM LIST ADDRESS 15987902 ST RBREG,N0(R8) SAVE SVRB ADDR. IN PARM LIST 15988302 SPACE 2 15989302 */* P INSURE EP FORM (DE NOT ACCEPTED) */ 15989402 */* S DALPRFIX:INITIALIZE RB EXTENDED SA */ 15989602 SPACE 2 15989702 ICM R0,MASK8,CLRBYTE CLEAR BYTE FOR PREFIX ROUTINE 15989802 * NO DE FORM POSSIBLE 15991302 SR R1,R1 NO DCB ADDR POSSIBLE 15993002 BAL RETURND,DALPRFIX SET UP R9,R10 AND EXSAVE 15994702 SPACE 2 15996802 */* S CDLLSRCH:SEARCH LLE QUEUE */ 15997202 SPACE 2 15997602 * DELETE WILL SEARCH THE LOAD LIST FOR THE MODULE TO BE DELETED. 15998102 * IF THE MODULE IS NOT ON THE LOAD LIST, A CODE OF 4 IS 15999802 * RETURNED IN REG. 15. A CODE OF 8 IS RETURNED IN REG. 15 IF 16001502 * THE MODULE TO BE DELETED WAS NOT LOADED BY THE USER ROUTINE. 16003202 * IF THE DELETE IS SUCCESSFUL A CODE OF 0 IS RETURNED IN 16004902 * REGISTER 15. 16006602 * CDLLSRCH WILL RETURN TO EITHER OF TWO LOCATIONS 16016602 * IF MODULE IS FOUND - BRANCH ON SUBREG2 16018602 * IF MODULE NOT FOUND - BRANCH ON SUBREG2+4 16020602 SPACE 1 16022602 BAL SUBREG2,CDLLSRCH SEARCH LOAD LIST OFF TCB 16029002 SPACE 2 16031002 */*%CDLLS: D (YES,LLFOUND,NO,) LLE FOUND? */ 16031502 SPACE 2 16031602 B LLFOUND MDOULE FOUND 16033002 SPACE 2 16033302 */* L () EXIT-- PROLOGUE RC=4 */ 16033402 SPACE 2 16033902 LA R15,FOUR MODULE NOT FOUND 16034002 B DELETXIT EXIT FROM DELETE 16035302 SPACE 2 16037302 */*LLFOUND: D (NO,CDNON01,YES,) CDE A MINOR? */ 16037502 */* P GET MAJOR */ 16037602 SPACE 2 16037702 LLFOUND DS 0H LLE EXISTS 16038602 TM CDATTR,CDMIN IF MINOR PICK UP MAJOR 16039502 BNO CDNON01 SKIP PICK UP IF MAJOR 16041602 L CDEREG,CDXLMJP PICK UP MAJOR ADDRESS 16051802 SPACE 2 16054402 */*CDNON01: D (NO,PPREQ,YES,) SYSTEM REQUEST? */ 16054502 SPACE 2 16054802 CDNON01 TM RBCSFLG1,RBCSSYSR Q. SYSTEM REQUEST 16055302 BZ PPREQ A. NO CONTINUE DELETE FOR USER 16058802 SPACE 2 16061802 */* D (NO,TSTOK,YES,) SYSTEM COUNT = 0? */ 16061902 SPACE 2 16062202 LH WKREG2,LLESYSCT GET SYSTEM COUNT 16062302 LTR WKREG2,WKREG2 SYSTEM LLE USE COUNT ZERO 16065802 BNZ TSTOK A. NO-DELETE THIS MODULE 16069302 SPACE 2 16072302 */*RETRYLLE: S (,%CDLLS) CDLLCONT:CONTINUE SEARCH */ 16072402 SPACE 2 16072702 RETRYLLE LR R1,LDLREG A. NO- SET SEARCH TO BEGIN WITH 16072802 * THIS MODULE 16076302 B CDLLCONT CONTINUE SEARCH 16079802 SPACE 2 16081802 */*PPREQ: D (NO,RETRYLLE,YES,DELNORM) TOTAL USE COUNT GT SYSTEM USE 16081902 */*COUNT? */ 16083402 SPACE 2 16087502 PPREQ CLC LLECOUNT,LLESYSCT TEST TOTAL COUNT > SYSTEM COUNT 16089002 BNH RETRYLLE GET ANOTHER LLE 16090502 B DELNORM CONTINUE NORMAL DELETE 16092002 SPACE 2 16093502 */*TSTOK: P DECREMENT SYSTEM USE COUNT */ 16095002 SPACE 2 16096502 TSTOK BCTR WKREG2,N0 DECREMENT BY ONE 16098002 STH WKREG2,LLESYSCT STORE SYSTEM COUNT 16099502 SPACE 2 16101002 */*DELNORM: P DECREMENT LLE COUNT BY ONE */ 16101402 */* D (NO,LLNON0,YES,) LLE USE COUNT = 0? */ 16102502 SPACE 2 16104002 DELNORM LH WKREG2,LLECOUNT GET USE COUNT 16105502 BCT WKREG2,LLNON0 IF NOT 0, FREE LLE 16107002 SPACE 2 16108502 */* P DEQUEUE LLE */ 16110002 SPACE 2 16111502 MVC N0(WORD,WKREG1),LLECHN REMOVE ELEMENT FROM LIST 16113002 L AREAREG,PSAAOLD GET ASCB FOR FREEMAIN 16114502 SPACE 2 16116002 */* L (,MAJOR) FREEMAIN-- FREE LLE */ 16117502 SPACE 2 16119002 FREEMAIN RU,SP=255,A=(LDLREG),LV=LLESIZE,BRANCH=YES FREE LLE 16120502 B MAJOR SKIP STORING- LLE WAS FREED 16122002 SPACE 2 16123502 */*LLNON0: P STORE NEW LLE USE COUNT */ 16125002 SPACE 2 16126502 LLNON0 STH WKREG2,LLECOUNT SAVE NEW COUNT 16128002 SPACE 2 16128202 */*MAJOR: D (NO,JPQMOD,YES,) CDE ON LPA QUEUE? */ 16128402 */* P SAVE R11 - R13 IN RB EXTENDED SAVE AREA */ 16128602 */* L SETLOCK-- GET CMS LOCK */ 16128802 */* P RESTORE R11 - R13 */ 16129002 SPACE 2 16129502 MAJOR TM CDATTR,CDNIP CDE ON LPAQ TEST 16131002 BZ JPQMOD NO-SKIP GETTING CMS LOCK @Y04990 16131802 STM R11,R13,RBCSGR15 SAVE VOLITAL REGISTERS @Y04990 16132602 SETLOCK OBTAIN,TYPE=CMS,MODE=UNCOND, @Y04990x16133402 RELATED=('IEAVLK02,CDHKEEP,EXITSRCH OR EXITPROLOGUE') 16134202 LM R11,R13,RBCSGR15 RESOTRE VOLITAL REGS @Y04990 16135002 SPACE 2 16135802 */*JPQMOD: P DECREMENT CDE USE COUNT */ 16137002 */* D (NO,CDNON0,YES,) CDE USE COUNT = 0? */ 16137702 SPACE 2 16138502 JPQMOD DS 0H DECREMENT CDE COUNT 16139502 LH WKREG2,CDUSE PICK UP USE COUNT IN CDENTRY 16140502 BCTR WKREG2,N0 DECREMENT COUNT BY ONE 16142002 STH WKREG2,CDUSE SAVE NEW CDUSE COUNT 16143002 LTR WKREG2,WKREG2 Q. USE COUNT ZERO 16144502 BNZ CDNON0 A. NO- GIVE NORMAL RETURN 16144802 SPACE 2 16146002 */* S CDHKEEP:FREE CDE AND MINORS */ 16147002 SPACE 2 16148902 L GR15,HKPADDR SET UP ENTRY POINT ADDRESS 16149002 BALR RETURN,GR15 BRANCH TO CDHKEEP,RET REG SET 16150502 SPACE 2 16151502 */*CDNON0: P SET RETURN CODE IN REG 15 = 0 */ 16152802 SPACE 2 16153802 CDNON0 DS 0H DELETE EXIT SUCCESSFUL 16154802 SR R15,R15 INDICATE DELETE SUCCESSFUL 16155802 SPACE 2 16156802 */*DELETXIT: P GET EXIT PROLOGUE ENTRY POINT */ 16158802 SPACE 2 16159502 DELETXIT DS 0H EXIT FROM DELETE PTM023 16160002 L CVTREG,CVTPTR GET CVT ADDRESS 16162002 L RETURN,CVTEXPRO GET ADDRESS OF EXIT PROLOGUE 16163202 SPACE 2 16164202 */* L SETFRR-- REMOVE RECOVERY ROUTINE */ 16165402 */* R RETURN VIA BR 14 */ 16165602 SPACE 2 16166602 SETFRR D,WRKREGS=(R1,R2) REMOVE RECOVERY RTN. 16167602 LM R0,R1,RBGRS0 PASS PARAMETERS TO USER 16169402 BR RETURN GO TO EXIT PROLOGUE 16170402 TITLE ' IEAVLK00 SYNCH - SVC 12' 16171402 SPACE 2 16172402 */*IGC012: E SYNCH */ 16173402 */* P SET UP ADDRESSABILITY */ 16174402 SPACE 2 16175402 IGC012 DS 0H SVC SYNCH ENTRY 16176402 BALR BASEREG,ZERO SET UP ADDRESSIBILITY 16177402 USING *,BASEREG TEMPORARY BASE FOR NEXT INST. 16179702 L BASEREG,LINKBASE PICK UP PERMANENT BASE 16190002 USING CDLKBASE,BASEREG SET ADDRESSABILITY 16240002 SPACE 2 16242002 */* L SETFRR-- SET UP RECOVERY ROUTINE */ 16242402 */* P INITIALIZE RECOVERY PARAMETERS */ 16242802 SPACE 2 16244002 SETFRR A,PARMAD=(R8),WRKREGS=(R11,R12),FRRAD=FRRPGM 16250002 ST R8,RBCSFRRA SAVE PARM LIST ADDRESS 16260002 ST RBREG,N0(R8) PUT SVRB ADDR IN PARMLIST M01978 16265002 SPACE 2 16270002 */* P MOVE ENTRY POINT ADDRESS FROM R15 TO R14 */ 16280002 */* P (,THRUX) INDICATE IN CDFLGS THE REQUEST IS SYNCH */ 16280402 SPACE 2 16282002 LR SUBREG1,R15 PUT ENTRY ADDRESS IN REGISTER 16290002 * EXPECTED BY THRUX 16340002 OI RBCDFLGS,SYNC SET FLAG IN RBCDFLGS INDICATING 16390002 * ENTRY TO MAINLINE BY SYNCH 16440002 B THRUX CONTINUE SYNCH PROCESSING 16490002 * IN COMMON CODE 16540002 TITLE ' IEAVLK00 ATTACH INTERFACE ENTRY' 16590002 * ENTRY POINT FOR ATTACH 16640002 * ENTRY CONDITIONS 16690002 * R0 = ADDRESS OF PN OR DE 16740002 * R0 = IS COMPLIMENTED IF DE 16790002 * R1 = ADDRESS OF CDE 16840002 * R3 = ADDRESS OF CVT 16842002 * R4 = ADDRESS OF TCB 16844002 * R5 = ADDRESS OF PGM. MGR. SVRB 16846002 * ON ENTRY THE PSW IS FULLY ENABLE, PRIVILEGED, KEY 0, 16850002 * NO LOCKS ARE HELD ON ENTRY 16870002 SPACE 2 16890002 */*IEAQCS01: E ATTACH */ 16892002 SPACE 2 16900002 IEAQCS01 DS 0H ENTRY POINT FOR ATTACH 16940002 SPACE 2 16942002 */* P SET UP ADDRESSIBILITY */ 16942402 SPACE 2 16944002 BALR BASEREG,ZERO SET UP TEMPORARY BASE 16950002 USING *,BASEREG USED TO GET NORMAL BASE 16960002 L BASEREG,LINKBASE SET UP PERMANENT BASE 16970002 USING CDLKBASE,BASEREG SET ADDRESSABILITY 16980002 SPACE 2 16980402 */* P TURN ON ATTACH FLAG IN RBCDE FIELD */ 16980502 SPACE 2 16980802 OI RBCDFLGS,RBCSATT SET ATTACH BIT ON IN RB 16982002 SPACE 2 16982103 */* P INDICATE PROG MGR SVRB FOR RTM */ 16982203 SPACE 2 16982303 OI RBSTAB1,RBPMSVRB THIS IS PROG MGR SVRB. @YA00094 16982403 * USED BY RTM TO INVOKE THE 16984003 * ABEND RESOURCE MGR DURING 16985703 * RECOVERY RETRY. 16986103 SPACE 2 16986703 */* L SETLOCK-- OBTAIN LOCAL LOCK */ 16987403 SPACE 2 16989003 SETLOCK OBTAIN,TYPE=LOCAL,MODE=UNCOND,RELATED=EXIT 16990003 SPACE 2 16991003 */* L SETFRR-- INITIALIZE RECOVERY ROUTINE */ 16992003 */* P CLEAR WORK FIELDS IN RB EXTENDED SAVE AREA */ 16992540 */* P INITIALIZE RECOVERY PARAMENTERS */ 16993003 SPACE 2 16994003 SETFRR A,PARMAD=(R8),WRKREGS=(R11,R12),FRRAD=FRRPGM 16996803 XC RBCSERRA(CLRSIZE+EIGHT),RBCSERRA CLEAR WORK AREA @WAB 16997040 ST R8,RBCSFRRA SAVE PARM LIST ADDRESS 16997203 ST RBREG,N0(R8) SAVE SVRB ADDR. IN PARM LIST 16998603 SPACE 2 17000403 */* P INITIALIZE NAME AND DCB REGISTERS */ 17001403 SPACE 2 17004003 LPR NAMEREG,R0 GET UNCOMPLIMENTED NAME ADDRES 17004703 LA DCBREG,N0(R1) SET UP COMMON DCB REG. 17005403 LNR DCBREG,DCBREG SET NEG. - DCB NOT CHKED M04728 17007603 SR R1,R1 PREPARE FOR TYPE STORAGE 17009403 SPACE 2 17011203 */* D (NO,EPFRM,YES,) DE FORM OF ATTACH? */ 17012103 SPACE 2 17013603 LTR R0,R0 Q. DE FORM REQUEST 17014803 BNM EPFRM A. NO- USE EP FORM 17015703 SPACE 2 17016603 */* P PUT NAME AND DE POINTER IN RBXSA */ 17017603 SPACE 2 17018603 MVC RBCSNAME(EIGHT),N4(NAMEREG) PUT NAME IN XSA 17020603 LR R1,NAMEREG SAVE ADDRESS OF DE 17021603 LA NAMEREG,RBCSNAME POINT NAME REG. TO XSA NAME 17022603 SPACE 2 17023303 */*EPFRM: D (NO,AUTHOFF,YES,) ATTACH CALLER AUTHORIZED? */ 17024303 */* P INDICATE AUTHORIZED CALLER IN RBXSA */ 17025303 SPACE 2 17026303 EPFRM TM RBCSDE,X80 Q. ATTACH CALLER AUTHORIZED 17027303 BZ AUTHOFF A. NO- SKIP BIT SETTING 17028303 OI RBCSFLG1,RBCSSYSR A. YES- INDICATE FOR FUTURE USE 17029303 SPACE 2 17029440 */* D (NO,AUTHOFF,YES,) ATTACH WITH RESET APF? */ 17029540 */* P INDICATE ATTACH WITH RESET (RBCRSAPF=1) */ 17029640 SPACE 2 17029740 TM RBCSDE,X40 ATTACH WITH RESET APF? @WAB 17029840 BZ AUTHOFF NO-SKIP SETTING BIT @WAB 17029940 OI RBCSFLG1,RBCRSAPF YES-INDICATE FOR FUTURE @WAB 17030040 SPACE 2 17030303 */*AUTHOFF: P (,CDADVANS) COMPLETE RBXSA INITIALIZATION */ 17031303 SPACE 2 17032303 AUTHOFF ST R1,RBCSDE STORE DE ADDRESS IN XSA 17033303 B CDADVANS GO TO LINK MAINLINE 17034303 TITLE ' IEAVLK00 COMMON SUBROUTINES' 17035303 * CDEMERGE COMPLETES PROCESSING FOR LINK,XCTL,LOAD,AND ATTACH. 17040002 * THE WORK AREAS FOR BLDL/FETCH, AND THE DE SAVE SAVES ARE FREED 17090002 * IF PRESENT, THE RESPONSIBILITY COUNT IS INCREMENTED, AND 17140002 * CONTROL PASSES TO CDEPILOG TO PASS CONTROL TO THE NEXT LEVEL 17190002 * OF CONTROL (LINK,XCTL,ATTACH), OR TO CDLDREG FOR FINAL LOAD 17240002 * PROCESSING. 17290002 * REGISTERS ON ENTRY 17340002 * R3,4,5 - CVT,TCB,SVRB 17390002 * R6 - BASE REGISTER 17440002 * R11 - REQUESTED CDE 17490002 * R12 - MAJOR CDE FOR REQUEST 17540002 * OTHER REGISTERS ARE NOT REFERENCED. 17590002 * SVRB EXSAVE FULLY INITIALIZED. 17640002 SPACE 2 17650002 */*CDEMERGE: S CDMOPUP:GO FREE WORK AREAS */ 17654002 SPACE 2 17660002 CDEMERGE DS 0H 17690002 BAL RETURND,CDMOPUP GO FREE WORK AREAS 17740002 SPACE 2 17750002 */* D (YES,CDLDRET,NO,) LOAD REQUEST? */ 17752002 SPACE 2 17760002 TM RBCDFLGS,LOAD Q. IS A LOAD IN PROCESS 17790002 BO CDLDRET YES-GO DO SPECIAL WORK FOR LOAD 17840002 SPACE 17890002 * APF TEST. IF ATTACHED JOB STEP, AND CDE IS AUTHORIZED, THE 17940002 * BIT IN THE JSCB WILL BE SET TO INDICATE AUTHORIZATION. 17990002 SPACE 2 18050002 */* D (NO,CDEPILOG,YES,) ATTACH REQUEST? */ 18052002 SPACE 2 18060002 TM RBCDFLGS,RBCSATT Q. IS ATTACH IN PROCESS 18090002 BNO CDEPILOG NO - GO TO CDEPILOG 18140002 SPACE 2 18150002 */* D (YES,TSTCDAUT,NO,) JOB STEP ATTACH? */ 18152040 SPACE 2 18160002 CLM TCBREG,MASK,TCBJSTCA Q. IS IT A JOB STEP ATTACH 18190002 BE TSTCDAUT YES GOTO TEST CDE AUTH @WAB 18240040 SPACE 2 18240340 */* D (NO,CDEPILOG,YES,) ATTACH WITH RESET APF? */ 18240640 SPACE 2 18240940 TM RBCSFLG1,RBCRSAPF IS ATTACH W/ RESET APF @WAB 18241240 BNO CDEPILOG NO - GO TO RETURN @WAB 18241540 SPACE 2 18241840 */* L TESTAUTH -- TEST CALLERS APF AUTHORIZATION */ 18242140 SPACE 2 18242440 TESTAUTH FCTN=1,BRANCH=YES CALLER AUTHORIZED ? @WAB 18242740 SPACE 2 18243040 */* P RESET CVT POINTER IN CVT REG (R3) */ 18243340 SPACE 2 18243640 L CVTREG,CVTPTR RESET CVT REGISTER @WAB 18243940 USING CVT,CVTREG SET ADDRESSABILITY @WAB 18244240 SPACE 2 18244540 */* D (NO,TSTCDAUT,YES,) CALLER APF AUTHORIZED ? */ 18244840 SPACE 2 18245140 LTR R15,R15 CALLER APF AUTHORIZED @WAB 18245440 BNZ TSTCDAUT NO - TEST CD AUTH @WAB 18245740 SPACE 2 18246040 */* P (,ABNDSET) INDICATE 306-C ABEND */ 18246340 SPACE 2 18246640 SR R13,R13 ZERO ABEND CODE REG @WAB 18246940 LA R15,BADRETCD INDICATE RC=X'0C' @WAB 18247240 OI RBCSFLG1,RBCSA306 INDICATE 306 ABEND @WAB 18247540 B ABNDSET GO PROCESS ABEND @WAB 18247840 SPACE 2 18250002 */*TSTCDAUT: D (NO,CDEPILOG,YES,) CDE AUTHORIZED? */ 18252040 SPACE 2 18260002 TSTCDAUT TM CDATTR2,CDAUTH IS REQUEST AUTHORIZED 18290040 BNO CDEPILOG NO SKIP BIT SETTING 18340002 SPACE 2 18350002 */* P (,CDEPILOG) SET JSCB AUTHORIZATION BIT */ 18352002 SPACE 2 18360002 L R15,TCBJSCB GET JSCB ADDRESS 18390002 LA R15,N0(R15) CLEAR HIGH ORDER BYTE 18400002 LTR R15,R15 Q. DOES JSCB EXIST 18410002 BZ CDEPILOG A. NO- SKIP BIT SETTING 18420002 USING IEZJSCB,R15 SET ADDRESSABILITY 18440002 OI JSCBOPTS,JSCBAUTH AUTHORIZE THE JOB STEP 18490002 B CDEPILOG GO TO CDEPILOG @YM08356 18510002 EJECT 18590002 *THIS SECTION OF CODE DOES THE FOLLOWING 18640002 * 18690002 * 1.CREATES THE 'PRB' IN WHICH THE LINKAGE TO AND OPERATION 18740002 * OF A PROGRAM IS RECORDED. HERE THE FOLLOWING IS DONE 18790002 * 18840002 * A.USING GETMAIN, 96 BYTES ARE OBTAINED FOR A PRB. 18890002 * THE FIRST 96 BYTES OF THE SVRB ARE DUPLICATED IN THE 18940002 * NEWLY CREATED PRB. 18990002 * 19040002 * B.THE SIZE FIELD WILL BE SET TO 13, INDICATING 13 19090002 * DOUBLE WORDS. 19140002 * 19190002 * C.THE PRB IS QUEUED BEHIND THE SVRB SO EXIT WILL 19240002 * FREE UP THE SVRB. THE ENTRY POINT OF THE MODULE 19290002 * IS STORED INTO THE RIGHT HALF OF THE PRB'S PSW. 19340002 * 19390002 * D.THE RBCDE FIELD IS SET TO POINT TO A CDENTRY, IN SYNCH 19440002 * THE FIELD IS SET TO ZERO. 19490002 * 19540002 * E.THE PRB IS MARKED AS A PRB (CURRENTLY REFLECTS SVRB) 19590002 * 19640002 * F.A PSW IS STRUCTURED WHICH PROPOGATES THE LEFT 5 BYTES 19690002 * FROM THE PREVIOUS LEVEL OF CONTROL(INDICATED BY AN RB). 19740002 * IF THIS IS THE ONLY CONTROL LEVEL OF THIS TASK,THE 19790002 * SYSTEM MASK IS SET ENABLED,AS IS THE PROGRAM MASK. THE 19890002 * OPERATING STATE (PROBLEM OR SUPERVISOR) AND THE 19940002 * PROTECTION KEY ARE SET ACCORDING TO THEIR VALUES 19990002 * IN THE TCB. FOR SVC SYNCH THE PSW WILL BE STRUCTURED 20040002 * WITH ALL MASKS ENABLED, ALWAYS IN THE PROBLEM PROGRAM 20090002 * STATE, AND WITH A PROTECTION KEY VALUE ACQUIRED FROM 20140002 * THE TCB. 20190002 * 20240002 * 2.REGISTERS ARE SET UP AS FOLLOWS 20290002 * A.REGISTER 14 CONTAINS THE ADDRESS OF AN SVC 3 20340002 * INSTRUCTION IN THE CVT. 20390002 * B.REGISTER 15 CONTAINS THE ENTRY POINT OF THE 20440002 * MODULE TO GAIN CONTROL. 20490002 * C.REGISTER 0 MAY BE ALTERED FROM THE TIME THE SVC 20540002 * WAS ISSUED (THIS IS THE CASE WITH XCTL). 20590002 * D.REGISTERS 0 AND 1 ARE ALTERED BY THE LOAD USER 20640002 * MACRO. XCTL AND LINK MAINTAIN REGISTER 1 INTACT. 20690002 * E.REGISTERS 2-13 ARE THE SAME AS WHEN THE SVC WAS 20740002 * ISSUED. 20790002 * 20840002 * 3.EXIT MOVES REGISTERS 2-24 INTO THE TCB AND FREES THE SVRB. 20890002 * REGISTERS 0,1, AND 15 ARE PUT INTO THE TCB 20940002 * CONTAINING THE VALUES AT THE TIME THE EXIT PROLOGUE 20990002 * WAS ISSUED IN IEAVLK00. 21040002 * 21090002 * 4.THE DISPATCHER WILL LATER DO A LOADPSW FROM THE 21140002 * NEWLY CREATED PRB TO GIVE CONTROL TO THE MODULE. 21190002 SPACE 2 21200002 */*IEAQCS03: E ENTRY IEAQCS03 */ 21202002 SPACE 2 21202202 IEAQCS03 DS 0H FINAL LINK,XCTL,ATTACH PROCESS 21202402 SPACE 2 21202602 */* L SETLOCK-- OBTAIN LOCAL LOCK */ 21202802 */* L SETFRR-- INITIALIZE RECOVERY ROUTINE */ 21203002 SPACE 2 21203202 LR R7,R11 SAVE R11 ACROSS SETLOCK @YM08356 21204002 LR R1,R12 SAVE R12 ACROSS SETLOCK @YM08356 21207002 SETLOCK OBTAIN,TYPE=LOCAL,MODE=UNCOND,RELATED=NO @YM08356 21210002 LR R11,R7 RESTORE R11 @YM08356 21213002 LR R12,R1 RESTORE R12 @YM08356 21216002 SETFRR A,FRRAD=FRRPGM,WRKREGS=(R1,R15),PARMAD=(R13) @YM08356 21219002 ST RBREG,N0(R13) SAVE SVRB PTR FOR FRR @YM08356 21222002 ST R13,RBCSFRRA SAVE FRR PARM AREA @YM08356 21225002 SPACE 2 21228002 */*CDEPILOG: P GET ENTRY POINT ADDRESS */ 21231002 */* P SET NFN (NOT FUNCTION ALIVE) BIT */ 21240002 CDEPILOG L SUBREG1,CDENTPT PICK UP ENTRY POINT ADDRESS. 21290002 OI CDATTR,CDNFN SET NFN .. IF PROGRAM 21340002 * IS REENTRABLE OR SERIALLY 21390002 * REUSABLE, BIT IS INSIGNIFICANT 21440002 SPACE 2 21442002 */* D (YES,XCTLEXIT,NO,) XCTL REQUEST? */ 21442402 SPACE 2 21444002 TM RBCDFLGS,XCTL XCTL REQUESTED GO TO 21450002 BO XCTLEXIT DO SPECIAL XCTL EXIT PROCESSING 21460002 SPACE 21490002 * THE FOLLOWING SECTION OF CODE GETS 96 BYTES OF MAIN STORAGE TO 21540002 * CREATE AND INITIALIZE A PRB. A PSW IS BUILT WHICH WILL BE 21590002 * LOADED BY THE DISPATCHER TO ENTER THE ROUTINE REQUESTED. AN 21640002 * EXIT IS TAKEN WHICH CAUSES THE SVRB TO BE FREED UP, AND 21690002 * CONTROL TO BE GIVEN TO THE PRB WHICH WAS JOST CREATED. 21740002 SPACE 2 21790002 */*THRUX: P SET UP FOR GETMAIN */ 21800002 */* L GETMAIN-- BRANCH MACRO 160 BYTE PRB FROM 255 */ 21802002 SPACE 2 21810002 THRUX DS 0H SYNCH FINAL PROCESS ENTRY 21840002 L ASCBREG,PSAAOLD GET ASCB ADDRESS 21890002 LR PRBREG,GR14 SAVE EP ADDRESS 21940002 GETMAIN RU,LV=PRBSIZE,SP=255,BRANCH=YES GET PRB AREA 21990002 LA GR14,N0(PRBREG) RESTORE SAVED REG. AND 22040002 * CLEAR HIGH BYTE FOR STORE 22050002 SPACE 2 22060002 */* P CLEAR PREFIX AREA */ 22062002 */* P GET START OF BASE PRB */ 22064002 SPACE 2 22070002 XC ZERO(PRBPREF,R1),ZERO(R1) CLEAR PRB PREFIX AREA 22090002 LA PRBREG,PRBPREF(R1) ADD PREFIX SIZE TO ADDRESS 22140002 * FOR PRB START 22190002 SPACE 22240002 * INITIALIZATION OF PRB 22290002 SPACE 2 22340002 */* P MOVE 96 BYTES FROM SVRB TO PRB */ 22350002 */* P NOTE: THIS SETS REGS AT TIME OF SVC IN PRB REG SAVE AREA FOR TRRM 22352002 */* */ 22354002 */* P SET PRB SIZE TO 13 DOUBLE WORDS */ 22356002 */* P QUEUE PRB BEHIND SVRB */ 22358002 */* P INSURE TCBNEXT IS OFF IN OLD ATTN OFF IN NEW */ 22358402 */* P MAKE NEW RB TYPE = PRB */ 22358802 SPACE 2 22360002 MVC PRBSTART(PRBSIZ),RBSECT MOVE 96 BYTES FROM SVRB TO PRB 22390002 * FIRST BYTE OF SIZE ZERO 22440002 MVI PRBSIZE1+N1,PRBWDLEN SET SIZE=13 DBL WORDS 22490002 ST PRBREG,RBWCF POINT SVRB TO PRB, WHEN EXIT IS 22540002 * TAKEN BY SVRB PRB IS STARTED. 22590002 NI RBSTAB2,MAX-RBTCBNXT GUARENTEE TCBNXT FLAG OFF IN OLD 22640002 NI PRBSTAB2,MAX-RBATTN GUARENTEE ATTN BIT OFF IN NEW 22690002 NI PRBSTAB,PRBX MAKE NEW RB RECOGNIZABLE AS PRB 22740002 SPACE 22790002 * INITIALIZE PSW WITHIN PRB FOR ENTRY TO ROUTINE 22840002 SPACE 2 22900002 */* P PUT ENTRY POINT IN RBOPSW */ 22902002 */* P PUT PREFORMATTED PSW IN LEFT HALF RBOPSW */ 22904002 SPACE 2 22910002 ST SUBREG1,PRBOPSW+WORD STORE ENTRY POINT IN PSW 22940002 MVC PRBOPSW(PSWBASE),FRAMPSW MOVE 5 FORMATTED BYTES TO PSW 22990002 STNSM PRBOPSW,MAX SET MASK FIELD OF PSW 23040002 SPACE 2 23050002 */* D (YES,SYNCTEST,NO,) SYNCH REQUEST? */ 23052002 SPACE 2 23060002 TM RBCDFLGS,SYNC Q.TEST TYPE OF SVC REQUEST 23090002 BO SYNCTEST IF SVC SYNCH, TAKE BRANCH 23140002 SPACE 2 23150002 */* P PUT CDE ADDRESS IN PRB */ 23152002 */* P INITIALIZE PRBFLGS TO 0 */ 23154002 */* P PUT PRB ADDRESS IN CDE */ 23156002 SPACE 2 23160002 ST CDEREG,PRBFLGS OTHERWISE STORE CDENTRY ADDR IN 23190002 * PRB. 23240002 MVI PRBFLGS,ZERO INITIALIZE FLAGS TO ZERO 23290002 ST PRBREG,CDRBPJ STORE PRB ADDR IN CDE 23340002 SPACE 2 23390002 */* D (YES,PSWSET,NO,) DOES PREVIOUS RB POINT TO TCB? */ 23400002 SPACE 2 23440002 L WKREG1,PRBWCF PICK UP ADDR OF PREV. CTL LEVEL 23490002 CR TCBREG,WKREG1 Q. DOEA RB POINT TO TCB 23540002 BE PSWSET A.=YES,TAKE BRANCH 23590002 SPACE 2 23600002 */* P (,SYNCR) PUT OLD RBOPSW IN NEW */ 23602002 SPACE 2 23610002 MVC PRBOPSW(PSWBASE),RBOPSWZ(WKREG1) MOVE IN OLD PSW FLAGS 23640002 B SYNCR CONTINUE PROCESSING 23690002 SPACE 2 23700002 */*PSWSET: D (NO,SYNCROUT,YES,) TASK PRIVILEGED? */ 23702002 */* P TURN ON PRIVILIGED MODE */ 23704002 SPACE 2 23710002 PSWSET TM TCBFLGS3,TCBFSM Q. DOES TASK OPERATE PRIVILEGED 23740002 BZ SYNCROUT A=NO, TAKE BRANCH 23790002 NI PRBOPSW+N1,XFE PRIVIVEGED MODE OPERATION 23840002 SPACE 2 23850002 */*SYNCROUT: P SET TCB KEY IN PSW */ 23852002 SPACE 2 23860002 SYNCROUT OC PRBOPSW+N1(N1),TCBPKF SET PROTECT KEY VALUE FROM TCB 23890002 SPACE 2 23900002 */*PICAMASK: D (NO,SYNCR,YES,) PIE EXIST? */ 23902002 SPACE 2 23910002 PICAMASK DS 0H TEST FOR PIE/PICA 23940002 SR PIEREG,PIEREG CLEAR PIE REG BEFORE TEST M01978 23960002 ICM PIEREG,MASK,TCBPIE+N1 PICK UP PIE ADDRESS 23990002 BZ SYNCR IF NO PIE, EXIT 24040002 SPACE 2 24050002 */* P SET PARAMETER CHECK FLAG */ 24051002 */* P GET ADDR OF PIE ADDR */ 24052002 */* P GET ADDR OF PICA FROM PIE */ 24054002 SPACE 2 24060002 OI RBCSFLG1,RBCSPARM TURN ON PARM CHECK FLAG M01978 24070002 L PIEREG,N0(PIEREG) GET POINTER TO PIE 24090002 LTR PIEREG,PIEREG Q. PIE PRESENT 24140002 BZ SYNCR A. NO- FINISH PROCESSING 24190002 L PICAREG,N0(PIEREG) GET PICA ADDRESS 24240002 SPACE 2 24250002 */* D (NO,SYNCR,YES,) PICA EXIST? */ 24252002 SPACE 2 24260002 LTR PICAREG,PICAREG Q. PICA PRESENT 24290002 BZ SYNCR A. NO- FINISH PROCESSING 24340002 SPACE 2 24350002 */*PICAMOVE: P PUT PGM MASK IN PRB FROM PICA */ 24352002 SPACE 2 24360002 PICAMOVE MVC PRBOPSW+N2(N1),ZERO(PICAREG) A. YES-MOVE IN PROGRAM MASK 24390002 NI PRBOPSW+N2,MASK4 CLEAR VOID HALF OF MASK M00349 24395002 SPACE 2 24400002 */*SYNCR: P GET CALLER'S ENTRY POINT IN REG 15 */ 24402002 */* P TURN OFF PARM CHECK FLAG */ 24403002 */* P STORE ADDRESS OF SVC 3 IN REG 14 */ 24404002 */* P LOAD REG 0 AND REG 1 FROM RBGRSAV */ 24406002 SPACE 2 24410002 SYNCR LR R15,SUBREG1 SET R15 TO THE ENTRY POINT ADDR 24440002 NI RBCSFLG1,MAX-RBCSPARM TURN OFF PARM CHECK FLAG M01978 24490002 L CVTREG,CVTPTR GET ADDRESS OF CVT 24540002 USING CVT,CVTREG SET ADDRESSIBILITY 24590002 LA R14,CVTEXIT GET ADDR OF EXIT INSTRUCTION 24640002 ST R14,RBGRS14 PLACE IN SVRB R14 SLOT 24690002 LM R0,R1,RBGRSAVE RESTORE REGS 0 AND 1 24740002 SPACE 2 24750002 */*SVCEXIT: P GET ADDR OF SVC EXIT PROLOGUE IN REG 14 */ 24752002 */* L SETFRR-- REMOVE RECOVERY ROUTINE */ 24754002 */* R EXIT VIA BR 14 */ 24756002 SPACE 2 24760002 SVCEXIT L R14,CVTEXPRO GET ADDR OF EXIT PROLOGUE 24790002 SETFRR D,WRKREGS=(R7,R8) REMOVE RECOVERY RTN. 24800002 BR R14 EXIT 24840002 SPACE 2 24850002 */*SYNCTEST: D (NO,SYNCROUT,YES,) ASIR REQUESTOR? */ 24852002 */* P TURN OFF ASIR BIT IN TCB */ 24854002 SPACE 2 24860002 SYNCTEST TM TCBSTAB,TCBSYNCH Q. STAE REQUEST 24890002 BZ SYNCROUT A=NO TAKE BRANCH 24940002 NI TCBSTAB,MAX-TCBSYNCH TURN OFF STAE-SUP BIT 24990002 SPACE 2 25000002 */* D (NO,PPMODE,YES,) REQUESTOR IN SUPER MODE? */ 25002002 */* P SET SUPERVISOR MODE BIT */ 25004002 SPACE 2 25010002 TM TCBNSTAE,TCBPPSUP SUPERVISOR REQUEST 25040002 BZ PPMODE NO- LEAVE IN PROBLEM MDOE 25090002 NI PRBOPSW+N1,XFE YES-TURN OFF PSW PROB. MODE BIT 25140002 SPACE 2 25150002 */*PPMODE: P (,PICAMASK) SET KEY IN PSW FROM TCB (TCBSCBKY) */ 25152002 SPACE 2 25160002 PPMODE OC PRBOPSW+N1(N1),TCBSCBKY PUT REQUESTED KEY IN PSW 25190002 B PICAMASK CONTINUE 25240002 SPACE 2 25250002 */*XCTLEXIT: P PUT ENTRY POINT IN PRB RBOPSW */ 25252002 */* P PUT CDE ADDRESS IN PRB */ 25254002 */* P (,SYNCR) PUT RB ADDRESS IN CDE */ 25256002 SPACE 2 25260002 XCTLEXIT L PRBREG,RBWCF GET NEW PRB 25290002 ST SUBREG1,PRBOPSW+WORD STORE ENTRY POINT IN PSW 25340002 LA CDEREG,N0(CDEREG) CLEAR HIGH ORDER BYTE OF CDE 25350002 LR R15,R14 PUT EP ADDRESS IN OUTPUT REG 25360002 ST CDEREG,PRBFLGS PUT CDE POINTER IN PRB 25390002 ST PRBREG,CDRBPJ STORE RB POINTER IN CDE 25400002 B SYNCR TERMINATE XCTL PROCESSING 25410002 SPACE 25440002 * AS A RESULT OF ISSUEING EXIT THE SVRB WILL BE FREE UP AND 25490002 * CONTROL IS GIVEN TO THE PREVIOUS PRB. THE ROUTINE IS ENTERED 25540002 * AS FOLLOWS - R0 = ZERO 25590002 * R1 = SAME AS WHEN SVC ISSUED 25640002 * R2-13 SAME AS WHEN SVC ISSUED 25690002 * R14 = ADDRESS OF AN SVC EXIT INSTRUCTION 25740002 * R15 = ENTRY POINT ADDRESS 25790002 EJECT 25840002 * THIS ROUTINE INITIALIZES R9 TO THE ADDRESS OF THE REQUESTED 25890002 * NAME, R10 TO THE ADDRESS OF THE DCB PASSED, AND INITIALIZED 25940002 * ALL FIELDS IN THE SVRB EXTENDED SAVE AREA. IF A DE WAS 25990002 * PASSED BY THE USER, IT IS SAVED IN A NON-PAGEABLE AREA 26040002 * OBTAINED VIA GETMAIN. DALPRFIX EXPECTS INPUT IN REGISTERS 0 26090002 * AND 1, WHILE LXPREFIX EXPECTS INPUT PASSED IN A PARAMETER LIST 26140002 * WHOSE ADDRESS IS IN REGISTER 15. REGISTERS 4,5,6 AND 13 ARE 26190002 * PRESERVED OVER THE ROUTINE. ALL OTHER REGISTERS ARE CHANGED. 26240002 * 206 ABENDS ARE ISSUED FOR RECOGNIZABLE ERRORS. (SEE LINK 26290002 * PROLOGUE FOR CONDITIONS) 26340002 * CHANGES FOR PTM VS01651 IN PREFIX ROUTINES 26350002 * 26390002 SPACE 2 26400002 */*LXPREFIX: E LXPREFIX */ 26402002 */* P TURN ON PARAMETER CHECK FLAG IN RBCSFLG1 */ 26404002 */* P PUT INPUT PARAMETER LIST IN WORK REGISTER */ 26406002 SPACE 2 26410002 LXPREFIX DS 0H 26440002 USING PDS2,NAMEREG SET ADDRESSABILITY ON DE 26490002 OI RBCSFLG1,RBCSPARM TURN ON PARM CHECK FLAG 26540002 LR R12PARM,R15 POINT PARM REG TO PARM LIST FOR 26542002 SPACE 2 26550002 */* L TESTAUTH-- GET CALLER'S AUTHORIZATION */ 26554002 SPACE 2 26556002 TESTAUTH KEY=YES,STATE=YES,BRANCH=YES GET STATUS OF CALLER 26558002 SPACE 2 26558402 */* D (NO,USERKEY,YES,) CALLER AUTHORIZED? */ 26558802 SPACE 2 26559202 LTR R15,R15 Q. CALLER AUTHORIZED 26559602 BNZ USERKEY A. NO - VALIDITY CHECK INPUT 26559702 SPACE 2 26559802 */* P (,LISTCHK) SET AUTHORIZED CALLER FLAG */ 26559902 SPACE 2 26563202 OI RBCSFLG1,RBCSSYSR A. YES- TURN ON SYSTEM REQUEST 26565202 B LISTCHK GET PARAMENTER IN REGS 26565602 SPACE 2 26566002 */*USERKEY: P PUT A REASON CODE OF 1 IN REG. 15 */ 26566702 */* L MODESET-- GO TO USER KEY */ 26570002 SPACE 2 26580002 USERKEY LA R15,N1 SET REASON CODE 26582002 MODESET EXTKEY=TCB,WORKREG=2 GO TO TCB KEY 26584002 SPACE 2 26586002 */*LISTCHK: P PUT EP/DE ADDRESS IN REG 9 (NAMEREG) */ 26588002 SPACE 2 26588402 LISTCHK L NAMEREG,N0(R12PARM) GET NAME OR DE 26690002 SPACE 2 26700002 */* P PUT DCB ADDRESS IN REG 10 (DCBREG) */ 26702002 SPACE 2 26710002 L DCBREG,FOUR(R12PARM) PUT DCB ADDR IN REG 26740002 SPACE 2 26750002 */* D (NO,LXPRFIX0,YES,) THERE IS A THIRD PARAMETER? */ 26752002 SPACE 2 26760002 LTR DCBREG,DCBREG Q. IS THERE A THIRD PARM. 26790002 BNM LXPRFIX0 A. NO- CONTINUE 26840002 SPACE 2 26850002 */* P GET ERROR RETURN ADDRESS IN WORK REG */ 26852002 */* L MODESET-- RETURN TO KEY 0 */ 26852402 */* P STORE ERROR RETURN ADDRESS IN RBXSA */ 26854002 */* P (,LXPRFIX0) TURN ON RETURN REQ'D BIT IN RBCSFLG1 */ 26856002 SPACE 2 26860002 L WKREG1,EIGHT(R12PARM) A. YES- GET ERROR ADDRESS 26890002 MODESET EXTKEY=SUPR RETURN TO SUPERVISOR KEY 26900002 ST WKREG1,RBCSERRA SAVE IT IN XSA 26940002 OI RBCSFLG1,RBCSERIN TURN ON RETURN REQUESTED FLAG 26990002 B LXPRFIX0 CONTINUE 27040002 SPACE 2 27050002 */*DALPRFIX: E DALPRFIX */ 27052002 */* P TURN ON PARAM. CHECK FLAG IN RBCSFLG1 */ 27054002 */* P GET ADDR OF NAME IN REG 9 FROM REG 0 */ 27056002 */* P SET REG 9 NEGATIVE IF DE FORM */ 27058002 SPACE 2 27060002 DALPRFIX DS 0H PARAMETER PREFIXING 27090002 OI RBCSFLG1,RBCSPARM TURN ON PARM CHECK FLAG 27140002 LPR NAMEREG,R0 GET DE-NAME INTO PROPER REG 27190002 * PASSED IN COMPLEMENTED FORM 27240002 LA NAMEREG,ZERO(NAMEREG) CLEAR FLAG BYTE IN NAMEREG 27290002 N R0,HIBYTE CLEAR ADDRESS PART OF REG 27340002 OR NAMEREG,R0 PUT FLAGS IN PROPER REG 27390002 SR R12PARM,R12PARM INDICATE PARAMETERS PASSED IN 27440002 * REGISTERS AND NOT IN LIST 27490002 SPACE 2 27500002 */* P GET ADDR OF DCB IN REG 10 FROM REG 1 */ 27520002 */* D (NO,LXPRTEST,YES,) IS RETURN REQUESTED? */ 27522002 SPACE 2 27530002 LA DCBREG,N0(R1) PUT DCB IN PROPER REG 27540002 LTR R1,R1 Q. RETURN REQUESTED 27590002 BNM LXPRTEST A. NO- CONTINUE 27640002 SPACE 2 27650002 */* P TURN ON RETURN REQ'D BIT IN RBCSFLG1 */ 27652002 SPACE 2 27660002 OI RBCSFLG1,RBCSERIN A. YES- TURN ON RET. REQUEST FLG 27690002 SPACE 2 27692002 */*LXPRTEST: L TESTAUTH-- GET CALLER'S AUTHORIZATION */ 27694002 SPACE 2 27696002 LXPRTEST TESTAUTH KEY=YES,STATE=YES,BRANCH=YES GET STATUS OF CALLER 27698002 SPACE 2 27698402 */* D (NO,LXPRFIX0,YES,) CALLER AUTHORIZED? */ 27698802 SPACE 2 27699202 LTR R15,R15 Q. CALLER AUTHORIZED 27699602 BNZ LXPRFIX0 A. NO - VALIDITY CHECK INPUT 27699702 SPACE 2 27699802 */* P SET AUTHORIZED CALLER FLAG */ 27699902 SPACE 2 27706502 OI RBCSFLG1,RBCSSYSR A. YES- TURN ON SYSTEM REQUEST 27708502 * FLAG 27710502 SPACE 2 27713602 */*LXPRFIX0: L MODESET-- INSURE KEY 0 PRECESSING */ 27715602 */* P COMPLEMENT DCB ADDR IN REG 10 TO INDICATE DCB NOT 27720202 */*CHECKED */ 27726802 SPACE 2 27733402 LXPRFIX0 DS 0H COMMON CODE FOR BOTH TYPES OF 27740002 * PASSED PARAMETERS 27790002 MODESET EXTKEY=SUPR INSURE SYSTEM KEY 27800002 LA DCBREG,ZERO(DCBREG) CLEAR HIGH ORDER BYTE OF ADDR 27840002 LNR DCBREG,DCBREG INDICATE DCB NOT YET CHECKED 27890002 SPACE 2 27892002 */* P SET DE SAVE AREA ADDRESS = 0 */ 27922002 SPACE 2 27930002 SR DESZREG,DESZREG INDICATE DE SIZE NOT CALCULATED 27940002 SR DESVREG,DESVREG INDICATE DE SAVE AREA NOT YET 27990002 * OBTAINED 28040002 SPACE 2 28050002 */* D (YES,DECHK,NO,) IS THIS A SYSTEM REQUEST? */ 28060002 SPACE 2 28070002 TM RBCSFLG1,RBCSSYSR THIS A SYSTEM REQUEST 28080002 BO DECHK YES- GO TO DECHK 28082002 SPACE 2 28082402 */* P SET REASON CODE TO 2 */ 28082502 */* L MODESET-- GO TO USER KEY */ 28082602 */* P ACCESS USER DATA TO DETERMINE IF OWNED BY USER */ 28082702 */* L MODESET-- RETURN TO KEY 0 */ 28082802 SPACE 2 28083202 LA R15,N2 SET REASON CODE 28093202 MODESET EXTKEY=TCB,WORKREG=2 GO TO USER KEY 28095202 LM R0,R1,N0(NAMEREG) ACCESS USER DATA 28097202 MODESET EXTKEY=SUPR RETURN TO KEY 0 28099202 SPACE 2 28102802 */*DECHK: D (NO,LXPRFIX6,YES,) DE SPECIFIED? */ 28112102 SPACE 2 28121402 DECHK LTR NAMEREG,NAMEREG CHECK FOR DE FORM 28130702 BNM LXPRFIX6 IF NOT DE TO TO FINAL PREFIX 28140002 * PROCESSING 28190002 SPACE 2 28192002 */* P GET LENGTH OF DE IN HALFWORDS */ 28192402 */* P DOUBLE LENGTH TO OBTAIN NUMBER OF BYTES */ 28192802 */* P ADD LENGTH OF BASIC SECTION */ 28193202 SPACE 2 28194002 LA ASCBREG,X1F PREPARE TO GET LENGTH OF DE 28200002 IC DESZREG,PDS2INDC GET BYTE CONTAINING LENGTH 28210002 NR DESZREG,ASCBREG CLEAR THE HIGH 3 BITS 28220002 LA DESZREG,PDS2USRD-PDS2(DESZREG,DESZREG) DOUBLE SIZE 28230002 * (WAS HALF WORDS-NOW BYTES) AND 28232002 * ADD BASIC SIZE 28234002 SPACE 2 @OZ02572 28244003 */* P SET REASON CODE TO 3 IN R15 - IN CASE OF 206 ABEND */ @OZ02572 28254003 SPACE 2 @OZ02572 28264003 LA R15,THREE SET REASON CODE @OZ02572 28274003 SPACE 2 28284002 */* D (YES,DELENCK,NO,) SYSTEM REQUEST? */ @OZ02572 28289003 SPACE 2 28334002 TM RBCSFLG1,RBCSSYSR Q. SYSTEM REQUEST 28673302 BO DELENCK A. YES- NO VALIDITY CK @OZ02572 28681303 SPACE 2 28740002 */* L MODESET-- GO TO USER KEY */ 28744002 */* P ACCESS FIRST WORD OF USER DATA */ 28746002 */* P ACCESS LAST WORD OF USER DATA */ 28748002 */* L MODESET-- RETURN TO KEY 0 */ 28748402 SPACE 2 28750002 MODESET EXTKEY=TCB,WORKREG=2 GO TO USER KEY 28850002 L R1,N0(NAMEREG) ACCESS FIRST WORD 28900002 LR R2,R9 SET UP TO CALCULATE 28950002 AR R2,R8 LENGTH OF END OF ENTRY 29000002 BCTR R2,N0 SUBTRACT ONE TO CHECK 29050002 * USER CORE ONLY 29100002 IC R1,N0(R2) ACCESS LAST WORD 29150002 MODESET EXTKEY=SUPR RETURN TO KEY 0 29200002 SPACE 2 @OZ02572 29210003 */*DELENCK: D (YES,GETDSAV,NO,) DE TOTAL LENGTH LE 60 BYTES?*/ @OZ02572 29220003 */* P SET ABEND CODE REG(R13) TO ZERO */ @OZ02572 29223003 */* P (,ERRPARM) GO TO PROCESS 206 ABEND */ @OZ02572 29226003 SPACE 2 @OZ02572 29230003 DELENCK LA R7,DESIZE-FOUR GET MAX DE LENGTH @OZ02572 29240003 CR R8,R7 CHECK USER'S LENGTH @OZ02572 29250003 * AGAINST MAX DE LENGTH @OZ02572 29260003 BNH GETDSAV LENGTH OK- GET SAVEAREA @OZ02572 29266003 LR R8,R7 SET LENGTH OF DE TO MAX @ZA10799 29267040 SPACE 2 29290002 */*GETDSAV: L GETMAIN-- GET 64 BYTE MAX DE SAVE AREA FROM SP=255 */ 29295003 SPACE 2 29340002 GETDSAV L ASCBREG,PSAAOLD GET ASCB FOR GM 29440003 GETMAIN RU,LV=DESIZE,SP=255,BRANCH=YES GET SAVE AREA FOR DE 29640002 LA DESVREG,N0(R1) INITIALIZE POINTER TO DE SAVE 29690002 * AREA AND PROVIDE 29740002 USING DESAVE,DESVREG ADDRESSABILITY 29790002 SPACE 2 29840002 */* P MOVE DE TO DE SAVE AREA+4 (SECOND WORD) */ 29842002 */* P PUT DE LENGTH IN FIRST WORD OF DE SAVE */ 29844002 SPACE 2 29850002 BCTR DESZREG,ZERO CORRECT FOR EXECUTE 29890002 EX DESZREG,MOVEDE MOVE THE DE INTO THE SAVE AREA 29940002 ST DESZREG,DESAVESZ SAVE THE SIZE OF THE DE 29990002 SPACE 2 30000002 */*LXPRFIX6: P MOVE NAME TO RBXSA AND POINT REG 9 TO THIS NAME */ 30002002 SPACE 2 30010002 LXPRFIX6 DS 0H FINAL PREFIX PROCESSING 30040002 LA R15,TWO SET REASON CODE FOR FAILURE 30090002 MVC RBCSNAME(NAME),ZERO(NAMEREG) MOVE NAME INTO EXSA 30140002 LA NAMEREG,RBCSNAME SET UP NAME POINTER, NOT LONGER 30190002 * CONTAINS DE FLAG, MUST USE 30240002 * DE SAVE AREA POINTER IN EXSA 30290002 * TO DETERMINE IF DE EXISTS 30340002 SPACE 2 30350002 */* P INITIALIZE REMAINING FIELD OF XSA TO 0 */ 30352002 */* P PUT ADDRESS OF DESAVE AREA IN XSA */ 30354002 */* P CLEAR PARAMETER CHECK FLAG */ 30356002 */* R RETURN VIA BR 13 */ 30358002 SPACE 2 30360002 XC RBCSWORK(CLRSIZE),RBCSWORK CLEAR ALL OTHER FIELDS AND 30390002 * FLAGS TO ZERO 30440002 ST DESVREG,RBCSDE SAVE DE SAVE AREA ADDRESS IN XSA 30490002 NI RBCSFLG1,MAX-RBCSPARM TURN OFF PARM CHECK FLAG 30540002 BR RETURND RETURN TO CALLER 30840002 * THE NEXT INSTRUCTION IS EXECUTED BY DALPRFIX 30890002 MOVEDE MVC DESAVEDE(ZERO),PDS2 MOVE DE TO SAVE AREA 30940002 EJECT 30990002 * SUBROUTINE CDSEARCH SEARCHES A CDE QUEUE FOR A PARTICULAR 31040002 * MODULE NAME. A CDE ADDRESS IS RETURNED, IF FOUND. A BRANCH 31090002 * TABLE RETURN IS UTILIZED BASED ON FOUND OR NOT FOUND. 31140002 * REGISTERS USEAGE 31190002 * R0 - SET TO LEFT HALF OF NAME (OUTPUT) 31240002 * R1 - SET TO RIGHT HALF OF NAME (OUTPUT) 31290002 * R8 - ADDRESS OF CDE QUEUE TO SEARCH (INPUT) 31340002 * R9 - ADDRESS OF NAME TO SEARCH FOR (INPUT) 31390002 * R11- ADDRESS OF FOUND CDE, OR 0 (OUTPUT) 31440002 * R14- RETURN ADDRESS (INPUT) 31490002 * R15- MODIFIED BY CDSEARCH 31540002 * ALL OTHER REGISTERS NOT REFERENCED. 31590002 * 31640002 * RETURN ON R14 + 0 IS SUCCESSFUL - MODULE FOUND 31690002 * RETURN ON R14 + 4 IS UNSUCCESSFUL - MODULE NOT FOUND. 31740002 * 31790002 SPACE 2 31800002 */* E IEAQCDSR/ CDSEARCH */ 31802002 */* P GET ADDRESS OF FIRST CDE FROM LIST SPECIFIED */ 31804002 */* P PUT INPUT NAME IN WORK REGS */ 31808002 */*CONTSRCH: P GET FIRST /NEXT CDE */ 31808402 */* D (YES,%RET4,NO,) END OF CDE QUEUE? */ 31808802 */* D (YES,,NO,CONTSRCH) FIRST HALF OF NAMES EQUAL? */ 31809202 SPACE 2 31810002 IEAQCDSR DS 0H EXTERNAL ENTRY FOR CDSEARCH 31840002 CDSEARCH LR CDEREG,TABREG START SEARCH FROM LIST ORIGIN 31890002 * OF CONTROL QUEUE SPECIFIED 31940002 LM WKREG0,WKREG1,SYMBEGIN(NAMEREG) LOAD NAME INTO REGS 31990002 SPACE 32040002 * LOOP STARTS HERE 32090002 SPACE 32140002 CONTSRCH BALR SUBREG2,ZERO SET UP LOOP ADDR 32190002 L CDEREG,CDCHAIN LOAD CDEREG,TEST FOR ZERO 32240002 LTR CDEREG,CDEREG END OF CHAIN 32290002 BZ WORD(SUBREG1) A= YES TAKE BAD EXIT 32340002 C WKREG0,CDNAME Q. IS FIRST HALF OF NAME EQUAL 32390002 BCR NOTEQ,SUBREG2 A= NO, TAKE BRANCH 32440002 SPACE 32490002 * ONLY IF THE FIRST HALF OF THE NAMES ARE EQUAL WILL 32540002 * WE ENTER THIS 32590002 */* D (YES,,NO,CONTSRCH) SECOND HALF OF NAMES EQUAL? */ 32650002 SPACE 2 32660002 C WKREG1,CDNAME+FOUR Q. IS 2ND HALF EQUAL 32690002 BCR NOTEQ,SUBREG2 A= NO, TAKE BRANCH 32740002 BR SUBREG1 BOTH NAMES EQUAL, RETURN SUCC. 32790002 SPACE 2 32800002 */* R RETURN REG 14+0 */ 32810002 */*%RET4: R RETURN REG 14+4 */ 32820002 EJECT 32840002 * CDALLOC IS A SUBROUTINE OF LINK AND LOAD WHICH INTERROGATES 32890002 * THE ATTRIBUTES OF A CDE (FOUND BY CDSEARCH), AND THE SVRB 32940002 * FOR THE REQUEST. RETURN IS MADE TO SEVEN DIRRERENT POINTS 32990002 * DEPENDING ON THE SETTINGS FOUND. A BRANCH TABLE IS SET UP 33040002 * FOR FIVE OF THE RETURNS, THE OTHER TWO EXITS BEING A BRANCH 33090002 * TO IEAVLK01, AND TO THE ABEND EXIT ROUTINE. THE SEVEN EXITS 33140002 * AND THEIR CONDITIONS ARE 33190002 * 1.RETURN ON R15 + 0: MODULE CANNOT BE REUSED. 33240002 * BECAUSE THIS IS A LOAD REQUEST (RBCDLOAD=1), 33290002 * MODULE IS IN CORE (CDNIC=0), 33340002 * THE MODULE IS LOADABLE ONLY (CDNLR=0), 33390002 * THE MODULE IS NOT REUSABLE (CDREN=0,CDSER=0) 33440002 * 33490002 * 2.RETURN ON R15 +4: MODULE CAN BE USED NOW 33540002 * A.BECAUSE MODULE IN CORE (CDNIP=0), 33590002 * MODULE REUSABLE (CDREN=0,CDSER=1), 33640002 * MODULE NOT LOADABLE ONLY (CDNLR=1), 33690002 * THIS IS A LOAD REQUEST (RBCDLOAD=1) 33740002 * B.BECAUSE MODULE IN CORE (CDNIC=0), 33790002 * MODULE REENTRANT (CDREN=1,CDSER=1), 33840002 * MODULE NOT LOAD ONLY (CDNLR=1) 33890002 * C.BECAUSE MODULE IS IN CORE (CDNIC=0), 33940002 * MODULE IS REUSABLE (CDREN=0,CDSER=1), 33990002 * MODULE IS NOT LOADABLE ONLY (CDNLR=1), 34040002 * THIS IS NOT LOAD REQUEST (RBCDLOAD=0), 34090002 * MODULE NOT IS USE (CDRRBP=0) 34140002 * D.BECAUSE MODULE IS IN CORE (CDNIC=0), 34190002 * MODULE IS LOADABLE ONLY (CDNLR=0), 34240002 * THIS IS LOAD REQUEST (RBCDLOAD=1), 34290002 * MODULE IS REENTRANT OR REUSABLE (CDSER=1) 34340002 * E.BECAUSE MODULE IS IN CORE (CDNIC=0), 34390002 * MODULE IS NOT REUSABLE (CDREG=0,CDSER=0), 34440002 * MODULE IS NOT LOADABLE ONLY (CDNLR=1), 34490002 * THIS IS A LOAD REQUEST (RBCDLOAD=1), 34540002 * LOADED BY AOS LOADER (CDSQA=1), 34590002 * USE COUNT=0 (CDUSE=0) 34640002 * F.BECAUSE MODULE IS IN CORE (CDNIC=0), 34690002 * MODULE IS NOT REUSABLE (CDREG=0,CDSER=0), 34740002 * MODULE IS NOT LOADABLE ONLY (CDNLR=1), 34790002 * MODULE IS NOT USED (CDNFN=0), 34840002 * THIS IS NOT A LOAD REQUEST (RBCDLOAD=0) 34890002 * 34940002 * 3. REUTN ON R15 +8: MODULE CANNOT BE USED 34990002 * BECAUSE MODULE IS IN CORE (CDNIC=0), 35040002 * MODULE IS NOT REUSABLE (CDREN=0,CDSER=0), 35090002 * MODULE WAS USED (CDNFN=1), 35140002 * THIS IS NOT A LOAD REQUEST (RBCDLOAD=0) 35190002 * 35240002 * 4. RETURN ON R15 + 12: SERIAL REUSABLE BUT IN USE 35290002 * BECAUSE MODULE IN CORE (CDNIC=0), 35340002 * MODULE REUSABLE (CDREN=0,CDSER=1), 35390002 * NOT LOADABLE ONLY (CDNLR=1), 35440002 * NOT LOAD (RBCDLOAD=0), 35490002 * IN USE (CDRRBP NOT ZERO) 35540002 * 35590002 * 5. RETURN ON R15 + 16: MODULE IN FETCH 35640002 * BECAUSE CDNIC=1. 35690002 * 35740002 * 6. CDSETUP1 - ISSUE BLDL/FETCH 35790002 * A.BECAUSE MODULE IN CORE (CDNIC=0), 35840002 * MODULE NOT REUSABLE (CDREN=0,CDSER=0), 35890002 * MODULE NOT LOADABLE ONLY (CDNLR=1), 35940002 * THIS IS LOAD REQUEST (RBCDLOAD=1), 35990002 * THIS IS NOT AOS LOADER (CDSPZ=0) 36040002 * B.BECAUSE MODULE IS IN CORE (CDNIC=0), 36090002 * MODULE IS NOT REUSABLE (CDREN=0,CDSER=0), 36140002 * MODULE IS NOT LOADABLE ONLY (CDNLR=1), 36190002 * THIS IS LOAD REQUEST (RBCDLOAD+1), 36240002 * MODULE LOADED BY OSLOADER (CDSPZ=1), 36290002 * MODULE WAS USED (CDUSE NOT ZERO) 36340002 * 36390002 * 7. ABEND 406: NOT LOAD FOR A LOADABLE ONLY MODULE. 36440002 * 36490002 * REGISTER USAGE 36540002 * R5 - SVRB (INPUT) 36590002 * R6 - BASE ADDRESS (INPUT) 36640002 * R11- CDE FOR REQUEST (INPUT) 36690002 * R12- MAJOR CDE (OUTPUT) 36740002 * R13- ZEROED FOR 406 ABEND (OUTPUT) 36790002 * R15- RETURN REGISTER (INPUT) - POINTS TO A BRANCH TABLE 36840002 * R0,1- WORK REGISTERS, BUT ARE PRESERVED ON RETURN R15+8 36890002 * OTHER REGISTERS NOT REFERENCED 36940002 * 36990002 * CDNFN BIT IS SET FOR FIRST USE ON NON REUSABLE MODULE. 37040002 SPACE 37090002 USING ALLOC,SUBREG2 BRANCH TABLE ADDRESSABILITY 37140002 SPACE 2 37150002 */*CDALLOC: E CDALLOC */ 37152002 */* P SET ADDR OF MAJOR CDE (REG 12) = INPUT CDE (REG 11) */ 37154002 */* D (NO,MINSKIP,YES,) IS INPUT CDE A MINOR? */ 37156002 */* P GET ADDRESS OF MAJOR FROM MINOR */ 37158002 SPACE 2 37160002 CDALLOC LR CDIREG,CDEREG THE ATTRIBUTES OF THE MAJOR 37190002 * ENTRY ARE NEEDED,LOAD MAJOR. 37240002 TM CDATTR,CDMIN Q. IS THIS CDENTRY A MINOR 37290002 BZ MINSKIP A= NO, TAKE BRANCH 37340002 L CDIREG,CDXLMJP IF YES LOAD ADDRESS OF MAJOR 37390002 SPACE 2 37400002 */*MINSKIP: D (NO,%CONT,YES,) IS MAJOR BEING LOADED NOW? */ 37402002 */* R RETURN VIA REG 15+16 */ 37404002 SPACE 2 37410002 MINSKIP TM CDATTRJ,CDNIC Q. IS THE LOAD MODULE IN MAIN 37440002 * STORAGE, BIT IS SET WHILE FETCH 37490002 * OF MODULE TAKES PLACE. 37540002 BO RETURN5 RET5 NO, MODULE NOT IN,BRANCH 37590002 SPACE 2 37600002 */*%CONT: D (NO,TSTATTR,YES,) IS THIS A SYSTEM REQUEST? */ 37602002 SPACE 2 37610002 TM RBCSFLG1,RBCSSYSR Q. IS THIS A SYSTEM REQUEST 37640002 BZ TSTATTR A. NO- CONTINUE 37690002 SPACE 2 37692002 */* D (NO,TSTLIB,YES,) IS THIS AN ATTACH REQUEST? */ 37692440 SPACE 2 37694002 TM RBCDFLGS,RBCSATT Q. ATTACH REQUEST 37700002 BZ TSTLIB A. NO- TEST LIB AUTH @WAB 37710040 SPACE 2 37720002 */* D (YES,TSTATTR,NO,) IS ATTACH WITH RESET APF? */ 37720340 SPACE 2 37720640 TM RBCSFLG1,RBCRSAPF Q. RESET APF? @WAB 37720940 BNZ TSTATTR A. YES - CONTINUE @WAB 37721240 SPACE 2 37721540 */*TSTLIB: D (YES,TSTATTR,NO,) IS MAJOR FROM A SYSTEM LIBRARY? */ 37722040 SPACE 2 37730002 TSTLIB TM CDATTR2J,CDSYSLIB Q. THIS AN AUTH. LIB MODULE 37740040 BNZ TSTATTR A. YES- CONTINUE 37750002 SPACE 2 37752002 */* P SET RBCSSXSA BIT IN XSA (POSSIBLE 306 ABEND) */ 37752402 */* R RETURN VIA REG 15+8 */ 37752802 SPACE 2 37754002 OI RBCSFLG1,RBCSA306 TURN ON 306 ABEND FLAG 37760002 B RETURN3 A. NO-RET3 MOD. NOT USABLE 37790002 SPACE 2 37800002 */*TSTATTR: D (NO,%CONT2,YES,) CURRENT CDE RENT. & NON-LOAD ONLY? */ 37802002 */* R RETURN VIA REG 15+4 */ 37804002 SPACE 2 37810002 TSTATTR TM CDATTR,CDREN+CDNLR Q. IS MODULE REENTRABLE AND 37840002 * UNRESTRICTED BY LOAD-ONLY ATTR. 37890002 BO RETURN2 A=YES, TAKE BRANCH 37940002 SPACE 2 37950002 */*%CONT2: D (YES,REUSEPGM,NO,) MINOR SERIALLY REUS & NON-LOAD ONLY? */ 37952002 */* D (YES,LOADONLY,NO,) MODULE LOAD ONLY? */ 37954002 SPACE 2 37960002 TM CDATTR,CDSER+CDNLR Q. IS MODULE SERRIALLY REUSABLE 37990002 * UNRESTRICTED BY LOAD-ONLY ATTR 38040002 BO REUSEPGM A= YES, TAKE BRANCH 38140002 TM CDATTR,CDNLR Q. IS MODULE LOAD - ONLY 38190002 BZ LOADONLY A.=YES, TAKE BRANCH 38240002 SPACE 38290002 * IF FLAG IS ZERO LOADABLE ONLY IN INDICATED. 38340002 * MODULE IS NOT REUSABLE,CON ONLY BE ALLOCATED IF LOAD MACRO 38390002 * NOT ISSUED AND NOT PREVIOUSLY USED. 38440002 SPACE 38490002 SPACE 2 38500002 */* D (YES,NOBACKUP,NO,) LOAD REQUEST? */ 38502002 SPACE 2 38510002 TM RBCDFLGS,LOAD Q. IS A LOAD REQUEST PROCESSING 38540002 BO NOBACKUP YES - BRANCH 38590002 SPACE 2 38600002 */* D (NO,%CONT3,YES,) HAS MODULE BEEN USED? */ 38602002 */* R RETURN VIA REG 15+8 */ 38604002 SPACE 2 38610002 TM CDATTR,CDNFN Q. HAS THE MODULE BEEN USED 38640002 * BY A PREVIOUS REQUEST 38690002 BO RETURN3 RET3 A=YES, TAKE BRANCH 38740002 SPACE 2 38750002 */*%CONT3: P SET MODULE USED FLAG IN MINOR (NFN) */ 38752002 */* R RETURN REG 15+4 */ 38754002 SPACE 2 38760002 OI CDATTR,CDNFN SET PREVIOUSLY USED FLAG 38790002 B RETURN2 RET2 SET FLAG AND BRANCH 38840002 SPACE 2 38850002 */*NOBACKUP: D (NO,CDSETUP1,YES,) PROGRAM PUT IN BY LOADER? */ 38852002 SPACE 2 38860002 NOBACKUP DS 0H LOADABLE ONLY LOAD REQUEST 38890002 TM CDATTR2,CDSPZ Q. PGM PUT IN BY LOADER 38940002 BNO CDSETUP1 NO. GET NEW COPY 38990002 SPACE 2 39000002 */* D (NO,CDSETUP1,YES,) CDUSE = 0? */ 39002002 */* R RETURN VIA REG 15 +4 */ 39004002 SPACE 2 39010002 CLC CDUSE,ZEROUSE Q. USE COUNT EQUAL ZERO 39040002 BNZ CDSETUP1 NO. TRY TO GET NEW COPY 39090002 BZ RETURN2 ALLOW THE LOAD - ALLOC SUC. 39140002 SPACE 2 39150002 */*CDSETUP1: P GET ADDRESS OF IEAVLK01 */ 39152002 */* S () CDSETUP:GO SEARCH NEXT CDE QUEUE */ 39154002 SPACE 2 39160002 CDSETUP1 L BASEREG,VLK01VCN GET SECOND MOD ADDRESS 39190002 BR BASEREG GO TO SECOND LOAD 39240002 SPACE 2 39250002 */*REUSEPGM: D (NO,%CONT5,YES,%CONT4) REQUEST FOR LOAD? */ 39252002 */*%CONT4: R RETURN VIA REG 15+4 */ 39254002 SPACE 2 39260002 REUSEPGM TM RBCDFLGS,LOAD Q. IS THIS A LOAD REQUEST 39290002 BO RETURN2 A=YES, NO TEST OF USE REQUIRED 39340002 * REQUEST CAN BE FULFILLED 39390002 * LOAD RB POINTER FROM CDENTRY 39440002 * AND CHECK IF ZERO. 39490002 SPACE 2 39500002 */*%CONT5: P (0,%CONT4,GT 0,) GET ADDRESS OF RB USING MAJOR CDE */ 39502002 */* R RETURN REG 15+12 */ 39504002 SPACE 2 39510002 ICM WKREG1,MASK,CDRBPJ+N1 Q. IS RBPOINTER ZERO 39540002 BNE RETURN4 RET4 A=NO, TAKE BRANCH 39590002 B RETURN2 RET2 RETURN SUCCESSFUL ALLOC 39690002 SPACE 2 39700002 */*LOADONLY: P SAVE ADDRESS OF LLE */ 39702002 */* P INITIALIZE ABEND CODE = 0 */ 39704002 SPACE 2 39710002 LOADONLY DS 0H LOADABLE ONLY MODULE PROCESS 39740002 LR R0,R13 SAVE REG 13 39790002 SR R13,R13 ZERO REG 13 FOR ERROR ROUTINE 39840002 SPACE 2 39850002 */* P NOTE: ONLY LOAD REQUESTORS CAN HAVE ACCESS TO LOAD ONLY MODULES 39852002 */**/ 39854002 */* D (YES,%CONT6,NO,) REQUEST FOR LOAD? */ 39856002 */* S () ERRLONLY:ISSUE 406 ABEND */ 39858002 SPACE 2 39860002 TM RBCDFLGS,LOAD IS THIS A LOAD REQUEST 39890002 BZ ERRLONLY A = NO TAKE BRANCH, ERROR =406 39940002 SPACE 2 39950002 */*%CONT6: P RESTORE LLE */ 39952002 SPACE 2 39960002 LR R13,R0 RESTORE REG 13 39990002 SPACE 2 40000002 */* P NOTE: LOAD CANNOT ALLOCATE ALREADY LOADED NON-REUSABLE PROGRAMS 40002002 */**/ 40004002 */* D (NO,%CONT7,YES,) MINOR REENTRANT OR REUSABLE? */ 40006002 */* R RETURN REG 15+4 */ 40008002 SPACE 2 40010002 TM CDATTR,CDREN+CDSER Q. IS MODULE REN OR SER 40040002 BNZ RETURN2 RET2 A= EITHER REN OR SER 40090002 SPACE 2 40100002 */*%CONT7: R RETURN REG 15+0 */ 40102002 SPACE 2 40110002 BR SUBREG2 RET 1 ALLOCATE NOT SUCCESSFUL 40140002 DROP SUBREG2 DROP ALLOC DSECT 40190002 EJECT 40240002 * CDMOPUP IS CALLED TO PERFORM THE FOLLOWING 40290002 * 1. TEST CDUSE FOR MAXIMUM VALUE (7FFF), IF 40340002 * EXCEEDED, SET SWITCH TO ABEND IN STEP 6. 40390002 * 2. INCREMENT CDUSE BY 1 AND, IF SYSTEM REQUEST 40440002 * INCREMENT CDSYSUSE BY 1. 40490002 * 3. FREE THE CDE POINTED TO BY THE BLDL/FETCH WORK 40540002 * AREA, IF ANY, IF IT IS NOT BEING USED (IF IT IS NOT 40590002 * THE CDE FOR THE REQUEST (REG 11), OR THE MAJOR CDE 40640002 * (REG 12). 40690002 * 4. FREE THE BLDL/FETCH WORK AREA, IF ONE EXISTS, AND 40740002 * ZERO THE RBCSWORK FIELD. 40790002 * 5. FREE THE DE SAVE AREA, IF ONE EXISTS, AND ZERO 40840002 * THE RBCSDE FIELD. 40890002 * 6. TEST FOR 906 ABEND CONDITION. IF ABEND SWITCH IS SET 40940002 * ISSUE 906 ABEND, OTHERWISE RETURN ON REGISTER 13. 40990002 * 41040002 * REGISTER USABE 41090002 * R0,1,2 - ALTERED 41140002 * R5 - SVRB (INPUT) 41190002 * R6 - BASE REGISTER (INPUT) 41240002 * R7 - POINTS TO BLDL FETCH W.A. (OUTPUT) 41290002 * R11 - REQUESTED CDE (INPUT) 41340002 * R12 - MAJOR CDE (INPUT) 41390002 * R13 - RETURN ADDRESS (INPUT),ZEROED IF ABEND (OUTPUT) 41440002 * R14,15- ALTERED 41490002 * OTHER REGISTERS NOT REFERENCED 41540002 * SVRB EXSAVE FULLY INITIALIZED 41590002 SPACE 41640002 SPACE 2 41650002 */*CDMOPUP: E CDMOPUP */ 41652002 */* D (NO,INCOUNT,YES,) CDUSE COUNT = MAXIMUM? */ 41654002 SPACE 2 41660002 CDMOPUP DS 0H CLEANUP WORK AREA ROUTINE 41690002 CLC CDUSEJ(N2),MAXIM Q. IS USE FIELD MAXIMUML 41740002 BNE INCOUNT NO. INCREMENT COUNT FILEDS 41790002 SPACE 2 41800002 */* P (,FREEWORK) SET ABEND INDICATOR */ 41802002 SPACE 2 41810002 OI RBCSFLG1,RBCSABEN YES. SET ABEND SWITCH 41840002 B FREEWORK AND FREE RESOURCES 41890002 SPACE 41940002 * INCREMENT COUNT IN CDENTRY, CDUSE IS INCREMENTED ONLY HERE. 41990002 SPACE 2 42050002 */*INCOUNT: P INCREMENT CDE USE COUNT BY ONE */ 42052002 SPACE 2 42060002 INCOUNT DS 0H 42090002 LH WKREG1,CDUSEJ LOAD COUNT IN CDE 42190002 LA WKREG1,ADD1(WKREG1) INCREMENT COUNT 42240002 STH WKREG1,CDUSEJ RESTORE NEW COUNT IN CDE 42290002 SPACE 2 42340002 */*FREEWORK: P PUT CURRENT ASCB IN REG 7 FOR FREEMAIN */ 42350002 */* P (=0,DESATEST,GT 0,) GET WORK AREA ADDRESS */ 42360002 SPACE 2 42390002 FREEWORK DS 0H CHECK IF WORK AREA TO FREE 42590002 L AREAREG,PSAAOLD GET ADDR. OF ASCB 42640002 USING WKAREA,WKREG2 PROVIDE ADDRESSABILITY TO BLDL- 42690002 * FETCH WORK AREA 42740002 SR WKREG2,WKREG2 CLEAR REG FOR INSERT PTM883 42750002 ICM WKREG2,MASK,RBCSWRKA Q. WORK AREA GOTTEN 42790002 BZ DESATEST NO, CHECK DE SAVE AREA 42840002 SPACE 2 42850002 */* D (YES,RINGO,NO,) CDE BEING USED? */ 42900002 SPACE 2 42910002 CLM CDEREG,MASK,WKCDADDR+N1 Q. IS CDE BEING USED 42940002 BE RINGO A=YES, TAKE BRANCH 42990002 SPACE 2 43000002 */* D (YES,RINGO,NO,) MAJOR CDE BEING USED?? */ 43002002 SPACE 2 43010002 CLM CDIREG,MASK,WKCDADDR+N1 Q. IS CDE USED FOR MAJOR 43040002 BE RINGO A= YES, TAKE BRANCH 43090002 SPACE 2 43092002 */* P GET CDE ADDRESS FROM WORK AREA */ 43092402 */* L FREEMAIN-- FREE CDE FROM SP=255 (LSQA) */ 43092802 SPACE 2 43094002 SR R1,R1 CLEAR REGISTER FOR ICM @ZA17747 43095040 ICM R1,MASK,WKCDADDR+N1 PICKUP ADDR OF CDE @ZA17747 43096040 BZ RINGO IF ACQUIRED CDE IS ZERO @ZA17747 43097040 FREEMAIN RU,LV=CDESIZE,A=(1),SP=255,BRANCH=YES FREE CDE 43140002 SR R1,R1 CLEAR REG @M07600 43143002 STCM R1,MASK,RBCDE1 CLEAR RBCDE FIELD @M07600 43146002 SPACE 2 43150002 */*RINGO: L FREEMAIN-- FREE FETCH WORK AREA FROM SP=253 (LSQA) */ 43152002 */* P ZERO WORK AREA ADDRESS IN RBXSA */ 43154002 SPACE 2 43160002 RINGO DS 0H FREE THE WORK AREA 43190002 FREEMAIN RU,LV=WKSIZE,SP=253,A=(2),BRANCH=YES 43240002 ST R15,RBCSWORK CLEAR WORK AREA ADDR 43290002 * R15 HAS CODE OF ZERO FROM FREE 43340002 DROP WKREG2 43350002 SPACE 2 43360002 */*DESATEST: P GET DESAVE AREA ADDRESS FROM RBXSA */ 43362002 */* D (YES,,NO,ABENDTST) DOES DE SAVE AREA EXIST */ 43364002 SPACE 2 43370002 DESATEST DS 0H CHECK FOR DE SAVE AREA 43390002 L R1,RBCSDE PICK UP DE SAVE AREA ADDR 43450002 LTR R1,R1 TEST IF DE SAVE AREA EXITS 43460002 BZ ABENDTST IF NONE, GO TO CHECK FOR ABEND 43490002 SPACE 2 43500002 */* L FREEMAIN-- FREE DE SAVE AREA FROM SP=255 */ 43502002 */* P ZERO DESAVE AREA ADDRESS IN RBXSA */ 43504002 SPACE 2 43510002 FREEMAIN RU,LV=DESIZE,SP=255,A=(1),BRANCH=YES 43540002 ST R15,RBCSDE CLEAR DE SAVE AREA ADDR. 43590002 * R15 HAS CODE OF ZERO FROM FREE 43640002 SPACE 2 43650002 */*ABENDTST: P RESTORE CVT POINTER DESTROYED BY FREEMAIN */ 43650402 */* D (NO,,YES,%CONT8) ABEND INDICATOR ON? */ 43652002 */* R RETURN VIA REG 13 */ 43654002 SPACE 2 43660002 ABENDTST DS 0H TEST FOR 906 ABEND 43690002 L CVTREG,CVTPTR RESTORE ADDR. OF CVT 43740002 TM RBCSFLG1,RBCSABEN Q. ABEND 906 43790002 BCR EQZER,RETURND NO, RETURN 43840002 SPACE 2 43850002 */*%CONT8: P ZERO ABEND REGISTER (REG 13) */ 43852002 */* S () ERRCOUNT:ISSUE 906 ABEND */ 43854002 SPACE 2 43860002 SR R13,R13 ZERO REG FOR ABEND ROUTINE 43890002 B ERRCOUNT TO ABEND 906. 43940002 EJECT 43990002 * CDLLSRCH IS A SUBROUTINE OF LOAD AND DELETE WHICH, GIVEN 44040002 * A NAME AS INPUT, SEARCHES THE LLE QUEUE CHAINED FROM THE 44090002 * TCB FOR A CDE WITH THE SAME NAME. IF AN LLE IS FOUND, 44140002 * RETURN IS ON R15 + 0. IF AN LLE IS NOT FOUND, RETURN IS 44190002 * ON R15 + 4. 44240002 * 44290002 * REGISTER USABE 44340002 * R1 - ADDRESS OF PREVIOUS LLE IF LLE WAS FOUND (OUTPUT) 44390002 * THIS LLE POINTS TO THE LLE IN R13 44440002 * R2 - CHANGED 44490002 * R4 - TCB (INPUT) 44540002 * R9 - ADDRESS OF NAME (INPUT) 44590002 * R11 - ADDRESS OF CDE IF COUND (OUTPUT) 44640002 * R12 - ADDRESS OF CDE IF FOUND (OUTPUT) 44690002 * R13 - ADDRESS OF LLE IF FOUND (OUTPUT) 44740002 * R15 - RETURN ADDRESS (INPUT) 44790002 * OTHER REGISTERS NOT REFERENCED. 44840002 SPACE 2 44850002 */*CDLLSRCH: E CDLLSRCH */ 44852002 */* P GET ADDRESS OF LLE QUEUE HEADER IN CALLER'S TCB */ 44854002 SPACE 2 44860002 CDLLSRCH LA WKREG1,TCBLLS PICK UP LOAD LIST START ADDR. 44890002 SPACE 2 44900002 */*CDLLCONT: P NOTE: THIS IS AN ALTERNATE ENTRY TO CONTINUE THE LLE 44902002 */*SEARCH */ 44902102 */* P SET UP LOOP POINTER TO SPEED SEARCH */ 44904002 SPACE 2 44910002 CDLLCONT BALR WKREG2,ZERO ESTABLISH LOOP START ADDR 44940002 SPACE 2 44950002 */*%LDLREG: P (=0,,GT 0,%CONT9) GET NEXT LLE ADDRESS */ 44952002 */* R RETURN REG 15+4 */ 44954002 SPACE 2 44960002 ICM LDLREG,MASK4,N0(WKREG1) PICK UP LLE ADDRESS 44990002 * Q. IS LLE ADDR = 0 45040002 BZ N4(SUBREG2) A= YES, RETURN REG 15 + 4 45090002 SPACE 2 45100002 */*%CONT9: P GET ADDRESS OF CDE FROM LLE */ 45102002 */* D (NO,%CONTA,YES,) NAME IN CDE = REQUESTED NAME? */ 45104002 */* R RETURN REG 15+0 */ 45106002 SPACE 2 45110002 L CDIREG,LLECDPT PICK UP ADDR OF CDE FROM LLE 45140002 CLC CDNAMEJ(NAME),N0(NAMEREG) Q. ARE NAMES EQUAL 45190002 LR CDEREG,CDIREG INITIALIZE MINOR REG 45240002 BCR EQZER,SUBREG2 A= YES RETURN 45290002 SPACE 2 45300002 */*%CONTA: P (,%LDLREG) SET THIS LLE AS PREVIOUS LLE */ 45302002 SPACE 2 45310002 LR WKREG1,LDLREG PICK UP NEXT ADDR OF LLE AND 45340002 BR WKREG2 BRANCH TO LOOP START 45390002 DROP LDLREG LAST USE OF LLE 45440002 EJECT 45490002 * IEAVVMSR (SRCHDIRC) IS THE FIXED LINK PACK DIRECTORY SEARCH 45540002 * ROUTINE. IT IS USED TO MINIMIZE THE SIZE OF THE ACTIVE LPAQ 45590002 * WHILE PROVIDING RAPID ACCESS TO ALL LPA (PAGEABLE) MODULES. 45640002 * A MODULES LPDE IS LOACATED BY EXCLUSIVE ORING THE FIRST FOUR 45690002 * BYTES OF THE NAME WITH THE LAST FOUR BYTES. THE RESULT IS 45740002 * DIVIDED BY THE DIRECTORY SIZE, AND THE REMAINDER IS USED AS 45790002 * AN INDEX. THIS INDEX IS MULTIPLIED BY THE LPDE SIZE (40), AND 45840002 * ADDED TO THE DIRECTORY ORIGIN. THIS LOCATES AN LPDE QUEUE 45890002 * WHICH WILL CONTAIN THE MODULE NAME (IF IT EXISTS). THE LPDE 45940002 * QUEUE THUS FOUND IS THEM SEARCHED IN A SIMILAR MAMMER TO THE 45990002 * CDE QUEUE SEARCH (CDSEARCH). A RETURN ON R14 + 0 MEANS THAT 46040002 * THE LPDE WAS FOUND. OTHERWISE RETURN IS TO R14 + 4. A USER 46090002 * OF IEAVVMSR MUST INSURE THAT THE CVTDIRST BIT IS ON (=1) 46140002 * BEFORE ENTERING IEAVVMSR, SINCE THIS BIT TELLS IF NIP HAS 46190002 * BUILT THE LPDE DIRECTORY YET. 46240002 * REGISTER USABE 46290002 * R0 - LEFT HALF OF NAME (INPUT) 46340002 * LPDE ADDRESS, IF FOUND (OUTPUT), ELSE, UNCHANGED 46390002 * R1 - RIGHT HALF OF NAME (INPUT) 46440002 * R3 - ADDRESS OF CVT (INPUT) 46490002 * R6 - SET TO BASE (OUTPUT) INPUT IF SRCHDIRC ENTRY 46540002 * R8,9- ALTERED 46590002 * R14 - RETURN ADDRESS (INPUT) 46640002 * OTHER REGISTERS NOT USED 46690002 SPACE 2 46700002 */*IEAVVMSR: E IEAVVMSR */ 46702002 */* P ESTABLISH BASE ADDRESS (CDLKBASE) */ 46704002 SPACE 2 46710002 IEAVVMSR DS 0H LPA DIRECTORY SEARCH 46740002 USING CVT,CVTREG ADDRESSABILITY TO CVT 46790002 BALR BASEREG,ZERO SET UP ADDRESSABILITY 46840002 USING *,BASEREG INITIALIZATION FOR EXTERNAL CALL 46890002 L BASEREG,LINKBASE PICK UP BASE VALUE 46940002 USING CDLKBASE,BASEREG ESTABLISH ADDRESSABILITY 46990002 SPACE 2 47000002 */*SRCHDIRC: P NOTE: THIS IS AN ALTERNATE ENTRY TO CONTINUE THE SEARCH 47002002 */**/ 47002402 */* P EXCLUSIVE OR FIRST AND SECOND HALF ON NAME */ 47004002 */* P DIVIDE RESULT BY VALUE IN CVTVMDI */ 47006002 */* P MULTIPLY REMAINDER BY LPDE SIZE */ 47008002 */* P ADD PRODUCT TO LPA DIRECTORY BASE ADDRESS */ 47008402 SPACE 2 47010002 SRCHDIRC DS 0H ENTRY FOR IEAVLK USERS 47040002 USING LPDE,LPDEREG ADDRESSABILITY FOR LPDES 47090002 SR LPDEREG,LPDEREG CLEAR REG FOR DIVISION 47140002 LR HASHREG,NAMELEFT LEFT HALF OF NAME IN WORK REG. 47190002 XR HASHREG,NAMERGT HASH WITH RIGHT HALF 47240002 D LPDEREG,CVTVVMDI DIVIDE BY DIRECTORY SIZE 47290002 LA HASHREG,LPDESIZE GET MULTIPLIER 47390002 MR LPDEREG,LPDEREG MULT. BY SIZE OF LPDE 47440002 LR LPDEREG,HASHREG MOVE RESULT TO USABLE REG. 47490002 A LPDEREG,CVTDIRST ADD START OF DIRECTORY ADDR 47540002 SPACE 2 47550002 */*CHEKNEXT: P COMPARE LPDENAME WITH FIRST HALF OF NAME */ 47552002 */* D (NO,NEXTLPDE,YES,) EQUAL? */ 47554002 SPACE 2 47560002 CHEKNEXT C NAMELEFT,LPDENAME IF FIRST HALVES NOT EQUAL, 47590002 BNE NEXTLPDE GET NEXT LPDE ON CHAIN 47640002 SPACE 2 47650002 */* P COMPARE LPDENAME+4 WITH SECOND HALF OF NAME */ 47652002 */* D (NO,NEXTLPDE,YES,DONIT) EQUAL? */ 47654002 SPACE 2 47660002 C NAMERGT,LPDENAME+NAMERT IF BOTH EQUAT, 47690002 BE DONIT LPDE IS FOUND, BRANCH OUT 47740002 SPACE 2 47750002 */*NEXTLPDE: P GET ADDRESS OF NEXT LPDE */ 47752002 */* D (NO,CHEKNEXT,YES,) CHAIN POINTER = 0? */ 47754002 */* R RETURN REG 14+4 */ 47756002 SPACE 2 47760002 NEXTLPDE DS 0H GET NEXT LPDE TO TEST 47790002 L LPDEREG,LPDECHN GET NEXT LPDE ADDRESS 47840002 LTR LPDEREG,LPDEREG TEST FOR END OF QUEUE 47890002 BNZ CHEKNEXT IF NONZERO, CHECK NAME 47940002 B NOGOOD(RETURN) OTHERWISE, NOT FOUND RETURN 47990002 SPACE 2 48000002 */*DONIT: P LOAD LPDE ADDRESS INTO REG 0 */ 48002002 */* R RETURN VIA REG 14 */ 48004002 SPACE 2 48010002 DONIT LR LPDEADDR,LPDEREG PUT LPDE ADDRESS IN REG. 0 48040002 BR RETURN RETURN GOOD 48090002 EJECT 48140002 * ERRORTAB IS THE INTERFACE TO ABEND. IT IS ENTERED WHENEVER 48190002 * AN ABEND SITUATION HAS BEEN DETECTED BY THE PROGRAM MANAGER. 48240002 * THE VARIOUS ENTRY POINTS ARE USED TO GENERATE THE 48290002 * PARTICULAR ABEND CODES. UPON ENTRY, THE ENVIRONMENTAL 48340002 * REGISTERS 3,4, AND 5 ARE INITIALIZED, AND A TEST IS MADE FOR 48390002 * NIP IN PROCESS. IF NIP IS IN PROCESS, THE ABEND CODE IS 48440002 * GENERATED INTO R1, AND THE TCB ADDRESS IS PUT INTO REGISTER 0 48490002 * WITH AN ABEND SVC BEING ISSUED. OTHERWISE A MESSAGE IS 48540002 * WRITTEN (WTP) TO THE PROGRAMMER INDICATING THE TYPE OF ERROR 48590002 * TAT HAS OCCURED. A BUFFER IS OBTAINED CONDITIONALLY FROM 48640002 * SUBPOOL 253. IF THE GETMAIN CANNOT BE DONE, THE WTP IS 48690002 * BYPASSED. IN THIS WAY A GETMAIN ABEND IS AVOIDED. THE FORMAT 48740002 * OF THE MESSAGES IS GIVEN IN THE DSECTS AT THE END OF THIS 48790002 * ROUTINE. THE NECESSARY INFORMATION IS LOCATED IN THE CVT, 48840002 * TCB,SVRB (EXSAVE), THE TIOT, AND IN THE REGISTERS UPON ENTRY. 48890002 * THE WTO MESSAGE PROCESSING IS EBCDIC DEPENDENT 48940002 * REGISTER USAGE 48990002 * R0 - TCB ADDRESS (OUTPUT) 49040002 * R1 - ABEND CODE (OUTPUT) 49090002 * R3 - CVT ADDRESS (OUTPUT) 49140002 * R4 - TCB ADDRESS (OUTPUT) 49190002 * R5 - SVRB ADDRESS (OUTPUT) 49240002 * R6 - BASE REGISTER (INPUT) 49290002 * R8 - DE SIZE IF 206 ABEND (INPUT) 49340002 * R9 - ANDE/DE POINTER IF 206 ABEND (INPUT) 49390002 * R10 - REASON CODE SAVE REG (OUTPUT) 49440002 * R11 - TIOT ADDRESS (OUTPUT) 49490002 * R12 - PARAMETER LIST PASSED (IF 206 ABEND) 49540002 * R13 - ZERO (INPUT) ABEND CODE (OUTPUT) 49590002 * R14 - WORK REGISTER (OUTPUT) 49640002 * R15 - REASON CODE (INPUT AND OUTPUT) 49690002 * OTHER REGISTERS NOT REFERENCED 49740002 * SVRB EXSAVE FULLY INITIALIZED EXCEPT IF 206 ABEND 49790002 SPACE 2 49800002 */*ERRTAB: E ENTRY ERRTAB */ 49802002 SPACE 2 49810002 ERRORTAB DS 0H ABEND CODE TABLE 49840002 */*ERRLOCK: P CODE+1 (A06) */ 49842002 */*ERRCOUNT: P CODE+1 (906) */ 49844002 */*ERRBLDL: P CODE+2 (806) */ 49854002 */*ERRFIX: P CODE+2 (606) (OBSOLETE) */ 49864002 */*ERRONLY: P CODE+2 (406) */ 49874002 */*ERRPARM: P CODE+2 (206) */ 49884002 ERRLOCK LA R13,N1(R13) CODE = A06 49890002 ERRCOUNT LA R13,N1(R13) CODE = 906 49940002 ERRBLDL LA R13,N2(R13) CODE = 806 49990002 ERRFIX LA R13,N2(R13) CODE = 606 50040002 ERRLONLY LA R13,N2(R13) CODE = 406 50090002 ERRPARM LA R13,N2(R13) CODE = 206 50140002 SPACE 2 50150002 */*ABNDSET:S SETFRR:REMOVE RECOVERY ROUTINE */ 50152002 SPACE 2 50160002 ABNDSET DS 0H ENTRY FROM IEAVLK01 SAME INPUT 50190002 SETFRR D,WRKREGS=(R3,R4) RELEASE RECOVERY 50200002 SPACE 2 50210002 */* P SET UP ADDRESSABILITY */ 50212002 SPACE 2 50220002 L CVTREG,CVTPTR PICK UP CVT ADDRESS 50240002 USING CVT,CVTREG ADDRESSABILITY ON CVT 50290002 L TCBREG,CVTTCBP PICK UP NEW OLD SLOTS 50340002 L TCBREG,OLD(TCBREG) PICK UP TCB ADDRESS 50390002 L RBREG,TCBRBP PICK UP CONTENTS SVRB 50440002 SPACE 2 50450002 */* D (NO,CVTCHEK,YES,) SHOULD ABEND BE 306? */ 50452002 SPACE 2 50460002 LR REASON,R15 PICK UP REASON CODE FROM 50490002 * PARAMETER REG 50540002 TM RBCSFLG1,RBCSA306 Q. ABEND SHOULD BE 306 50550002 BZ CVTCHEK A. NO- CONTINUE 50560002 SPACE 2 50562002 */* P SET ABEND CODE TO 306 */ 50562402 SPACE 2 50564002 LA ABCODE,THREE A. YES- SET CODE TO 3 FOR ABEND 50570002 SPACE 2 50572002 */*CVTCHEK: D (YES,NOWTP,NO,) NIP IN PROGRESS? */ 50572402 SPACE 2 50574002 CVTCHEK DS 0H LABEL TO BRANCH 50580002 TM CVTOPTA,CVTNIP IF NIP IN PROCESS SKIP WTP 50590002 BO NOWTP ABEND DIRECTLY 50640002 SPACE 2 50642002 */* P SAVE PARM LIST POINTER(R12) IN R1 FOR 206 ABEND */ @ZA02730 50642203 */* L SETLOCK-- FREE ALL LOCKS */ 50642402 */* P RESTORE THE PARM LIST POINTER(R12) FROM R1 */ @ZA02730 50643203 SPACE 2 50644002 LR R1,R12 SAVE PARM LIST POINTER @ZA02730 50647003 LR CVTREG,R13 SAVE REG 13 OVER SETLOCK 50650002 SETLOCK RELEASE,TYPE=CMS,RELATED=FREE ALL LOCKS 50690002 SETLOCK RELEASE,TYPE=LOCAL,RELATED=HELD (ONLY LOACAL AND CMS) 50740002 LR R12,R1 RESTORE PARM LIST PTR @ZA02730 50745003 LR R13,CVTREG RESET ABEND CODE TO VOLITAL REG 50750002 L CVTREG,CVTPTR RESTORE CVT TO USING REG 50760002 SPACE 2 50770002 */* L GETMAIN-- GET WTP BUFFER */ 50772002 SPACE 2 50780002 GETMAIN EC,LV=MESSZE,A=RBCSGR15,SP=253,MF=(E,RBCSGR0) 50790002 * ELEMENT FORM,CONDITIONAL 50840002 * GETMAIN FOR MESSAGE BUFFER IN 50890002 * SP 253, LIST TO BE BUILT IN 50940002 * GR15-1 SAVE AREA IN SVRB EXSA 50990002 LTR R15,R15 IF GETMAIN FAILED 51040002 BNZ NOWTP DONT DO WTP. PREVENTS ABENDING 51090002 * POOR FELLOW FOR NO SPACE WHILE 51140002 * WE ARE ABENDING HIM FOR MESSING 51190002 * UP PROGRAM MANAGER 51240002 SPACE 2 51250002 */* P PRIME WTP BUFFER */ 51252002 SPACE 2 51260002 L R1,RBCSGR15 PICK UP BUFFER ADDRESS 51290002 USING MGEN,R1 GENERAL MESSAGE DSECT 51340002 MVC MGEN(MESSZE),MESSAGE INITIALIZE BUFFER WITH SKELETON 51390002 * MESSAGE 51440002 L TIOTPTR,TCBTIO GET TIOT ADDRESS FROM TCB 51490002 USING TIOT1,TIOTPTR ADDRESSABILITY ON TIOT 51540002 MVC MGENJOBN(NAME),TIOCNJOB MOVE JOB NAME TO MESSAGE 51590002 MVC MGENSTEP(NAME),TIOCSTEP MOVE STEP NAME TO MESSAGE 51640002 DROP TIOTPTR DROP ADDRESSABILITY FOR TIOT 51690002 SPACE 2 51700002 */* D (YES,CODE206,NO,) 206 ABEND? */ 51702002 SPACE 2 51710002 CLM ABCODE,MASK1,BYTETWO IF 206 ABEND 51740002 BE CODE206 DO SPECIAL MESSAGE PROCESS 51790002 SPACE 2 51800002 */* P PUT MODULE NAME IN MESSAGE */ 51802002 SPACE 2 51810002 MVC MGENNAME(NAME),RBCSNAME MOVE MODULE NAME TO MESSAGE 51840002 SPACE 2 51850002 */* D (YES,RESUME,NO,) 106 ABEND? */ 51852002 SPACE 2 51860002 CLM ABCODE,MASK1,BYTEONE IF 106 ABEND 51890002 BE RESUME AVOID ZERO REASON CODE 51940002 SPACE 2 51950002 */* D (YES,RESUME,NO,) 806 ABEND? */ 51952002 SPACE 2 51960002 CLM ABCODE,MASK1,BYTEEIGH IF 806 ABEND 51990002 BE RESUME AVOID ZERO REASON CODE 52040002 SPACE 2 52050002 */* D (YES,RESUME,NO,) 306 ABEND? */ 52052002 SPACE 2 52060002 CLM ABCODE,MASK1,BYTETHRE IF 306 ABEND 52090002 BE RESUME AVOID ZERO REASON CODE 52100002 SPACE 2 52102002 */* P FOR ALL OTHER ABEND TYPES, ZERO OUT REASON CODE */ 52102402 SPACE 2 52104002 SR REASON,REASON ZERO OUT REASON CODE 52110002 SPACE 2 52120002 */*RESUME: P CONVERT ABEND REASON CODE TO EBCDIC */ 52122002 SPACE 2 52130002 RESUME DS 0H FORMAT CODES 52140002 * 52190002 * THE FOLLOWING INSTRUCTION IS EBCDIC CHARACTER CODE DEPENDENT 52240002 * 52290002 IC R14,TRANTAB(ABCODE) PICK UP EBCDIC CODE 52340002 STC R14,MGENABID MOVE TO BYTE IN MESSAGE 52390002 * TO CREATE ABEND CODE 52440002 * 52490002 * THE FOLLOWING INSTRUCTION IS EBCDIC CHARACTER CODE DEPENDENT 52540002 * 52590002 LTR REASON,REASON IS REASON CODE ZERO @ZA18512 52594040 BNZ REASCODE NO PROCESS GOOD REASON @ZA18512 52598040 MVI MGENDASH,BLANK YES BLANK OUT THE DASH @ZA18512 52602040 B WTPITNOW GO WRITE THE MESSAGE @ZA18512 52604040 REASCODE STC REASON,MGENREAS+1 STORE REASON CODE @ZA18512 52610040 UNPK MGENREAS(THREE),MGENREAS+1(TWO) UNPACK CODE @ZA18512 52614040 TR MGENREAS(TWO),TRANTAB-X'F0' MAKE IT PRINTABLE @ZA18512 52618040 CLI MGENREAS,X'F0' LEADING ZERO IN CODE @ZA18512 52622040 BNE REASBLNK NO THEN LEAVE IT ALONE @ZA18512 52626040 MVI MGENREAS,BLANK MAKE IT BLANK IN MSG @ZA18512 52630040 REASBLNK MVI MGENREAS+2,BLANK FIX BLANK IN FIELD @ZA18512 52634040 SPACE 2 53000002 */*WTPITNOW: L WTO-- WTP OPTION */ 53002002 SPACE 2 53010002 WTPITNOW DS 0H READY TO WTO 53040002 WTO MF=(E,(1)) WRITE MESSAGE TO PROGRAMMER 53090002 FREEMAIN RU,LV=MESSZE,A=RBCSGR15,SP=253 FREE MSG BUFF @ZA20311 53090540 SPACE 2 53100002 */*NOWTP: P SET UP REGISTERS FOR ABEND */ 53102002 SPACE 2 53110002 NOWTP DS 0H 53140002 LR R15,REASON RESTORE REASON CODE 53190002 SLL ABCODE,N8 PUT ABEND CODE IN RIGHT BITS 53240002 O ABCODE,ANOMALY PUT IN 06 53290002 SPACE 2 53292002 */* D (YES,BRANCHOU,NO,) RETURN REQUESTED? */ 53292402 SPACE 2 53294002 TM RBCSFLG1,RBCSERIN Q. ERROR RETURN REQ. 53300002 BO BRANCHOU A. YES - BRANCH TO EXIT 53310002 SPACE 2 53320002 */*ABEND: L () ABEND-- TERMINATE TASK */ 53322002 SPACE 2 53330002 ABEND ABEND (ABCODE),DUMP,,SYSTEM ISSUE ABEND SVC 53340002 SPACE 2 53390002 */*CODE206: P (,RESUME) SET UP SPECIAL MESSAGE FOR 206 ABEND */ 53400002 SPACE 2 53440002 CODE206 DS 0H 206 ABEND SPECIAL MESSAGE 53490002 MVC M206ZIPS(THREE),ZIPBLK PUT IN 00 AND A BLANK 53540002 MVC M206PARM(TOEND),M206BLK0 BLANK OUT REST OF MESSAGE 53590002 MVC M206MID(N3),MSG807I SET MESSAGE TO 206 ID 53640002 ST R12PARM,RBCSGR15 STORE PARM LIST POINTER 53690002 UNPK M206PARM(UNPKSIZE),RBCSGR15(FIVE) FORMAT INTO MSG 53740002 * 53790002 * THE FOLLOWING INSTRUCTION IS EBCDIC CHARACTER CODE DEPENDENT 53840002 * 53890002 TR M206PARM(EIGHT),TRANTAB-X'F0' TRANSLATE TO EBCDIC 53940002 MVI M206BLK1,BLANK RESET BLANK 53990002 CLM REASON,MASK1,BYTEONE IF REASON CODE 1 54040002 BE RESUME END OF 206 PROCESS HERE 54090002 ST R9,RBCSGR15 STORE EP/DE ADDRESS @ZA02730 54094003 UNPK M206NMDE(UNPKSIZE),RBCSGR15(FIVE) @ZA02730 54098003 * FORMAT INTO MESSAGE @ZA02730 54102003 * @ZA02730 54106003 * THE FOLLOWING INSTRUCTION IS EBCDIC CHARACTER CODE DEPENDENT @ZA02730 54110003 * @ZA02730 54114003 TR M206NMDE(EIGHT),TRANTAB-X'F0' @ZA02730 54118003 * TRANSLATE TO EBCDIC @ZA02730 54122003 MVI M206BLK2,BLANK RESET BLANK @ZA02730 54126003 CLM REASON,MASK1,BYTETWO IF REASON CODE 2,THEN @ZA02730 54130003 BE RESUME END OF 206 PROCESS HERE @ZA02730 54134003 ST DESZREG,RBCSGR15 STORE DE SIZE CALCULATED 54140002 UNPK M206DES(UNPKSIZE),RBCSGR15(FIVE) FORMAT INTO MSG 54190002 * 54240002 * THE FOLLOWING INSTRUCTION IS EBCDIC CHARACTER CODE DEPENDENT 54290002 * 54340002 TR M206DES(EIGHT),TRANTAB-X'F0' TRANSLATE TO EBCDIC 54390002 MVI M206BLK3,BLANK RESET BLANK 54440002 B RESUME END OF 206 SPECIAL PROCESS 54490002 SPACE 2 54500002 */*BRANCHOU: D (YES,ABEND,NO,) XCTL REQUEST? */ 54502002 SPACE 2 54504002 BRANCHOU TM RBCDFLGS,XCTL Q. XCTL REQUEST 54510002 BO ABEND A. YES - NO ERROR RET. ALLOWED 54520002 SPACE 2 54530002 */* D (YES,ABEND,NO,) 206 ABEND? */ 54530102 SPACE 2 54530402 CL ABCODE,A206 Q. 206 ABEND 54532002 BE ABEND A. YES - NO RETURN ALLOWED 54534002 TM RBCSFLG1,RBCSABEN Q. ABEND 906 @ZA17747 54534640 BO FREEDONE @ZA17747 54535240 LR R8,ABCODE SAVE ABCODE ACROSS FREE @ZA17747 54535540 SETLOCK OBTAIN,TYPE=LOCAL,MODE=UNCOND,RELATED=NO @ZA20311 54535640 L AREAREG,PSAAOLD GET ASCB ADDR IN REG 7 @ZA20311 54536240 SR WKREG2,WKREG2 CLEAR REG2 FOR ICM @ZA20311 54536440 ICM WKREG2,MASK,RBCSWRKA IS THERE A WORK AREA @ZA20311 54536640 BZ CHECKDE NO - CHECK FOR DE SAVE @ZA20311 54536840 BAL RETURND,RINGO YES - GO FREE WORK AREA @ZA20311 54537040 B RELSLOCK GO RELEASE LOCAL LOCK @ZA20311 54537240 CHECKDE BAL RETURND,DESATEST GO HANDLE DE SAVE @ZA20311 54537440 RELSLOCK SETLOCK RELEASE,TYPE=LOCAL,RELATED=HELD @ZA20311 54537640 LR ABCODE,R8 RESTORE THE ABEND REG @ZA20311 54537840 FREEDONE DS 0H @ZA17747 54538040 SPACE 2 54538102 */* P SET ABEND CODE IN REG 1 */ 54542002 SPACE 2 54542202 L CVTREG,CVTPTR GET ADDRESS OF CVT 54542602 LR R1,ABCODE PUT ABEND CODE IN R0 54544002 LR R15,REASON RESTORE REASON CODE @ZA28684 54544940 LTR R15,R15 DOES R15 CONTAIN REASON CODE 54545802 BNE LOADTEST YES - USE ONE SET 54547602 LA R15,N4 SET A RETURN CODE NE 0 54549402 SPACE 2 54549802 */* D (NO,,YES,ERREXIT) REQUEST FOR LOAD? */ 54550202 SPACE 2 54550602 LOADTEST TM RBCDFLGS,LOAD Q. LOAD REQUEST 54551002 BO ERREXIT A. YES - EXIT 54551102 SPACE 2 54551602 */*LINKEXIT: P (,SYNCR) PUT ERROR EXIT ADDRESS IN OPSW FROM RBCSERRA */ 54551702 SPACE 2 54552002 LINKEXIT L PRBREG,RBWCF GET CALLERS RB 54553002 L R0,RBGRSAVE RESTORE CALLERS REG 0 54563002 L SUBREG2,RBCSERRA GET ERR. RET. ADDR. 54566602 LA SUBREG2,N0(SUBREG2) CLEAR HIGH BYTE M02638 54568602 ST SUBREG2,RBOPSWZ+WORD(PRBREG) PUT IN CALLERS RB 54570602 LA R14,CVTEXIT GET ADDRESS OF EXIT INSTRUCTION 54571002 ST R14,RBGRS14 PLACE IN SVRB R14 SLOT 54571402 SPACE 2 54572602 */*ERREXIT: R EXIT PROLOG */ 54575002 SPACE 2 54578402 ERREXIT DS 0H 54579202 L R14,CVTEXPRO GET ADDR OF EXIT PROLOGUE 54579602 BR R14 EXITTO CALLER 54580002 SPACE 2 54580802 */* FOOTING 54583202 */* 54585602 */* */ 54588002 */*IEAVLK00: END END ONE OF TWO MODULES */ 54590402 SPACE 2 54592802 DROP R1 END OF WTP USAGE 54595202 EJECT 54597602 * 54600002 * ADDRESSING CONSTANTS 54640002 * 54690002 IEAQCS04 DS 0F ADDRESS LIST FOR VLK01 54740002 * THE FOLLOWING 6 CONSTANTS MUST 54790002 * NOT BE MOVED OR CODE INSERTED 54840002 LINKBASE DC A(CDLKBASE) USED TO SET CORRECT BASE 54890002 * FOR ADDRESSIBILITY 54940002 DC A(CDCONTRL) POINT TO CDCONTRL 54990002 DC A(CDEMERGE) POINT TO CDEMERGE 55040002 DC A(CDQUECTL) POINT TO CDQUECTL 55090002 DC A(PLUSCONT) POINT TO PLUSCONT 55140002 DC A(ABNDSET) POINT TO ABENDSET 55190002 VLK01VCN DC A(IEAVLK01) POINT TO SECOND LOAD 55240002 IEAQLCTA DC A(IEAQLPAQ) ADDRESS OF LINK PACK AREA 55290002 * CONTROL QUEUE . ALSO IN CVT 55340002 HKPADDR DC A(CDHKEEP) ADDRESS OF TASK MST.HKEEP RTN. 55390002 FRRPGM DC A(FRRPGMMG) ADDRESS OF FRR FOR PGM. MGR. 55400002 * 55440002 * GENERAL MASKS 55490002 * 55540002 A206 DC X'00000206' INDICATED 206 ABEND 55550002 MAXIM DC X'7FFF' MAXIMUM USE COUNTS 55590002 ZEROUSE DC X'0000' ZERO USE COUNT FIELD TEST 55600002 ANOMALY DS 0F ABEND FORMATTING CONSTANT 55640002 DC X'00000006' MASK WITH SVC NO. AND DUMP FLAG 55690002 APFROUND DC X'FFFFFFFE' ROUND TO HALFWORD AND MASK 55740002 HIBYTE DC X'FF' ABEND FLAG FOR CDMOPUP 55790002 CLRBYTE DC X'000000' 3 BYTES OF HIBYTE ALSO USED 55840002 * TO SET HIGH ORDER BYTE OF REG 0 55890002 BYTEONE DC X'01' ONE BYTE FOR COMPARE 55940002 BYTETWO DC X'02' ONE BYTE FOR COMPARE 55990002 BYTETHRE DC X'03' ONE BYTE FOR COMPARE 56000002 BYTEEIGH DC X'08' ONE BYTE FOR COMPARE 56040002 AUTHON DC X'01' AUTHORIZATION FLAG 56090002 LLEONE DC X'0001' ONE IN LLE 56140002 * 56190002 * THE FOLLOWING CONSTANT IS EBCDIC CHARACTER CODE DEPENDENT 56240002 * 56290002 ZIPBLK DC C'00 ' ZERO AND BLANK OVERLAY @ZA02730 56300003 * FOR 206 ABEND MESSAGE @ZA02730 56310003 * 56440002 * THE FOLLOWING CONSTANT IS EBCDIC CHARACTER CODE DEPENDENT 56490002 * 56540002 MSG807I DC C'807' MESSAGE ID FOR 206 ABENDS 56590002 * IT OVERLAYS THE 703 IN THE WTO 56640002 FRAMPSW DC X'000D000000' PROBLEM STATE, ENABLED 56690002 MESSAGE WTO 'IEA703I 06- MODULE ACCESSED X56700040 ',MF=L,ROUTCDE=11,DESC=6 @ZA18512 56710040 ENDOMES EQU * ABEND MESSAGE END 56840002 MESSZE EQU ENDOMES-MESSAGE SIZE OF MESSAGE TO MOVE 56890002 * 56940002 * THE FOLLWOING TABLE IS EBCDIC CHARACTER CODE DEPENDENT 56990002 * 57040002 TRANTAB DC C'0123456789ABCDEF' TRANSLATE TABLE TO EBCDIC 57090002 EJECT 57240002 ALLOC DSECT 57290002 * THE CDALLOC SUBROUTINE USES A BRANCH TABLE TO 57340002 * DISTINGUISH THE RESULTS OF ITS ACTION. A BRANCH 57390002 * TABLE OF THE FOLLOWING NATURE IS EXPECTED 57440002 RETURN1 B 0 AN AVAILABLE COPY CANNOT BE FOUND IN QUEUE SEARCHES 57490002 * PROCEED WITH OPERATION TO FETCH A COPY. 57540002 RETURN2 B 0 AN AVAILABLE COPY HAS BEEN FOUND -PROCEED TO 57590002 * COMPLETE REQUEST. 57640002 RETURN3 B 0 A COPY OF A PROGRAM THAT IS NOT REUSABLE HAS BEEN 57690002 * FOUND, IT MAY NOT BE USED AGAIN. 57740002 RETURN4 B 0 THE REQUEST MUST BE QUEUED. THE LOAD MODULE IS 57790002 * SERIALLY REUSABLE AND IS CURRENTLY BEING USED. 57840002 RETURN5 B 0 A REQUEST MSUT BE QUEUED PENDING THE AVAILIBILITY 57890002 * OF THE LOAD MODULE. THE MODULE IS BEING LOADED. 57940002 EJECT 57990002 IHAMB MESSAGE BUFFER DSECT 58040002 EJECT 58090002 MGEN DSECT OTHER THAN 206 ABEND MESSAGE 58140002 DS CL4 ALWAYS WTO INTERNAL CODES 58190002 DS CL7 ALWAYS IEA703I 58240002 DS C ALWAYS BLANK 58290002 MGENABID DS C VARIABLE ABEND NUMBER 58340002 DS CL2 ALWAYS 06 58390002 MGENDASH DS C DASK OR BLANK 58440002 MGENREAS DS CL2 REASON CODE OR BLANK @ZA18512 58490040 DS C ALWAYS BLANK 58540002 MGENJOBN DS CL8 JOB NAME 58590002 DS C ALWAYS BLANK 58640002 MGENSTEP DS CL8 STEP NAME 58690002 DS C ALWAYS BLANK 58740002 DS CL15 ALWAYS MODULE ACCESSED 58790002 DS C ALWAYS BLANK 58840002 MGENNAME DS CL8 MODULE NAME 58890002 DS CL6 BLANK PADDING TO MANK BOTH 58940002 * MESSAGES THE SAME SIZE 58990002 SPACE 3 59040002 ORG MGEN 206 SPECIAL MESSAGE 59090002 M206 EQU * 59140002 DS CL4 ALWAYS WTO INTERNAL CODES 59190002 DS CL3 ALWAYS IEA 59240002 M206MID DS CL3 708 ID FOR 206 MESSAGE 59290002 DS C ALWAYS I 59340002 DS C ALWAYS BLANK 59390002 M206ABID DS C VARIABLE ABEND NUMBER (2) 59440002 DS CL2 ALWAYS 06 59490002 M206DASH DS C DASH OR BLANK 59540002 M206REAS DS CL2 REASON CODE OR BLANK @ZA18512 59590040 DS C ALWAYS BLANK 59640002 M206JOBN DS CL8 JOB NAME 59690002 DS C ALWAYS BLANK 59740002 M206STEP DS CL8 STEP NAME 59790002 DS C ALWAYS BLANK 59840002 M206ZIPS DS CL2 ALWAYS 00 59890002 M206BLK0 DS C ALWAYS BLANK 59940002 M206PARM DS CL8 PARAMETER LIST POINTER 59990002 M206BLK1 DS C ALWAYS BLANK 60040002 M206NMDE DS CL8 NAME OR DE POINTER 60090002 M206BLK2 DS C ALWAYS BLANK 60140002 M206DES DS CL8 EXPECTED DE SIZE 60190002 M206BLK3 DS C ALWAYS BLANK 60240002 M206END EQU * END OF MESSAGE FOR BLNAKING SIZE 60290002 TOEND EQU M206END-M206PARM LENGTH OF MESSAGE TO BLANK IF 60340002 * 206 ABEND 60390002 EJECT 60440002 IHAASCB 60490002 EJECT 60500002 IHAASXB 60510002 EJECT 60540002 IHACDE 60550002 CDEEND EQU * 60552002 CDESIZE EQU CDEEND-CDENTRY SIZE OF CDE 60554002 CDRBPZ EQU CDRRBP-CDENTRY OFFSET TO RB POINTER 60556002 EJECT 60558002 CDENTRYJ DSECT 60558402 DS (CDESIZE)C CDE EQUATES 60558802 CDATTRJ EQU CDENTRYJ+CDATTR-CDENTRY MAJOR CDE DSECT 60559202 CDCHAINJ EQU CDENTRYJ+CDCHAIN-CDENTRY TO INCREASE 60559602 CDRBPJ EQU CDENTRYJ+CDRRBP-CDENTRY READABILITY 60559702 CDNAMEJ EQU CDENTRYJ+CDNAME-CDENTRY OF THE CODE 60559802 CDUSEJ EQU CDENTRYJ+CDUSE-CDENTRY WHILE 60559902 CDENTPTJ EQU CDENTRYJ+CDENTPT-CDENTRY MAINTAINING 60569902 CDATTR2J EQU CDENTRYJ+CDATTR2-CDENTRY DEPENDANCY 60579902 CDXLMJPJ EQU CDENTRYJ+CDXLMJP-CDENTRY ON THE MACRO 60583202 EJECT 60586702 DESAVE DSECT MAPPING OF DE SAVE AREA 60587102 DESAVESZ DS F SAVE AREA FOR DE SIZE 60587502 DESAVEDE DS 15F 60 BYTE DE SAVE AREA 60587902 DESAVEND EQU * END OF DE SAVE AREA 60588302 DESIZE EQU DESAVEND-DESAVE SIZE OF SAVE AREA 60588402 EJECT 60588502 *********************************************************************** 60588602 * * 60588702 * COMMUNICATIONS VECTOR TABLE * 60588802 * * 60588902 *********************************************************************** 60589002 CVT DSECT=YES,PREFIX=NO 60589302 EJECT 60589702 IHAFETWK 60609402 EJECT 60619402 IHAFRRS 60629502 EJECT 60645002 IHAPSA 60650002 EJECT 60655002 IEZJSCB 60660002 EJECT 60665002 IHALLE 60670002 LLEND EQU * 60675002 LLESIZE EQU LLEND-LLE SIZE OF LLE 60680002 EJECT 60685002 IHALPDE 60690002 LPDEEND EQU * END OF LPDE 60700002 LPDESIZE EQU LPDEEND-LPDE LENGTH OF LPDE 60710002 EJECT 60740002 IHAPDS 60750002 SIZEDECM EQU PDSBCLN-1 EXECUTED PDS BASIC SIZE 60752002 DECOMSZ EQU SIZEDECM-NAMELTH BASIC SIZE MINUS NAME LENGTH 60754002 EJECT 60760002 IHARB 60790002 *********************************************************************** 60840002 * * 60890002 * REQUEST BLOCK ADDITIONAL LABELS INTERNAL * 60940002 * * 61040002 *********************************************************************** 61090002 ORG RBEXSAVE MAPPED INTO RBEXSAVE AREA 61140002 RBCSEXSA EQU * PROGRAM MANAGER USAGE OF 61190002 * RB EXTENDED SAVE AREA FOR 61240002 * REENTRANT DATA AREA 61290002 RBCSNAME DS CL8 ENTRY POINT NAME CALLER PASSED 61340002 RBCSDE DS 0A ADDRESS OF DE SAVE AREA 61390002 DS C RESERVED BYTE ALWAYS ZERO 61440002 RBCSDEA DS AL3 3 BYTE ADDRESS 61490002 RBCSERRA DS F ADDRESS OF ERROR ROUTINE 61540002 RBCSFLG1 DS B BLAG BYTE 61590002 RBCSGSF EQU X'80' GOOD SEARCH INDICATOR 61640002 * ON MEANS IEAVVMSR OR CDSEARCH 61690002 * WAS SUCCESSFUL 61740002 * USED ONLY IN IEAVLK01 FOR 61790002 * ADDRESSABILITY PROBLEMS 61840002 RBCSSYSR EQU X'40' SYSTEM REQUEST FLAG 61890002 RBCSPARM EQU X'20' PARAMETER CHECK FLAG 61940002 RBCSERIN EQU X'10' ERROR RETURN REQUESTED 61990002 RBCSABEN EQU X'08' ISSUE 906 ABEND 62040002 RBCSA306 EQU X'04' ISSUE 306 ABEND 62090002 RBCRSAPF EQU X'01' ATTACH WITH RESET APF @WAB 62110040 RBCSFLG2 DS B FLAG BYTE RESERVED 62140002 RBCSFLG3 DS B FLAG BYTE RESERVED 62190002 RBCSFLG4 DS B FLAG BYTE RESERVED 62240002 RBCSWORK DS 0A ADDRESS OF BLDL FETCH W.A. 62290002 DS C RESERVED BYTE ALWAYS ZERO 62340002 RBCSWRKA DS AL3 3 BYTE ADDRESS 62390002 RBCSLLE DS 0A ADDRESS OF LLE DURING LOAD 62440002 DS C RESERVED BYTE ALWAYS ZERO 62490002 RBCSLLEA DS AL3 3 BYTE ADDRESS 62540002 RBCSFRRA DS F SAVE AREA FOR PARM LIST USED 62550002 * BE PGM MGR RECOVERY RTN. 62560002 RBCSGR15 DS F SAVE AREA FOR REG 15 TO 1 62590002 RBCSGR0 DS F AND USED AS PARAMETER 62640002 RBCSGR1 DS F LIST FOR SVC'S 62690002 RBCSRESV DS 1F 1 WORD OF 12 WORK SAVE AREA 62740002 * RESERVED FOR FUTURE EXPANSION 62750002 RBCSEND EQU * END OF CS SECTION 62790002 CLRSIZE EQU RBCSEND-RBCSWORK SIZE OF AREA TO ZERO 62840002 PRBX EQU RBFTPRB DENOTES A PRB 62890002 SVRB EQU RBFTSVRB FIRST TWO BITS IN RBSTAB 62940002 * INDICATE SVRB 62990002 PRBSIZ EQU PRBEND-RBSECT SIZE OF A PRB 63040002 PRBSIZE EQU PRBLEN TOTAL SIZE (PRB + PREFIX) 63090002 * FLAG SETTINGS FOR RBCDFLGS 63140002 LOAD EQU RBCDLOAD ENTRY BY SVC LOAD 63190002 XCTL EQU RBCDXCTL ENTRY BY SVC XCTL 63240002 SYNC EQU RBCDSYNC ENTRY BY SVC SYNC 63290002 RBCSATT EQU RBCDATCH ENTRY BY ATTACH 63340002 PRBPREF EQU RBPRFXND-RBPRFXST LENGTH OF RB PREFIX 63390002 RBXXDSP EQU RBOPSW+4 USED FOR DISP PRIO IN CTL 63440002 RBOPSWA EQU RBOPSW+4 ADDRESS FIELD OF PSW 63590002 PRBWDLEN EQU (PRBLEN+7)/8 LENGTH OF PRB IN DOUBLE WORDS 63610002 SPACE 3 63640002 * THE FOLLOWING CODE WAS ADDED FOR AOS2 TO MAKE ALL CODE 63690002 * DEPENDANT OF THE RB DSECT SUPPLIED BY THE OFFICIAL MACRO 63740002 * THE ORIGINAL EQUATES FOR THE NAMES WERE DELETED 63790002 * AND THE PRB DSECT CHANGED 63840002 SPACE 3 63890002 RBSECTZ EQU RBSECT-RBSECT SET BASE OFFSET 63900002 RBSIZ1 EQU RBSIZE-RBSECT SIZE OF PRB FOR XCTL 63910002 RBSTABZ EQU RBSTAB-RBSECT EXTRA LABEL 63940002 RBSTAB1Z EQU RBSTAB1-RBSECT EXTRA LABEL 63950002 RBCDEZ EQU RBCDFLGS-RBSECT EXTRA LABEL 63990002 RBOPSWZ EQU RBOPSW-RBSECT EXTRA LABEL 64040002 RBPGMQZ EQU RBPGMQ-RBSECT EXTRA LABEL 64140002 RBLINKZ EQU RBWCF-RBSECT EXTRA LABEL 64190002 RBWCFZ EQU RBWCF-RBSECT EXTRA LABEL 64240002 RBCDE1Z EQU RBCDFLGS-RBSECT+1 CDE ADDRESS IN RB 64290002 RBXXDSPZ EQU RBOPSWZ+4 USED FOR DISP PRIO 64340002 RBLINKAZ EQU RBWCF-RBSECT+1 EXTRA LABEL 64390002 RBOPSW5Z EQU RBOPSWZ+5 SAVE AREA FOR TCB ADDRESS 64440002 RBSTAB2Z EQU RBSTAB2-RBSECT EXTRA LABEL 64490002 RBPGMQ1Z EQU RBPGMQ1-RBSECT EXTRA LABEL 64540002 SPACE 3 64590002 PRB DSECT 64640002 PRBSTART DS (PRBSIZ)C USED TO DESCRIBE A PRB 64690002 PRBSTAB EQU PRB+RBSTAB-RBSECT EXTRA LABEL 64740002 PRBSTAB2 EQU PRB+RBSTAB2-RBSECT PRB EQUATE FOR RBSTAB2 64790002 PRBFLGS EQU PRB+RBCDFLGS-RBSECT EXTRA LABEL 64840002 PRBCDE EQU PRBFLGS+1 EXTRA LABEL 64890002 PRBOPSW EQU PRB+RBOPSW-RBSECT EXTRA LABEL 64940002 PRBPGMQ EQU PRB+RBPGMQ-RBSECT EXTRA LABEL 64990002 PRBWCF EQU PRB+RBWCF-RBSECT EXTRA LABEL 65040002 PRBLINK EQU PRBWCF+1 EXTRA LABEL 65090002 PRBSIZE1 EQU PRB+RBSIZE-RBSECT EQUATE FOR 2 BYTE SIZE 65140002 EJECT 65190002 *********************************************************************** 65200002 * * 65210002 * TASK CONTROL BLOCK * 65220002 * * 65230002 *********************************************************************** 65232002 IKJTCB 65234002 TCBJLBDI EQU TCBJLB-TCB DISPLACEMENT IN TCB OF DCB ADR. 65236002 TCBMOTH EQU TCBOTC-TCB DISPLACEMENT IN TCB OF MOTHER 65238002 TCBJSEZ EQU TCBJPQ-TCB DISPLACEMENT TO JPAQ 65238402 EJECT 65238802 IEFTIOT1 65240002 END 65290002