         TITLE 'IGC00030 - DADSM RENAME - ENTRY POINT'           Y02082 00020002
IGC00030 CSECT                                                          00043000
*          RELEASE 15 DELETIONS                                       * 00046000
*1652                                                                   00047000
*          RELEASE 16 DELETIONS                                       * 00049000
*          RELEASE 17 DELETIONS                                       * 00052000
*3242000430,000730,020400,020600                                   MC0M 00053000
*3242029720                                                       17762 00054000
*          RELEASE 18 DELETIONS                                       * 00055000
*3522029700-029720,030800-030900                                  25343 00055518
*3522030900                                                       22000 00056018
*          RELEASE 19 DELETIONS                                       * 00058000
*          RELEASE 20 DELETIONS                                       * 00061000
*2162                                                            M0013  00062020
*2162056800                                                      20201  00063020
*          RELEASE 21 DELETIONS                                       * 00064000
*1231000400,004200-004400,024400-025000,047800-049800,052800,    A38860 00065021
*1231056200-056400,057000,065000-065300,065600,079700            A38860 00066021
*0000023000,063800                                              SA49351 00066421
*          RELEASE 21.7 DELETIONS                                       00066502
*0000004200-004400,020002-020120,020200-020400,023400-023800,   SA53147 00066602
*0000025200,034800-053800,060600-063660,065200-065400           SA53147 00066702
*0000020161-020162,026200                                       SA57261 00066802
*          RELEASE 22 DELETIONS                                       * 00067000
*          VS2 RELEASE 02 DELETIONS/CHANGES                           * 00070002
*0000000030-000150,000700,001200,004800-005000,005600-007000,    Y02080 00070102
*0000007800-008000,012800-013600,015700-015800,021200,021700-    Y02080 00070202
*0000021920,021960-023000,025600-025800,029480-029720,030840-    Y02080 00070302
*0000030910,031900,032000-032700,033100-033200,034000,034300-    Y02080 00070402
*0000034400,035100,056600-056900,058830-059100,060600,063720-    Y02080 00070502
*0000064200,065000,066000-067200,071000-079800,080400,081200     Y02080 00070602
*0000081000-081200                                               Y02078 00070702
*0000000200,001600-003200,005200-006000,007300-007600,008400,    Y02082 00070802
*0000012400-014800,015700-015800,020020-020164,026200-029480,    Y02082 00070902
*0000030200-030400,031000-031100,033600,034200,035100-060200,    Y02082 00071002
*0000061100,065500-065600,071100-080800                          Y02082 00071102
*0000018440,027910,028060,028180                                 Y02132 00071402
*0000065400                                                      Y02144 00071602
*0000027010                                                      YM1312 00071702
*0000                                                            YM1241 00071802
*0000037000,038000,043240-043250,043280,043300,054000-054100     YM1337 00071902
*0000027610-027700,029350,047400,065250-065300,066650-066700     YM1063 00072002
*0000040200                                                      YM3960 00072102
*0000030100,030400,048400,051200                                 YM7036 00072502
*0000038200,040200,065050,065150                                 YM2880 00073902
*0000065450                                                      YM2887 00074002
*0000027760                                                      YM2895 00074202
*0000024090-024120                                               YM5748 00074302
*0000                                                            YM5399 00074402
*                                                                       00092402
*                                                                       00094302
* STATUS CHANGE LEVEL 003                                               00096202
*                                                              @G60ASBJ 00096560
*        SU60 CHANGES/DELETIONS                                @G60ASBJ 00096660
*A 020106,021650,022800,023000-023100,060800,060940            @G60ASBJ 00096760
*C 001060,001450,022900                                        @G60ASBJ 00096860
*D 060900-061000                                               @G60ASBJ 00097260
*                                                              @G60ASBJ 00097460
*   IGC00030 IS THE STANDARD MODULE NAME FOR IGC0003&              MC0M 00098102
*                                                                       00100000
*MODULE NAME - IGC00030                                                 00104002
*                                                                       00106002
*DESCRIPTIVE NAME - DADSM RENAME                               @G60ASBJ 00108060
*                                                                       00110002
*COPYRIGHT - NONE                                                       00112002
*                                                                       00114002
*CHANGE ACTIVITY - SEE DELETIONS/CHANGES FOLLOWING CSECT CARD           00116002
*                                                                       00118002
*ATTRIBUTES - REENTRANT                                                 00120002
*                                                                       00140000
*FUNCTION - THIS MODULE IS THE  BEGINNING OF RENAME.   AFTER OBTAINING  00145060
*          THE RENAME WORK AREA, IT ISSUES AN ENQ ON THE TIOT.  IF      00150002
*          THIS RESOURCE IS UNAVAILABLE, THE DATA SET IS IN THE PROCESS 00155002
*          OF BEING OPENED OR CLOSED AND THEREFORE CANNOT BE RENAMED.   00160002
*          THIS MODULE THEN ATTEMPTS TO FIND A PRIMARY (DEMOUNTABLE)    00165002
*          UCB ADDRESS.  IF A UCB ADDRESS WAS SUPPLIED BY THE CALLER,   00170002
*          THE TIOT IS SEARCHED TO SEE IF THE UNIT IS ALLOCATED TO      00175002
*          THE JOB.  IF ALLOCATED, THE UNIT IS TESTED TO DETERMINE      00180002
*          IF ITS ASSOCIATED VOLUME CAN BE DEMOUNTED.  IF NO UCB        00185002
*          ADDRESS WAS SUPPLIED OR IF THE SUPPLIED ADDRESS IS EITHER    00190002
*          NOT ALLOCATED OR NOT DEMOUNTABLE, THE TIOT IS SEARCHED TO    00195002
*          SEE IF ANY VOLUME IN THE VOLUME LIST IS MOUNTED ON A UNIT    00200002
*          ALLOCATED TO THE JOB.  IF A VOLUME IS MOUNTED, ITS UCB IS    00205002
*          TESTED FOR DEMOUNTABILITY.  IF A UCB IS FOUND THAT IS BOTH   00210002
*          ALLOCATED AND DEMOUNTABLE, IT BECOMES THE PRIMARY UCB.       00215002
*          BEFORE BRANCHING TO THE NEXT LOAD OF RENAME, THIS MODULE     00220002
*          ISSUES AN ENQ ON THE DATA SET NAME.  IF THE RETURN CODE      00225002
*          INDICATES THAT THE TASK PREVIOUSLY HAD CONTROL OF THE        00230002
*          RESOURCE, THE ENQ IS REISSUED TO OBTAIN EXCLUSIVE CONTROL    00235002
*          AND A BIT IS SET TO INDICATE A DEB SEARCH MUST BE DONE       00240002
*          IN MODULE IGG03001 TO ENSURE NO ONE IS CURRENTLY OPEN TO     00245002
*          THE DATA SET.  IF THE RETURN CODE FROM EITHER ENQ INDICATES  00250002
*          THAT THE RESOURCE IS UNAVAILABLE, THE DATA SET IS OPEN AND   00255002
*          THERFORE CANNOT BE RENAMED.  IF THE DATA SET IS DETERMINED   00260002
*          TO BE A VIO DATA SET, IT IS NOT RENAMED.                     00265002
*          FOR ANY ERROR CONDITIONS IN THIS MODULE, THE TIOT IS         00270002
*          DEQ'ED (IF IT WAS ENQ'ED), THE WORK AREA IS FREED, AND       00275002
*          CONTROL IS RETURNED TO THE CALLER WITH AN APPROPRIATE        00280002
*          ERROR CODE IN REGISTER 15.  FOR SOME ERROR CONDITIONS        00285002
*          (AS NOTED UNDER 'ERROR CONDITONS'), AN ERROR CODE IS SET     00290002
*          IN THE STATUS BYTE OF EACH VOLUME LIST ENTRY.                00295002
*                                                                       00400000
*ENTRIES - THE ONLY ENTRY POINT TO THIS MODULE IS IGC00030. ENTRY IS    00420002
*          MADE FROM IGG030DU.                                 @G60ASBJ 00440060
*                                                                       00460000
*SUPERVISOR CALLS AND EXTERNAL ROUTINES USED BY THIS MODULE -           00480002
*          DEQ(48)   - DEQ'S ON SYSZTIOT                                00500002
*          ENQ(56)   - ENQ'S ON SYSZTIOT AND SYSDSN                     00520002
*          TESTAUTH  - DETERMINES IF THE CALLER IS AUTHORIZED,          00540002
*                      IN SUPERVISOR STATE, OR IN KEY ZERO              00560002
*          MODESET   - SWITCHES TO THE CALLER'S KEY                     00580002
*          SETLOCK   - OBTAINS/RELEASES THE LOCAL MEMORY LOCK           00600002
*          IEC0VL00  - CHECKS THE VALIDITY OF THE VOLUME LIST ADDRESS   00620002
*          IECRES    - OBTAINS AND FREES THE WORK AREA                  00640002
*                    - BRANCHES TO THE NEXT LOAD OF RENAME              00660002
*                                                                       00680002
*OTHER MACROS USED:                                                     00720000
*          IECDSECS - EXPANDS THE CVT, DSAB, JSCB, PSA, QDB, RB,        00730002
*                     RRPL, TIOT, TCB, AND UCB DSECTS                   00735002
*          IDDVDSCB - EXPANDS THE VDSCB                                 00740002
*          IECRENWA - EXPANDS THE RENAME WORK AREA                      00750002
*          XCTLTABL - BUILDS A LIST OF MODULE NAMES AND ADDRESSES       00760002
*                                                                       00770002
*INPUT -   AT ENTRY TO THIS MODULE, REGISTER 1 POINTS TO THE            00780002
*          PARAMETER LIST. REGISTER 0 MAY OR MAY NOT CONTAIN A UCB      00820000
*          ADDRESS. THE PARAMETER LIST CONSISTS OF FOUR WORDS:          00840002
*                    WORD 1 - RENAME = X'41002000'                      00860000
*                    WORD 2 - ADDR OF OLD DATA SET NAME                 00880000
*                    WORD 3 - ADDR OF NEW DATA SET NAME                 00900000
*                    WORD 4 - ADDR OF VOLUME LIST                       00920000
*          THE VOLUME LIST IS VARIABLE IN LENGTH. THE FIRST TWO BYTES   00940000
*          INDICATE THE NUMBER OF 12 BYTE VOLUME ID FIELDS WHICH        00960000
*          FOLLOW. A 12 BYTE VOLUME ID FIELD CONTAINS A FOUR BYTE       00980000
*          DEVICE CODE, SIX BYTE VOLUME SERIAL NUMBER, ONE BYTE SPARE,  01000000
*          AND ONE BYTE USED FOR RETURNING THE STATUS OF THE DATA SET   01020000
*          ON THAT VOLUME AS FOLLOWS:                                   01040000
*                    BINARY 0 - SUCCESSFUL RENAME                       01060000
*                    BINARY 1 - DSCB NOT FOUND IN VTOC                  01080000
*                    BINARY 2 - PASSWORD DIFFICULITY                    01100000
*                    BINARY 3 - DUPLICATE NAME EXISTS                   01120002
*                    BINARY 4 - PERMANENT I/O ERROR                     01140000
*                    BINARY 5 - APPROPRIATE UCB UNAVAILABLE             01160000
*                    BINARY 6 - OPERATOR UNABLE TO MOUNT VOLUME         01180000
*                    BINARY 7 - DATA SET IS OPEN                        01190002
*                                                                       01200000
*OUTPUT -  REGISTER 9 POINTS TO THE CVT, AND REGISTER 10 POINTS TO      01240002
*          THE PARAMETER LIST.  REGISTER 13 POINTS TO THE WORK AREA,    01260002
*          IN WHICH 'VOLNUM' CONTAINS THE NUMBER OF VOLUMES TO BE       01280002
*          RENAMED, AND 'VOLPTR' CONTAINS THE ADDRESS OF THE FIRST      01290002
*          VOLUME IN THE VOLUME LIST.  'PRUCBPTR' CONTAINS THE PRIMARY  01300002
*          (DEMOUNTABLE) UCB ADDRESS, IF ONE IS AVAILABLE.              01320002
*                                                                       01340002
*ERROR CONDITONS - UPON RETURN TO THE CALLER, REGISTER 15 CONTAINS      01360002
*          ONE OF THE FOLLOWING VALUES TO INDICATE THE COMPLETION       01380002
*          STATUS OF THE RENAME FUNCTION:                               01400002
*              00 - SUCCESSFUL COMPLETION                               01420002
*              04 - NO UNIT AVAILABLE FOR MOUNTING ANY OF THE VOLUMES   01440002
*                   IN THE VOLUME LIST.  THE STATUS BYTE OF EACH ENTRY  01460002
*                   IN THE VOLUME LIST IS SET TO X'05'.                 01480002
*              08 - UNABLE TO RENAME ON ONE OR MORE VOLUMES. THIS CODE  01500000
*                   IS ACCOMPANIED BY A SETTING OF THE VOLUME STATUS    01520000
*                   BYTE AS DESCRIBED UNDER 'INPUT'.                    01540000
*              12 - THE NUMBER OF VOLUMES IN THE VOLUME LIST WAS ZERO,  01550002
*                   OR THE VOLUME LIST WAS NOT IN THE USER'S REGION.    01552002
*                                                                       01560000
*STORAGE - PROGRAM CODE CSECT = LESS THAN 2048 BYTES                    01570002
*          WORK AREA = 676 BYTES                                        01580002
*                                                                       01590021
*                                                                       01600000
*REGISTER USAGE:                                                        01620000
R0       EQU   0                                                        01640000
R1       EQU   1                                                        01660000
RUCBSAVE EQU   1                        CALLER'S UCB ADDRESS     Y02082 01670002
R2       EQU   2                                                        01680000
RDSAB    EQU   2                        POINTER TO THE DSAB      Y02082 01690002
R3       EQU   3                                                        01700000
RTIOT    EQU   3                        POINTER TO THE TIOT      Y02082 01710002
P1       EQU   3                                                        01720000
R4       EQU   4                                                        01740000
REND     EQU   4                        POINTER TO END OF ENTRY  Y02082 01750002
P2       EQU   4                                                        01760000
R5       EQU   5                                                        01780000
VOLCTR   EQU   5                       NUMBER OF VOLUMES                01800000
P4       EQU   6                                                        01820000
R7       EQU   7                                                        01830000
VOLISTX  EQU   8                       VOLUME LIST POINTER              01840000
SVRBREG  EQU   8                       POINTER TO SVRB           Y02080 01842002
R9       EQU   9                                                        01860000
RCVT     EQU   9                       CVT POINTER                      01880000
PL       EQU   10                      PARAMETER LIST POINTER           01900000
RERRSAVE EQU   10                       ERROR CODE SAVE REGISTER Y02132 01910002
RUCB     EQU   11                      UCB POINTER                      01920000
RBASE    EQU   12                                                       01940000
RWKAREA  EQU   13                      WORKAREA POINTER                 01960000
RETURN   EQU   14                                                       01980000
R15      EQU   15                       EQUATE FOR REGISTER 15   Y02080 01990002
WORKREG  EQU   15                                                       02000000
*                                                                       02001002
* OTHER EQUATES                                                         02002002
*                                                                       02003002
K0       EQU   0                        CONSTANT OF 0            Y02082 02004002
K1       EQU   1                        CONSTANT OF 1            Y02082 02005002
K2       EQU   2                        CONSTANT OF 2            Y02080 02006002
K3       EQU   3                        CONSTANT OF 3            Y02082 02007002
NONZERO  EQU   4                        NON-ZERO VALUE           YM1312 02007502
K4       EQU   4                        CONSTANT OF 4            Y02080 02008002
K8       EQU   8                        CONSTANT OF 8            Y02132 02008202
K12      EQU   12                       CONSTANT OF 12           Y02080 02009002
RTNCODE8 EQU   8                        RETURN CODE OF 8         Y02082 02010002
K16      EQU   16                       CONSTANT OF 16           Y02132 02010202
K44      EQU   44                       CONSTANT OF 44         @G60ASBJ 02010660
NOLIST   EQU   12                       ERROR CODE FOR EMPTY    SA57261 02011002
*                                       VOL LIST                SA57261 02012002
VOLSER   EQU   4                        OFFSET TO THE VOLSER IN  Y02082 02013002
*                                       A VOLUME LIST ENTRY      Y02082 02014002
STATUS   EQU   11                       OFFSET TO STATUS BYTE    Y02082 02015002
ENTRYL   EQU   12                       VOLUME LIST ENTRY LENGTH Y02082 02016002
OPENDS   EQU   X'07'                    OPEN DATA SET ERROR      Y02082 02017002
RTNCODE4 EQU   4                        RETURN CODE OF 4         Y02132 02018002
NOF1     EQU   X'01'                    NO F1 DSCB ERROR CODE    Y02132 02019002
NODEVERR EQU   X'05'                    NO DEVICE ERROR CODE     Y02132 02020002
BLANK    EQU   C' '                     EBCDIC BLANK             YM2880 02021002
*                                                                       02040002
         BALR  RBASE,R0                                                 02080000
         USING BEGIN,RBASE                                              02100000
         USING RENAMWKA,RWKAREA         WORK AREA ADDRESSABILITY Y02080 02120002
         USING UCB,RUCB                                                 02140000
         USING CVT,RCVT                                                 02160000
         USING RBBASIC,SVRBREG          SVRB ADDRESSABILITY    @G60ASBJ 02165060
*                                                                       02170002
* THIS SECTION OBTAINS THE RENAME WORK AREA.                            02180002
*                                                                       02190002
BEGIN    EQU   *                                                 Y01077 02194000
         LPR   PL,R1                    LOAD PARAMETER LIST ADDR Y02080 02200002
         LR    RUCB,R0                  LOAD UCB ADDRESS         Y02080 02220002
         L     RCVT,CVTPTR              LOAD CVT ADDRESS         Y02080 02240002
         L     SVRBREG,0(R4)            LOAD SVRB ADDRESS        Y02080 02260002
         ST    RETURN,RBEXSAVE+44       SAVE REGISTER 14       @G60ASBJ 02280060
         IECRES GET,PREFIX=FIRST,LV=RWALNGTH,ID=REWA,            Y02080X02285060
               STM=(R2,RBASE,RBEXSAVE)                         @G60ASBJ 02290060
         LR    RWKAREA,R1              LOAD BASE REG FOR WORK AREA      02295060
         L     RETURN,RBEXSAVE+44      RESTORE REGISTER 14     @G60ASBJ 02300060
         ST    RETURN,RENSAVE          SAVE R14 IN RENAME WORK @G60ASBJX02305060
                                       AREA                    @G60ASBJ 02310060
         MODESET EXTKEY=ZERO           RETURN TO KEY ZERO AFTER  Y02082X02325002
                                       ISSUING THE IECRES GET    Y02082 02330002
*                                                                       02335002
         IECRES LOAD,MODNM=LOAD1,EXTPR=(RWKAREA),BRANCH=NO       Y02080X02340002
                                        LET OPTIONAL TRACE PRINT Y02080X02345002
                                        THIS MODULE'S NAME       Y02080 02350002
*                                                                       02355002
         L     R1,IECRRPRM             RECOVERY RTN LIST ADDR    Y02144 02360002
         USING RRPLIST,R1              PARM LIST ADDRESSABILITY  Y02144 02365002
         OI    RRFUNCTN,RRFRENAM       SET RENAME FUNCTION BIT   Y02144 02370002
         DROP  R1                                                Y02144 02375002
*                                                                       02380002
         ST    R4,TCBADDR              SAVE INPUT TCB ADDRESS    Y02078 02385002
         ST    PL,OLDPLPTR             STORE PARAMETER LIST POINTER     02400000
         L     P1,K12(,PL)              LOAD ADDRESS OF VOL LIST YM5399 02401002
         LRA   P1,K0(,P1)               LOAD REAL ADDRESS OF     YM5399X02402002
                                        VOLUME LIST              YM5399 02406002
         BC    5,EXIT                   BR IF INVALID (INVALID   YM5748 02409002
*                                       SEGMENT TABLE ENTRY OR   YM5748 02412002
*                                       INVALID SEGMENT OR PAGE  YM5399 02415002
*                                       TABLE LENGTH)            YM5399 02418002
         LM    P1,P4,0(PL)             LOAD PARAMETER LIST              02420000
*                                       P1 = RENAME OPTIONS             02440021
*                                       P2 = OLD DATA SET NAME ADDRESS  02460021
*                                       P3 = NEW DATA SET NAME ADDRESS  02480021
*                                       P4 = VOLUME LIST ADDRESS        02500021
         MVC   PDSNAME,K0(P2)          SAVE DSNAME IN PROTECTED  YM1337 02505002
*                                      WORK AREA                 YM1337 02510002
         LA    P2,PDSNAME              GET ADDR OF PROTECTED     YM1337 02515002
*                                      DSNAME                    YM1337 02516002
         ST    P2,DSMADTW3             SAVE ADDR OF DSNAME       Y02144 02520002
         OI    SISW1,NOSMFRCD          SET NO SMF RECORD SWITCH  Y02082 02530002
*                                      UNTIL AT LEAST ONE RENAME Y02082 02540002
*                                      IS SUCCESSFUL             Y02082 02550002
         MVC   VOLNUM,0(P4)            MOVE NUMBER OF VOLUMES    Y02080 02560002
         LH    VOLCTR,VOLNUM           LOAD NBR OF VOLS IN LIST  Y02080 02580002
         LTR   VOLCTR,VOLCTR           IS LIST EMPTY                    02600000
         BNP   EXIT                    BRANCH IF YES             Y02082 02620002
*                                                                       02623002
* THIS SECTION CHECKS IF THE VOLUME LIST ADDRESS IS WITHIN THE USER'S   02626002
* REGION.  IF THE CALLER IS IN SUPERVISOR STATE OR IN KEY ZERO, THE     02629002
* VOLUME LIST ADDRESS DOES NOT HAVE TO BE CHECKED.                      02632002
*                                                                       02635002
VALCHECK EQU   *                        VALIDITY CHECK           Y02078 02638002
         TESTAUTH FCTN=1,KEY=YES,STATE=YES,BRANCH=YES  TEST IF   Y02078X02641002
                                        CALLER IS IN KEY 0 OR    Y02078X02644002
                                        IN SUPERVISOR STATE      Y02078 02647002
         LTR   R15,R15                  TEST IF ANY TRUE         Y02078 02650002
         BZ    BYPASS                   BRANCH IF YES            Y02078 02653002
*                                                                       02656002
* THIS SECTION CALCULATES THE STARTING AND ENDING ADDRESSES OF          02659002
* THE AREA TO BE CHECKED.                                               02662002
*                                                                       02665002
         MH    VOLCTR,TWELVE            12 TIMES THE NBR OF VOLS Y02078 02666002
         LA    VOLCTR,K1(VOLCTR)        ADD ONE                  Y02078 02668002
         LA    R1,0(P4)                 STARTING ADDRESS         Y02078 02671002
         LR    R2,R1                                             Y02078 02674002
         AR    R2,VOLCTR                ADDRESS OF THE LAST BYTE Y02078 02677002
*                                       OF THE VOLUME LIST       Y02078 02680002
         STM   RUCB,P1,IECREGSV+K12     SAVE REGISTERS 11-3      Y02078 02683002
         L     R4,TCBADDR               TCB ADDRESS IN REG 4     Y02078 02684002
         LR    R7,RWKAREA               SAVE WORK AREA ADDRESS   Y02078 02686002
         XR    R5,R5                    INITIALIZE REGISTER      YM1241 02687002
OBTNLOCK SETLOCK OBTAIN,TYPE=LOCAL,MODE=UNCOND,                  Y02078X02689002
               RELATED=(LOCAL,IGC00030(RLSELOCK))  OBTAIN LOCK   Y02078 02692002
         LM    RUCB,RETURN,IECREGSV+K12-RENAMWKA(R7) RSTORE REGS YM1241 02693002
         L     R15,CVT0VL00             VALIDITY CHECK RTN ADDR  Y02078 02695002
         BALR  RETURN,R15               LINK TO VALIDITY CHECK   Y02078 02698002
         BZ    RLSELOCK                 BRANCH IF VALID ADDRESS  YM1312 02700002
         LA    R5,NONZERO               INDICATE INVALID ADDRESS YM1312 02701002
*                                                                       02702002
RLSELOCK SETLOCK RELEASE,TYPE=LOCAL,                             Y02078X02704002
               RELATED=(LOCAL,IGC00030(OBTNLOCK))  RELEASE LOCK  Y02078 02707002
         LM    RUCB,P1,IECREGSV+K12-RENAMWKA(R7)  RESTORE REGS   Y02078 02708002
         LTR   R5,R5                    TEST IF ADDRESS VALID    Y02078 02713002
         BNZ   EXIT                     BRANCH IF NOT VALID      Y02078 02716002
*                                                                       02719002
* THIS SECTION ATTEMPTS TO ENQ ON THE TIOT.  IF THE ENQ FAILS, THEN     02722002
* THE RENAME CANNOT PROCEED, SINCE THE CURRENT TASK ALREADY HAD         02725002
* CONTROL OF THE RESOURCE.                                              02728002
*                                                                       02731002
BYPASS   EQU   *                        ENQ ON TIOT             Y02082  02734002
         LH    VOLCTR,VOLNUM            RELOAD NUMBER OF VOLUMES Y02082 02737002
         L     RDSAB,TCBADDR            LOAD TCB ADDRESS         Y02082 02740002
         USING TCB,RDSAB                TCB ADDRESSABILITY       Y02082 02743002
         L     RDSAB,TCBJSCB            GET JSCB ADDRESS         Y02082 02746002
         USING IEZJSCB,RDSAB            JSCB ADDRESSABILITY      Y02082 02749002
         L     RDSAB,JSCBACT            GET ACTIVE JSCB ADDRESS  Y02082 02752002
         L     RDSAB,JSCDSABQ           GET DSAB QDB ADDRESS     Y02082 02755002
         ST    RDSAB,DSABQDB            SAVE FOR TIOT ENQ        Y02082 02758002
         L     R2,CVTTCBP               LOAD TCB/ASID POINTERS   YM1063 02760002
         L     R2,K12(,R2)              LOAD CURRENT ASID ADDR   YM1063 02762002
         USING ASCB,R2                  ASCB ADDRESSABILITY      YM1063 02764002
         MVC   TIOTMNR(K2),ASCBASID     MOVE ASID INTO ENQ MINOR YM1063 02766002
*                                       RESOURCE NAME            YM1063 02768002
         DROP  R2                                                YM1063 02770002
         MVC   MJNAME(L'TIOTMJR),TIOTMJR  MAJOR RESOURCE NAME    Y02082 02773002
         MVC   ENQAREA(ENQLTH1),ENQLIST1  MOVE IN PARAMETER LIST YM2895 02776002
         ENQ   (MJNAME,TIOTMNR),MF=(E,ENQAREA)  ENQ ON SYSZTIOT  Y02082 02779002
         LTR   R15,R15                  TEST IF SUCCESSFUL ENQ   Y02082 02782002
         BZ    SETENQSW                 BRANCH IF YES            Y02082 02785002
*                                                                       02786002
         LA    VOLISTX,K2(P4)           ADDRESS OF FIRST VOLUME  Y02082 02788002
OPENERR  EQU   *                        OPEN DATA SET ERROR      Y02082 02788502
         LA    R3,OPENDS                OPEN DATA SET ERROR CODE Y02132 02789002
         B     SETERRCD                 GO SET THE ERROR CODE    Y02132 02789502
NOF1DSCB EQU   *                        NO F1 DSCB ERROR         Y02132 02790002
         LA    R3,NOF1                  NO F1 DSCB ERROR CODE    Y02132 02790502
SETERRCD EQU   *                        RETURN CODE              Y02132 02791002
         LA    RERRSAVE,RTNCODE8        RETURN CODE OF 8         Y02132 02791502
SETSTATS EQU   *                        SET ERROR CODE IN VOLIST Y02132 02792002
         L     R1,TCBADDR               LOAD TCB ADDRESS         Y02078 02794002
         USING TCB,R1                   TCB ADDRESSABILITY       Y02078 02797002
         MODESET EXTKEY=RBT234,WORKREG=2  SWITCH TO CALLER'S KEY Y02078 02800002
ERRLOOP  EQU   *                        MORE VOLUMES             Y02082 02803002
         STC   R3,STATUS(VOLISTX)       SET ERROR CODE IN VOLIST Y02132 02803502
         LA    VOLISTX,ENTRYL(VOLISTX)  NEXT VOL LIST ENTRY ADDR Y02082 02809002
         BCT   VOLCTR,ERRLOOP           BRANCH IF MORE VOLUMES   Y02082 02812002
         MODESET EXTKEY=ZERO            RETURN TO KEY ZERO       Y02082 02815002
         B     DEQTEST                  GO PREPARE TO EXIT       Y02082 02821002
*                                                                       02822002
SETENQSW EQU   *                        SET TIOT ENQ'ED SWITCH   Y02082 02824002
         LA    R1,TIOTMNR               MINOR RESOURCE NAME ADDR Y02144 02825002
         ST    R1,DSMADTW2              SAVE MINOR NAME ADDR     Y02144 02826002
         OI    SISW1,TIOTENQ            SET TIOT ENQ'ED SWITCH   Y02082 02827002
         OI    DSMADTB2,DSMTIOTE        SET TIOT ENQ'ED SWITCH   Y02144 02828002
*                                                                       02829002
         LA    VOLISTX,K2(P4)           ADDRESS OF FIRST VOLUME  Y02082 02830002
         LTR   RUCBSAVE,RUCB            TEST FOR PASSED UCB ADDR Y02082 02833002
         BZ    FINDUNIT                 BRANCH IF ZERO           Y02082 02836002
         LA    RUCBSAVE,K0(RUCBSAVE)    CLEAR HIGH BYTE          Y02082 02839002
         TM    UCBJBNR,UCBVRDEV         TEST IF A VIRTUAL UCB    Y02132 02842002
         BZ    USERSUCB                 BRANCH IF NOT            Y02132 02845002
         ST    RUCB,PRUCBPTR            SAVE INPUT UCB ADDRESS   Y02132 02848002
         B     VIODSTST                 BRANCH TO VIO D/S TEST   Y02132 02851002
*                                                                       02857002
* IF THE USER SUPPLIED A UCB ADDRESS, THIS SECTION SEARCHES THE         02860002
* TIOT TO DETERMINE IF THE UNIT IS ALLOCATED TO THE JOB.  IF IT IS      02863002
* ALLOCATED, IT BECOMES THE PRIMARY UCB IF IT IS DEMOUNTABLE.           02866002
*                                                                       02869002
USERSUCB EQU   *                        USER SUPPLIED A UCB ADDR Y02082 02872002
         L     RDSAB,DSABQDB            LOAD DSAB QDB ADDRESS    Y02082 02875002
         USING QDB,RDSAB                QDB ADDRESSABILITY       Y02082 02878002
         L     RDSAB,QDBFELMP           GET FIRST DSAB ADDRESS   Y02082 02881002
         USING DSAB,RDSAB               DSAB ADDRESSABILITY      Y02082 02884002
UDSABTST EQU   *                        DSAB TEST                Y02082 02887002
         LTR   RDSAB,RDSAB              IS THERE ANOTHER DSAB    Y02082 02890002
         BZ    FINDUNIT                 BRANCH IF NOT            Y02082 02893002
         L     RTIOT,DSABTIOT           LOAD TIOT ADDRESS        Y02082 02896002
         USING TIOENTRY,RTIOT           TIOT ADDRESSABILITY      Y02082 02899002
         SR    REND,REND                ZERO REGISTER FOR IC     Y02082 02902002
         IC    REND,TIOELNGH            LENGTH OF TIOT ENTRY     Y02082 02905002
         AR    REND,RTIOT               ADDRESS OF FIRT BYTE     Y02082 02908002
*                                       PAST THE TIOT ENTRY      Y02082 02911002
         LA    RTIOT,TIOEFSRT-K1        ADDR OF FIRST UCB ADDR   Y02082 02914002
UNEXTUCB EQU   *                        END OF ENTRY             Y02082 02917002
         CR    RTIOT,REND               TEST IF AT END OF ENTRY  Y02082 02920002
         BNL   UNXTDSAB                 BRANCH IF YES            Y02082 02923002
         L     RUCB,K0(,RTIOT)          GET UCB ADDRESS          Y02082 02926002
         LA    RUCB,K0(RUCB)            CLEAR HIGH BYTE          Y02082 02929002
         LTR   RUCB,RUCB                IS THERE A UCB ADDRESS   Y02082 02932002
         BZ    UINCRPTR                 BRANCH IF NOT            YM1063 02935002
         CR    RUCB,RUCBSAVE            TEST IF EQUAL TO THE     Y02082 02938002
*                                       USER-SUPPLIED UCB ADDR   Y02082 02941002
         BE    LINKTEST                 BRANCH IF YES            Y02082 02944002
UINCRPTR EQU   *                                                 YM1063 02945002
         LA    RTIOT,L'TIOESTTB+L'TIOEFSRT(RTIOT)   INCREMENT TO Y02082 02947002
*                                       NEXT UCB ADDRESS IN TIOT Y02082 02950002
         B     UNEXTUCB                 GO TRY NEXT UCB ADDRESS  Y02082 02953002
*                                                                       02954002
UNXTDSAB EQU   *                        GET NEXT DSAB            Y02082 02956002
         L     RDSAB,DSABFCHN           GET NEXT DSAB ADDRESS    Y02082 02959002
         B     UDSABTST                 GO TEST IT               Y02082 02962002
*                                                                       02964002
* THIS SECTION LINKS TO A ROUTINE THAT DETERMINES IF THE UNIT IS        02966002
* ELIGIBLE FOR DEMOUNTING.                                              02968002
*                                                                       02970002
LINKTEST BAL   RETURN,TESTUCB           TEST FOR PRIMARY UCB            02974000
         LTR   RUCB,RUCB               TEST FOR PRIMARY UCB             02980000
         BZ    FINDUNIT                BR IF NONE                       03000000
         ST    RDSAB,PRDSABAD           SAVE PRIMARY DSAB ADDR   Y02082 03020002
         ST    RUCB,PRUCBPTR            SAVE PRIMARY UCB ADDRESS Y02082 03030002
         L     RETURN,DSABTIOT          LOAD TIOT ENTRY ADDRESS  YM7036 03031002
         LA    RETURN,TIOEJFCB-TIOENTRY(,RETURN)  POINT TO JFCB  YM7036X03032002
                                        PREFIX ADDRESS           YM7036 03034002
         IECRES LOCJFCB,(RETURN)        LOCATE THE JFCB          YM7036 03036002
         CLC   PDSNAME,JFCBDSNM-INFMJFCB(RETURN)  CHECK IF       YM7036X03038002
                                        THIS IS THE RIGHT TIOT   YM7036X03040002
                                        ENTRY FOR THIS DSNAME    YM7036 03042002
         BE    FOUNDUCB                 BRANCH IF CORRECT        YM7036 03044002
         OI    SISW2,UCBFNDSW           SET THE UCB FOUND SWITCH YM7036 03046002
         B     UINCRPTR                 GO TRY NEXT TIOT ENTRY   YM7036 03048002
*                                                                       03050000
* CHECK THE UCB FOR PRIMARY QUALITIES.                                  03060000
*                                                                       03070000
TESTUCB  EQU   *                                                  25343 03077018
         TM    UCBTBYT3,UCB3DACC        TEST IF DIRECT ACCESS    Y02082 03087002
         BZ    WRONGUCB                 BRANCH IF NOT            Y02082 03097002
         TM    UCBDMCT,UCBDMC           TEST IF DATAMGT COUNT=0  Y02082 03107002
         BNZ   WRONGUCB                 BRANCH IF NOT            Y02082 03117002
         TM    SRTESTAT,SRTEONLI        TEST STATUS A FOR ON LINE       03120000
         BZ    WRONGUCB                 BRANCH IF NOT                   03130000
         TM    SRTESTAT,SRTERESV+SRTEPRES+SRTESYSR  TEST FORRESERVED,   03140000
*                                       PERMANENT OR SYSTEM RESIDENT    03150000
         BNE   WRONGUCB                 BRANCH IF YES                   03160000
         TM    SRTESTAB,SRTEBSVL        TEST FOR SHARED VOLUME          03170000
         BZ    WRONGUCB                 BR IF SHARED                    03180000
         BR    RETURN                   RETURN                   Y02080 03200002
WRONGUCB SR    RUCB,RUCB               DISCARD THIS UCB                 03300000
         BR    RETURN                   RETURN                   Y02080 03310002
*                                                                       03320002
* THIS SECTION INITIALIZES REGISTERS BEFORE BRANCHING TO IGG03002.      03330002
*                                                                       03340000
NOPRIUCB EQU   *                        INITIALIZE REGS          Y02082 03350002
         OI    RTYPEFLG,NOMNTDEV        TURN ON NO DEVICE BIT    Y02082 03360002
FOUNDUCB LA    VOLISTX,2(P4)           LOAD ADDR OF FIRST VOLUME        03380000
         LH    VOLCTR,VOLNUM           LOAD NBR OF VOLS IN LIST  Y02080 03400002
         ST    VOLISTX,VOLPTR          STORE VOLUME LIST INDEX          03460000
         NI    SISW2,X'FF'-UCBFNDSW     TURN OFF UCB FOUND SWTCH YM7036 03470002
*                                                                       03480002
* THIS SECTION ISSUES AN EXCLUSIVE ENQ DIRECTED TO THE INITIATOR'S      03500002
* TCB WITH A MAJOR RESOURCE NAME OF SYSDSN AND THE DATA SET NAME AS     03520002
* THE MINOR RESOURCE NAME.  IF THE RETURN CODE INDICATES THE TASK       03540002
* PREVIOUSLY HAD CONTROL OF THE RESOURCE, THE ENQ IS REISSUED AND       03560002
* A BIT IS SET TO INDICATE A DEB SEARCH MUST BE DONE TO ENSURE NO       03580002
* ONE IS CURRENTLY OPEN TO THE DATA SET.                                03600002
*                                                                       03620002
DSNAMENQ EQU   *                        ENQ DSNAME               Y02082 03640002
         MVC   ENQAREA(ENQLTH2),ENQLIST2  MOVE IN ENQ PARM LIST  Y02082 03660002
         MVC   MJNAME(L'DSNMJR),DSNMJR  MAJOR RESOURCE NAME      Y02082 03680002
         LA    P2,PDSNAME+L'PDSNAME-K1  LAST BYTE OF DSNAME      YM2880 03684002
TESTDSN  EQU   *                        SEARCH FOR NON-BLANK     YM2880 03688002
         CLI   K0(P2),BLANK             IS THIS ONE A BLANK      YM2880 03692002
         BNE   GETLNGTH                 BRANCH IF NO TO COMPUTE  YM2880X03696002
                                        LENGTH OF NAME FOR ENQ   YM2880 03700002
         BCT   P2,TESTDSN               TRY NEXT BYTE            YM2880 03704002
GETLNGTH EQU   *                        CALCULATE LENGTH         YM2880 03708002
         LA    R2,PDSNAME-K1            BYTE PRECEDING DSNAME    YM2880 03712002
         SR    P2,R2                    P2 HAS LENGTH FOR ENQ    YM2880 03716002
         L     R2,TCBADDR               LOAD TCB ADDRESS         Y02082 03720002
         USING TCB,R2                   TCB ADDRESSABILITY       Y02082 03740002
         L     R2,TCBJSCB               GET JSCB ADDRESS         Y02082 03760002
         USING IEZJSCB,R2               JSCB ADDRESSABILITY      Y02082 03780002
         L     R2,JSCBACT               GET ACTIVE JSCB ADDRESS  YM2887 03790002
         L     R2,JSCBTCBP              INITIATOR TCB ADDRESS    Y02082 03800002
         ENQ   (MJNAME,PDSNAME,,(P2)),TCB=(R2),RET=USE,          YM2880X03810002
               MF=(E,ENQAREA)           ENQ ON SYSDSN            YM2880 03820002
         LTR   R15,R15                  TEST RETURN CODE         Y02082 03840002
         BNZ   ERRTEST                  BRANCH IF ENQ FAILED     Y02082 03860002
*                                                                       03865002
         OI    DSMADTB2,DSMDSNE         SET DSN ENQ'ED SWITCH    Y02144 03870002
         OI    SISW1,DSNENQ             SET ENQ ON SYSDSN SWITCH Y02082 03880002
         B     LOADEXIT                 GO TO NEXT LOAD          Y02082 03900002
ERRTEST  EQU   *                        ERROR TEST               Y02082 03920002
         CLI   ENQAREA+K3,RTNCODE8      TEST IF TASK ALREADY     Y02082 03940002
*                                       ENQ'ED ON SYSDSN         Y02082 03960002
         BNE   OPENERR                  BRANCH IF NOT            Y02082 03980002
         MVC   ENQAREA(ENQLTH3),ENQLIST3  MOVE IN ENQ PARM LIST  Y02082 04000002
         ENQ   (MJNAME,PDSNAME,,(P2)),TCB=(R2),RET=CHNG,         YM2880X04010002
               MF=(E,ENQAREA)           ENQ ON SYSDSN            YM2880 04020002
         LTR   R15,R15                  TEST RETURN CODE         Y02082 04040002
         BNZ   OPENERR                  BRANCH IF NOT SUCCESSFUL Y02082 04060002
         OI    SISW1,DEBSRCH            DEB SEARCH REQUIRED SW   Y02082 04080002
LOADEXIT EQU   *                        EXIT TO NEXT LOAD        Y02082 04100002
         IECRES LOAD,EXTPR=(RWKAREA),MODNM=LOAD2,BRANCH=DIRECT   Y02080 04120002
*                                                                       04140002
* THIS SECTION SEARCHES THE TIOT TO SEE IF ANY VOLUME IN THE VOLUME     04160002
* LIST IS MOUNTED ON A UNIT ALLOCATED TO THE JOB.  IF MOUNTED, IT       04180002
* LINKS TO A ROUTINE THAT DETERMINES IF THE UNIT IS DEMOUNTABLE.        04200002
*                                                                       04220002
FINDUNIT EQU   *                        FIND A UNIT              Y02082 04240002
         TM    SISW2,UCBFNDSW           TEST IF A UCB WAS FOUND  YM7036 04250002
         BO    FOUNDUCB                 BRANCH IF YES            YM7036 04260002
         OC    VOLSER(L'SRTEVOLI,VOLISTX),VOLSER(VOLISTX)  TEST  Y02082 04280002
*                                       FOR VALID VOLUME SERIAL  Y02082 04300002
         BZ    NOUNIT                   BRANCH IF ZERO           Y02082 04320002
         CLC   VOLSER(L'SRTEVOLI,VOLISTX),BLANKS  TEST FOR VALID Y02132 04321002
*                                       VIRTUAL UCB VOL SER      Y02132 04322002
         BNE   NOVIOVOL                 BRANCH IF NOT            Y02132 04323002
         CLC   CSYS,PDSNAME             TEST FOR CHARACTERS SYS  YM1337 04325002
*                                       IN BYTES 0-2 OF DSNAME   Y02132 04326002
         BNE   NOVIOVOL                 BRANCH IF NOT A VIO DSN  Y02132 04327002
         CLC   CDOTT,PDSNAME+K8         TEST FOR .T IN BYTES 8-9 YM1337 04328002
         BNE   NOVIOVOL                 BRANCH IF NOT            Y02132 04329002
         CLC   CDOTR,PDSNAME+K16        TEST FOR CHARACTERS .R   YM1337 04330002
*                                       IN BYTES 16-17           Y02132 04331002
         BE    VIODSTST                 BRANCH IF A POSSIBLE     Y02132 04332002
*                                       VIO DATA SET             Y02132 04333002
*                                                                       04334002
NOVIOVOL EQU   *                        NO VIO VOL               Y02132 04335002
         L     RDSAB,DSABQDB            LOAD DSAB QDB ADDRESS    Y02082 04340002
         USING QDB,RDSAB                QDB ADDRESSABILITY       Y02082 04360002
         L     RDSAB,QDBFELMP           GET FIRST DSAB ADDRESS   Y02082 04380002
         USING DSAB,RDSAB               DSAB ADDRESSABILITY      Y02082 04400002
DSABTEST EQU   *                        DSAB TEST                Y02082 04420002
         LTR   RDSAB,RDSAB              IS THERE ANOTHER DSAB    Y02082 04440002
         BZ    NOUNIT                   BRANCH IF NOT            Y02082 04460002
         L     RTIOT,DSABTIOT           GET TIOT POINTER         Y02082 04480002
         USING TIOENTRY,RTIOT           TIOT ADDRESSABILITY      Y02082 04500002
         SR    REND,REND                ZERO REGISTER FOR IC     Y02082 04520002
         IC    REND,TIOELNGH            LENGTH OF TIOT ENTRY     Y02082 04540002
         AR    REND,RTIOT               ADDRESS OF FIRST BYTE    Y02082 04560002
*                                       PAST THE TIOT ENTRY      Y02082 04580002
         LA    RTIOT,TIOEFSRT-K1        ADDR OF FIRST UCB ADDR   Y02082 04600002
NEXTUCB  EQU   *                        END OF ENTRY             Y02082 04620002
         CR    RTIOT,REND               TEST IF AT END OF ENTRY  Y02082 04640002
         BNL   NEXTDSAB                 BRANCH IF YES            Y02082 04660002
         L     RUCB,K0(,RTIOT)          GET UCB ADDRESS          Y02082 04680002
         LA    RUCB,K0(RUCB)            CLEAR HIGH BYTE          Y02082 04700002
         LTR   RUCB,RUCB                IS THERE A UCB ADDRESS   Y02082 04720002
         BZ    NXTENTRY                 BRANCH IF NOT            YM1063 04740002
         CLC   SRTEVOLI,VOLSER(VOLISTX)  COMPARE VOL SER NUMBERS Y02082 04760002
         BNE   NXTENTRY                 BRANCH IF NOT EQUAL      Y02082 04780002
*                                                                       04790002
         BAL   RETURN,TESTUCB           TEST IF UCB DEMOUNTABLE  Y02082 04800002
*                                                                       04810002
         LTR   RUCB,RUCB                TEST IF DEMOUNTABLE      Y02082 04820002
         BZ    NXTENTRY                 BRANCH IF NOT            YM7036 04822002
         ST    RDSAB,PRDSABAD           SAVE PRIMARY DSAB ADDR   YM7036 04824002
         ST    RUCB,PRUCBPTR            SAVE PRIMARY UCB ADDRESS YM7036 04826002
         L     RETURN,DSABTIOT          LOAD TIOT ENTRY ADDRESS  YM7036 04827002
         LA    RETURN,TIOEJFCB-TIOENTRY(,RETURN)  POINT TO JFCB  YM7036X04828002
                                        PREFIX ADDRESS           YM7036 04830002
         IECRES LOCJFCB,(RETURN)        LOCATE THE JFCB          YM7036 04832002
         CLC   PDSNAME,JFCBDSNM-INFMJFCB(RETURN)  CHECK IF       YM7036X04834002
                                        THIS IS THE RIGHT TIOT   YM7036X04836002
                                        ENTRY FOR THIS DSNAME    YM7036 04838002
         BE    FOUNDUCB                 BRANCH IF CORRECT        YM7036 04840002
         OI    SISW2,UCBFNDSW           SET THE UCB FOUND SWITCH YM7036 04842002
NXTENTRY EQU   *                        NEXT ENTRY               Y02082 04860002
         LA    RTIOT,L'TIOESTTB+L'TIOEFSRT(,RTIOT)  INCREMENT TO Y02082 04880002
*                                       NEXT UCB ADDRESS IN TIOT Y02082 04900002
         B     NEXTUCB                  GO TEST NEXT UCB ADDRESS Y02082 04920002
*                                                                       04930002
NEXTDSAB EQU   *                        GET NEXT DSAB            Y02082 04940002
         L     RDSAB,DSABFCHN           GET NEXT DSAB ADDRESS    Y02082 04960002
         B     DSABTEST                 GO TEST IT               Y02082 04980002
NOUNIT   EQU   *                        MORE VOLUMES             Y02082 05000002
         BCT   VOLCTR,TRYNEXT           TEST IF MORE VOLUMES     Y02082 05020002
         TM    SISW2,UCBFNDSW           TEST IF A UCB WAS FOUND  YM7036 05022002
         BO    FOUNDUCB                 BRANCH IF YES            YM7036 05024002
         B     NOPRIUCB                 BRANCH IF NOT            Y02082 05040002
TRYNEXT  EQU   *                        NEXT ENTRY               Y02082 05060002
         LA    VOLISTX,ENTRYL(VOLISTX)  POINT TO NEXT ENTRY      Y02082 05080002
*                                       IN THE VOLUME LIST       Y02082 05100002
         B     NOVIOVOL                 GO TRY NEXT VOLUME       YM7036 05120002
*                                                                       05130002
* THIS SECTION SEARCHES THE DSAB CHAIN FOR A TIOT ENTRY CONTAINING      05140002
* A VIRTUAL UCB WHOSE VDSDSCB CONTAINS THE DATA SET NAME TO BE          05150002
* RENAMED AND WHOSE VOLUME SERIAL NUMBER IN THE VDSUCB MATCHES          05160002
* THE FIRST VOLUME SERIAL IN THE VOLUME LIST.  IF A DSNAME/VOL SER      05170002
* MATCH IS FOUND, NO RENAME FUNCTION IS PERFORMED.                      05180002
*                                                                       05190002
VIODSTST EQU   *                        VIO DATA SET TEST        Y02132 05200002
         L     RDSAB,DSABQDB            GET DSAB QDB ADDRESS     Y02132 05210002
         USING QDB,RDSAB                QDB ADDRESSABILITY       Y02132 05220002
         L     RDSAB,QDBFELMP           GET FIRST DSAB ADDRESS   Y02132 05230002
         USING DSAB,RDSAB               DSAB ADDRESSABILITY      Y02132 05240002
VDSABTST EQU   *                        DSAB TEST                Y02132 05250002
         LTR   RDSAB,RDSAB              IS THERE ANOTHER DSAB    Y02132 05260002
         BZ    NOMATCH                  BRANCH IF NOT            Y02132 05270002
         L     RTIOT,DSABTIOT           GET TIOT ADDRESS         Y02132 05280002
         USING TIOENTRY,RTIOT           TIOT ADDRESSABILITY      Y02132 05290002
         L     RUCB,TIOEFSRT-K1         GET UCB ADDRESS          Y02132 05300002
         LA    RUCB,K0(RUCB)            CLEAR HIGH BYTE          Y02132 05310002
         LTR   RUCB,RUCB                IS THERE A UCB ADDRESS   Y02132 05320002
         BZ    VNXTDSAB                 IF NO, TRY NEXT DSAB     Y02132 05330002
         TM    UCBJBNR,UCBVRDEV         TEST IF A VIRTUAL UCB    Y02132 05340002
         BZ    VNXTDSAB                 BRANCH IF NOT            Y02132 05350002
         CLC   SRTEVOLI,VOLSER(VOLISTX)  COMPARE VOL SER'S       Y02132 05360002
         BNZ   VNXTDSAB                 BRANCH IF NOT EQUAL      Y02132 05370002
         LR    R7,RUCB                  VDSCB ADDRESS            Y02132 05380002
         USING VDSCB,R7                 VDSCB ADDRESSABILITY     Y02132 05390002
         CLC   DS1DSNAM,PDSNAME         COMPARE DSNAME'S         YM1337 05410002
         BNE   VNXTDSAB                 BRANCH IF NOT EQUAL      Y02132 05420002
VIORENAM EQU   *                        VIO DSNAME FOUND         Y02132 05430002
         LA    R3,NODEVERR              RENAME IS NOT SUPPORTED  Y02132 05440002
*                                       FOR A VIRTUAL DATA SET   Y02132 05450002
         LA    RERRSAVE,RTNCODE4        RETURN CODE OF 4         Y02132 05460002
         B     SETSTATS                 GO SET THE STATUS BYTE   Y02132 05470002
VNXTDSAB EQU   *                        GET NEXT DSAB            Y02132 05480002
         L     RDSAB,DSABFCHN           GET NEXT DSAB ADDRESS    Y02132 05490002
         B     VDSABTST                 GO TEST IT               Y02132 05500002
NOMATCH  EQU   *                        TEST FOR INPUT UCB       Y02132 05510002
         OC    PRUCBPTR,PRUCBPTR        TEST FOR INPUT UCB ADDR  Y02132 05520002
         BZ    NOF1DSCB                 BRANCH IF NONE           Y02132 05530002
         XC    PRUCBPTR,PRUCBPTR        CLEAR INVALID UCB ADDR   Y02132 05540002
         B     NOVIOVOL                 BRANCH TO NON-VIO LOGIC  Y02132 05550002
*                                                                       05900002
* IF RENAME ENQ'ED ON THE TIOT, THIS SECTION ISSUES A DEQ.              05910002
*                                                                       05920002
DEQTEST  EQU   *                        DEQ TIOT                 Y02082 05930002
         TM    SISW1,TIOTENQ            TEST IF ENQ'ED ON TIOT   Y02082 05940002
         BNO   FREEWKA                  BRANCH IF NOT            Y02082 05950002
         MVC   ENQAREA(DEQLTH1),DEQLIST1  MOVE IN DEQ PARM LIST  Y02082 05960002
         MVC   MJNAME(L'TIOTMJR),TIOTMJR  MAJOR RESOURCE NAME    Y02082 05970002
         DEQ   (MJNAME,TIOTMNR),MF=(E,ENQAREA)  DEQ FROM TIOT    Y02082 05980002
*                                                                       05990002
         NI    DSMADTB2,X'FF'-DSMTIOTE  RESET TIOT ENQ'ED SWITCH Y02144 06000002
         B     FREEWKA                  GO FREE THE WORK AREA    Y02082 06010002
*                                                                       06020002
* THIS SECTION FREES THE WORK AREA AND RETURNS TO THE CALLER.           06030002
*                                                                       06040000
EXIT     EQU   *                        RETURN TO THE CALLER     Y02080 06060002
         LA    RERRSAVE,NOLIST          LOAD ERROR CODE          Y02080 06070002
FREEWKA  EQU   *                        FREE THE WORK AREA       Y02082 06075002
         L     SVRBREG,RENSAVE          SAVE REG 14 IN REG 8   @G60ASBJ 06080060
         IECRES FREE,PREFIX=FIRST,A=(RWKAREA)  FREE WORK AREA    Y02080 06087060
         LR    RETURN,SVRBREG           RESTORE R14            @G60ASBJ 06094060
         LR    R15,RERRSAVE             RESTORE ERROR CODE REG   Y02080 06110002
         RETURN ,                       RETURN                   Y02080 06420002
*                                                                       06440000
*** PROGRAM CONSTANTS                                                   06460000
*                                                                       06480000
CSYS     DC    CL3'SYS'                 CONSTANT OF 'SYS'        Y02132 06481002
CDOTT    DC    CL2'.T'                  CONSTANT OF '.T'         Y02132 06482002
CDOTR    DC    CL2'.R'                  CONSTANT OF '.R'         Y02132 06483002
BLANKS   DC    CL6' '                   SIX EBCDIC BLANKS        Y02132 06484002
TIOTMJR  DC    CL8'SYSZTIOT'            TIOT MAJOR RESOURCE NAME Y02082 06485002
DSNMJR   DC    CL8'SYSDSN'              DSN MAJOR RESOURCE NAME  Y02082 06490002
ENQLIST1 ENQ   (,,E,6,SYSTEM),RET=HAVE,MF=L   TIOT ENQ PARM LIST Y02082 06495002
ENQLTH1  EQU   *-ENQLIST1               LENGTH OF ENQ PARM LIST  Y02082 06500002
ENQLIST2 ENQ   (,,E,,SYSTEM),RET=USE,MF=L  1ST DSN ENQ LIST      YM2880 06505002
ENQLTH2  EQU   *-ENQLIST2               LENGTH OF ENQ PARM LIST  Y02082 06510002
ENQLIST3 ENQ   (,,E,,SYSTEM),RET=CHNG,MF=L  2ND DSN ENQ LIST     YM2880 06515002
ENQLTH3  EQU   *-ENQLIST3               LENGTH OF ENQ PARM LIST  Y02082 06520002
TWELVE   DC    H'12'                    VOL LIST ENTRY LENGTH    Y02078 06535002
DEQLIST1 DEQ   (,,6,SYSTEM),MF=L        SYSZTIOT DEQ LIST        YM2887 06545002
DEQLTH1  EQU   *-DEQLIST1               LENGTH OF DEQ LIST       Y02082 06550002
*                                                                       06570002
* TABLE OF MODULE NAMES AND ENTRY POINT ADDRESSES                       06580002
*                                                                       06590002
         XCTLTABL ID=(LOAD1,IGC00030,LOAD2,IGG03002),            Y02080X06600002
               SVC=030,LENGTH=,BRT=YES                           Y02080 06620002
         SPACE 2                                                 Y02078 06660002
         IECDSECS ASCB,CVT,DSAB,JSCB,PSA,QDB,RB,RRPL,TIOT,TCB,   YM1063X06665002
               UCB,EXPAND=YES                                    YM1063 06670002
*                                                                       06780021
* *                                                                     06840021
* * * RENAME WORK AREA                                                  06900021
* *                                                                     06960021
*                                                                       07020021
WORKAREA IECRENWA EP,ADT=YES            RENAME WORK AREA         Y02144 07100002
         EJECT                                                   Y02132 07120002
         IDDVDSCB                       VDSCB EXPANSION          Y02132 07140002
         EJECT                                                   Y02132 07160002
         ORG   VDSDSCB                                           Y02132 07180002
         IECSDSL1 (1)                   FORMAT 1 DSCB EXPANSION  Y02132 07200002
         EJECT                                                   YM7036 07220002
         IEFJFCBN                       JFCB DSECT               YM7036 07240002
         END                                                            08140000
