* /* START OF SPECIFICATIONS *** * 00010002 *01* PROCESSOR = ASSEM; * 00012002 **** END OF SPECIFICATIONS ***/ * 00014002 TITLE 'IEHPROGM - IEHPROG5 VOLUME MOUNTING INTERFACE' 00020002 ********************************************************************** 00040002 * * 00060002 * MODULE NAME -- IEHPROG5 YL026VC* 00070002 * YL026VC* 00072002 * DESCRIPTIVE NAME -- IEHPROGM VOLUME MOUNTING INTERFACE YL026VC* 00074002 * YL026VC* 00076002 * COPYRIGHT -- NONE YL026VC* 00078002 * YL026VC* 00078402 * STATUS -- 'IEHPROG5' OS/VS2 PROLOGUE MODIFICATION YL026VC* 00080002 * NOVEMBER 1972 YL026VC* 00100002 * YL026VC* 00110002 * FUNCTION -- THIS MODULE INTERFACES THE ROOT SEGMENT 'IEHPROG1' * 00120002 * WITH THE VOLUME MOUNTING ROUTINE 'IEHMVSSF'. IT CREATES THE * 00140002 * DCB THAT IS USED TO READ THE VTOC WHEN APPLICABLE OR THE * 00160002 * DCB TO READ THE DIRECTORY OF A PDS WHEN 'SCRATCH' OR 'RENAME' * 00180002 * MEMBER HAS BEEN SPECIFIED. THIS MODULE PASSES CONTROL TO THE * 00200002 * MODULE 'IEHPROG2'. IF THE VOLUME MOUNTING ROUTINE HAS * 00220002 * ENCOUNTERED NO PROBLEMS CONTROL GOES TO ENTRY POINT IEHPROG2 * 00240002 * OTHERWISE CONTROL GOES TO IEHPROG7. IEHPROG7 BRANCHES * 00260002 * IMMEDIATELY TO THE POINT OF CALL IN 'IEHPROG1'. * 00280002 * * 00300002 * ENTRY POINTS -- * 00320002 * IEHPROG5 IS THE ENTRY TO THIS MODULE FROM 'IEHPROG1'. * 00340002 * RETURNAD IS THE ENTRY POINT BACK FROM A BRANCH TO THE * 00360002 * MODULE 'IEHMVSSF'. * 00380002 * * 00400002 * INPUT -- INPUT TO 'IEHPROG5' CONSISTS OF A COMMON COMMUNICATIONS * 00420002 * AND WORK AREA POINTED TO BY REGISTER 12 AND DESCRIBED BY THE * 00440002 * DSECT NAMED DSECT. * 00460002 * * 00480002 * OUTPUT -- OUTPUT OF IEHPROG5 CONSISTS OF MODIFICATIONS TO THE * 00500002 * COMMUNICATIONS AREA THAT WAS INPUT TO THE MODULE. * 00520002 * * 00540002 * EXTERNAL REFERENCES -- * 00560002 * IEHMVSSF IS CALLED TO MOUNT THE REQUIRED VOLUMES. * 00580002 * IEHPROG2 IS THE ENTRY REFERENCED IN 'IEHPROG2' IF THE * 00600002 * VOLUME MOUNTING ROUTINE HAS ENCOUNTERED NO PROBLEMS. * 00620002 * IEHPROG7 IS THE ENTRY REFERENCED IN 'IEHPROG2' IF THE * 00640002 * VOLUME MOUNTING ROUTINE ENCOUNTERED PROBLEMS. * 00660002 * * 00680002 * EXITS, NORMAL -- 'IEHPROG5' BRANCHES TO 'IEHPROG2' VIA A BRANCH * 00700002 * ON REGISTER 15 WHCIH CONTAINS THE ADDRESS OF ENTRY IEHPROG2. * 00720002 * * 00740002 * EXITS, ERROR -- 'IEHPROG5' BRANCHES TO 'IEHPROG2' VIA A BRANCH * 00760002 * ON REGISTER 15 WHICH CONTAINS THE ADDRESS OF ENTRY IEHPROG7. * 00780002 * * 00800002 * TABLES/WORK AREA -- * 00820002 * DSECT IS THE COMMON COMMUNICATIONS AND WORK AREA POINTED * 00840002 * TO BY REGISTER 12. * 00860002 * * 00880002 * ATTRIBUTES -- THIS MODULE OPERATES AS ONE LEG OF AN OVERLAY * 00900002 * STRUCTURE. * 00920002 * * 00940002 * CHARACTER CODE DEPENDENCY -- THIS MODULE MUST BE ASSEMBLED IN * 00960002 * EBCDIC AND RUN IN EBCDIC TO INSURE COLLATING SEQUENCE AND * 00980002 * INTERNAL REPRESENTATION OF CERTAIN CHARACTERS. * 01000002 * * 01020002 * NOTES -- APPROXIMATELY 500 BYTES OF STORAGE ARE REQUIRED * 01040002 * FOR CODE. * 01060002 * * 01080002 * CHANGE ACTIVITY -- FOLLOWS PROLOGUE YL026VC* 01090002 * YL026VC* 01092002 *********************************************************************** 01100002 IEHPROG5 CSECT M2838 01120002 *A50820 YM5077 01140002 *C200,10800 M2838 01160002 * I276 01180002 *0052 BS0H 01200002 *2349025000,025600,026700 DT0I 01220002 * 016700 A23466 01240002 *A700-784,1100,10900-10920 YL026VC 01250002 *C800-1000 YL026VC 01252002 *C 031600 @ZA01241 01254002 *A029020-029160 (ORG)@YA14026-@XA16033-@ZA13784 01254199 *C028600-029000 (ORG)@YA14026-@XA16033-@ZA13784 01254299 * ***** REGISTER USAGE ***** 01260002 ZERO EQU 0 ---------------------------------------- 01280002 R1 EQU 12 01300002 R2 EQU 2 01320002 R3 EQU 3 REGISTERS ZERO THROUGH 01340002 R4 EQU 4 TEN ARE WORK REGISTERS 01360002 R5 EQU 5 01380002 R6 EQU 6 REGESTERS ELEVEN AND 01400002 R7 EQU 7 TWELVE ARE BASE REGISTERS 01420002 R8 EQU 8 FOR THE PROGRAN AND THE 01440002 R9 EQU 9 DUMMY SECTION RESPECTIVELY 01460002 R10 EQU 10 01480002 RB EQU 11 THIRTEEN POINTS TO A REGISTER 01500002 RBD EQU 12 01520002 SAVEREG EQU 13 SAVE AREA 01540002 RETURN EQU 14 01560002 LINKREG EQU 15 FIFTEEN AND FOURTEEN ARE LINK 01580002 PARAMREG EQU 0 AND RETURN REGISTERS RESPECTIVELY 01600002 LISTREG EQU 1 ----------------------------------------- 01620002 AA EQU 34 01640002 ZEROOUT EQU 254 A23466 01660002 * 01680002 USING IEHECHAR,R1 01700002 SAVE (14,12) SAVE REGISTERS M2838 01720002 BALR RB,0 ESTABLISH ADDRESSABILITY 01740002 USING *,RB 01760002 ST SAVEREG,SAVEREG2+4 KEEP OLD SAVE AREA M2838 01780002 GETMAIN R,LV=176 GET CORE FOR VOLUME MOUNT 01800002 LR 13,1 01820002 LA RETURN,RETURNAD ESTABLISH A POINT OF RETURN 01840002 L LINKREG,MOUNTRTN GET ADDRESS OF THE MOUNT ROUTINE 01860002 NI MOUNTSW,ZEROOUT RESET SWITCH TO ZERO A23466 01880002 TM CTRLWORD,X'08' FIRST ENTRY TO ROUTINE 01900002 BO DDOK NO .... BRANCH 01920002 OI CTRLWORD,X'08' POST FIRST ENTRY 01940002 TM CTRLWORD,X'04' WERE DDNAMES PASSED TO THIS JOB 01960002 BO PICKUPDD YES ... BRANCH 01980002 LA R2,DDNAMES SET ADDRESS OF DD NAMES 02000002 ST R2,DDNAMEAD INTO THE TABLE 02020002 MVI DDNUMBER,X'02' SET NUMBER OF DD NAMES 02040002 B DDOK 02060002 PICKUPDD L R3,CTRLWORD POINT AT ORIGINAL SAVE AREA 02080002 L R2,24(R3) PICK UP REGISTER1 02100002 L R2,4(R2) PICK UP LIST OF DDNAMES 02120002 LH R3,0(R2) PICK UP LENGTH OF DD FIELD 02140002 CH R3,EIGHTY TEN OR LESS DDNAMES 02160002 BNH TINYLIST YES .... BRANCH 02180002 INSERTDD TM CTRLWORD,X'02' WAS SYSIN PASSED IN LIST 02200002 BO *+10 YES .... BRANCH 02220002 MVC AA(8,R2),DDNAMES PUT SYSIN IN THE LIST 02240002 TM CTRLWORD,X'01' WAS SYSOUT PASSED IN LIST 02260002 BO *+10 YES .... BRANCH 02280002 MVC AA+8(8,R2),DDNAMES+8 &UT SYSOUT IN LIST 02300002 LA R2,2(R2) POINT PAST COUNT FIELD 02320002 ST R2,DDNAMEAD ADDRESS OF LIST TO TABLE 02340002 SRL R3,3 DEVIDE BY EIGHT...LENGTH OF NAME 02360002 STC R3,DDNUMBER STORE COUNT OF DDNAMES 02380002 B DDOK 02400002 TINYLIST EQU * 02420002 XC DDLIST(80),DDLIST CLEAR LIST AREA 02440002 BCT R3,*+10 DECREMENT LENGTH FIELD 02460002 MVC DDLIST(1),2(R2) MOVE DDNAMES TO NORMAL LIST 02480002 EX R3,*-6 WITH THIS EXECUTE 02500002 LA R2,DDLIST-2 RESET REG 2 02520002 LA R3,80 SET COUNT FIELD FOR TEN 02540002 B INSERTDD 02560002 EIGHTY DC FL2'80' 02580002 DDOK EQU * 02600002 LA LISTREG,DDNUMBER POINT TO NUMBER OF DD NAMES 02620002 MVI MOUNTNUM,X'01' REQUEST 1 VOLUME MOUNT 02640002 TM IEHEMAC1,X'01' TEST FOR TYPE OF OPERATION 02660002 BO MNTAVOL BRANCH IF SCRATCH OR RENAME 02680002 TM IEHEMAC1,X'80' WAS A CONTROL VOLUME PASSED 02700002 BZ NORMAL NO...........BRANCH 02720002 MVC DEVTYPE1(10),PARAM3 SET CVOL INTO THE TABLE 02740002 MVC UNIT(5),PASSUNIT MOVE IN SPECIFIC UNIT NAME DT0I 02760002 * IF SPECIFIED DT0I 02780002 MVI REQUEST,X'80' ASK FOR A MOUNT TO BE PERFORMED 02800002 OI MOUNTSW,X'01' INDICATE CTLG SPECIFIED DT0I 02820002 NOCTLG BR LINKREG GO TO VOLUME MOUNT RTN DT0I 02840002 MNTAVOL LA R2,DEVTYPE1 ADDR OF VOL LIST DATA MGMT @ZA13784 02860099 LA R3,PARAM4+2 ADDR OF VOL REQ LIST @ZA13784 02880099 LA R4,UNIT UNIT INFO IN VOL REQ LIST @ZA13784 02900099 LH R5,PARAM4 NO OF ENTRIES AS LOOP COUNT @ZA13784 02902099 STC R5,MOUNTNUM STORE NO INTO VOL REQ LIST @ZA13784 02904099 MOVELOOP MVC ZERO(10,R2),ZERO(R3) MOVE DEVTYPE, VOLSER AND @ZA13784 02906099 MVC ZERO(5,R4),PASSUNIT UNIT TO VOL REQ LIST @ZA13784 02908099 LA R2,17(R2) NEXT ENTRY VOL REQ LIST @ZA13784 02910099 LA R3,12(R3) NXT ENT. VOL LST DATA MGMT @ZA13784 02912099 LA R4,17(R4) UNIT FIELD NEXT ENTRY @ZA13784 02914099 BCT R5,MOVELOOP BRANCH IF MORE ENTRIES @ZA13784 02916099 MVI REQUEST,X'00' ASK FOR NO MOUNTING 02920002 BR LINKREG 02940002 RETURNAD TM REQUEST,X'02' WAS THE VOLUME MOUNTED 02960002 BO NOMOUNT NO BRANCH 02980002 L R2,DECB2 GET SDDRESS OF ADCONS 03000002 MVC DECB2+4(4),28(R2) SWITCH RETURN TO THE SECOND 03020002 L R2,TABADDR POINT TO TABLE 03040002 AH R2,RTA1 ADD DISPLACEMENT 03060002 L R2,0(R2) POINT TO DDNAME IN TIOT 03080002 MVC UCBAD1(2),14(R2) PICK UP ADDR OF UCB 03100002 TM PPARAMSW,X'01' TEST IF SCRATCH VTOC 03120002 BZ *+16 NO .... BRANCH 03140002 MVC VTOCDCB2(88),VTOCDCB MOVE THE DCB @ZA01241 03160002 MVC DCB4VTOC+40(8),0(R2) PUT DD NAME IN DCB 03180002 NOMOUNT L 1,TABADDR GET ADDRESS OF CORE TO FREE 03200002 LA 1,0(1) CLEAR HIGH ORDER BYTE 03220002 LH 0,0(1) GET LENGTH TO BE FREED 03240002 FREEMAIN R,LV=(0),A=(1) FREE CORE 03260002 DELETE EP=DEVMASKT DELETE DEVICE MASK TABLE I276 03280002 B FREECORE 03300002 NORMAL L 15,DECB2 NO MOUNTING NEEDED NOW 03320002 MVC DECB2+4(4),28(15) SET RETURN ADDRESS TO UP1A 03340002 FREECORE LR 1,13 03360002 FREEMAIN R,LV=176,A=(1) RELEASE THE SAVE AREA 03380002 L SAVEREG,SAVEREG2+4 RESTORE OLD SAVE AREA M2838 03400002 LM 14,12,12(13) RESTORE REGISTERS M2838 03420002 L 15,DECB2+4 GET V ADCON OF RETURN 03440002 BR 15 RETURN OR GO TO SECOND LOAD 03460002 VTOCDCB DS 0F NAME THE FIRST ITEM IN DCB 03480002 DCB DSORG=PS,MACRF=R,KEYLEN=44,BLKSIZE=1,RECFM=U 03500002 MOUNTRTN DC V(IEHMVESF) ADCON OF VOLUME MOUNTING ROUTINE 03520002 DSECT DSECT 03540002 IEHECHAR DS C CHARACTER TO BE SCANNED FOR 03560002 IEHECOND DS C CONDITION CODE TO STOP ON 03580002 IEHECODE DS C 03600002 IEHEARGL DS C 03620002 IEHESTT DS F 03640002 IEHESTP DS F 03660002 IEHEFND DS F 03680002 IEHETBL DS F 03700002 IEHEFUN DS F 03720002 IEHESCNX DS 3F 03740002 IEHEMAC1 DS 7F PARAMETER LIST S21046 03760002 IEHEMAC2 DS 6F 03780002 IEHESTIN DS F 03800002 IEHENDIN DS F 03820002 IEHECCNT DS 2C 03840002 IEHESW1 DS C 03860002 DUPSW DS 2C SWITCHES FOR TEST OF DUPLICATE S21046 03880002 * PARAMETERS S21046 03900002 PPARAMSW DS CL2 03920002 IEHESW5 DS C 03940002 IEHESW6 DS C 03960002 IEHECALL DS F 03980002 DS 0D 04000002 DBLWORD DS F 04020002 FULLWORD DS F 04040002 DS 0D 04060002 DECB1 DS 24X 04080002 DECB2 DS 24X 04100002 VOLISTAD DS F 04120002 MATRIXIU DS F 04140002 VDTIU DS F 04160002 VOLPAREN DS FL2 04180002 VSRCM DS 2X 04200002 VDSA DS X 04220002 DFLG DS X BS0H 04240002 DFLAG DS X BS0H 04260002 DS 0F 04280002 FLSTADDR DS F 04300002 FNSA DS 12X 04320002 KWSA DS 12X 04340002 SCANRET DS F 04360002 MARESAR DS 72X 04380002 IEHESPC DS XL20 04400002 DS XL20 04420002 IEHERSAV DS 64X 04440002 PASSUNIT DS 5X DT0I 04460002 MOUNTSW DS X DT0I 04480002 TABLEAD DS F ADDRESS OF DEVICE NAME TABLE I276 04500002 IEHESW2 DS X PROTECT SWITCHES S21046 04520002 * BIT 1=1 IF WE ARE TO PRINT S21046 04540002 * CONTROL CARDS S21046 04560002 * BIT 3=1 INDICATES FIRST QUOTE S21046 04580002 * IN SCAN FOR DATA S21046 04600002 * OPERATION IS FOUND S21046 04620002 * BIT 4= 1 IF WTOR SETUP IS DONE S21046 04640002 * BIT 6=1 IF FIRST PARM ENTRY S21046 04660002 * WAS VALID S21046 04680002 * BIT 7=1 IF INVALID PARM ENTRY S21046 04700002 * MSG HAS BEEN PRINTED S21046 04720002 PASWDCT1 DS 1X NUMBER OF PROMPTS FOR PASWORD1 S21046 04740002 PASWDCT3 DS 1X NUMBER OF PROMPTS FOR CPASWORD S21046 04760002 TOTALPS DS 1X TOTAL NO OF OPERATOR REPLIES S21046 04780002 WTORECB DS 1F EVENT CONTROL BLOCK FOR WTOR S21046 04800002 TIOTADRS DS 1F TIOT ADDRESS FOR WTOR S21046 04820002 CCNAME DS 8C NAME OFF CONTROL CARD S21046 04840002 WTORLIST WTOR 'IEH220A JOBNAMES, STEPNAME, CARDNAME, REPLY WITH PASSWOX04860002 RD',,8,WTORECB,ROUTCDE=(9),DESC=2,MF=L S21046 04880002 EXTRACTO EXTRACT ,'S',FIELDS=(TIOT),MF=L S21046 04900002 DCBAREA DS 0F 04920002 UTINDCB DCB DSORG=PS,MACRF=(GM) 04940002 CODELIST DC C'.,=() ' SPECIAL CHARACTERS CODED BY SCAN 04960002 MAXLINES DC FL2'45' MAXIMUM LINES PER PAGE 04980002 LINECNT DC FL2'0' LINE COUNT FIELD 05000002 SKIP21 DC X'8B' SKIP TO 1 COMMAND 05020002 WRITEHDR DC X'19' SPACE 3 AFTER PRINT 05040002 HEADER DC CL30'MODIFY....VERSION BETA-1......' 05060002 DC CL30'LAST UPDATED....JULY 11 10 PM' 05080002 DC CL30' ' 05100002 DC CL30' PAGE 001 ' 05120002 PAGENUM EQU HEADER+110 05140002 DDNAMES DS 3CL8 FOR THREE 8 BYTE DDNAMES 05160002 UTOUTDCB DCB DSORG=PS,MACRF=(PM) 05180002 DS 2F 05200002 IEHESAT DS 150X 05220002 ORG IEHESAT 05240002 CTRLWORD DS F SWITCHES AND SAVE REG 13 05260002 DDNUMBER EQU * NUMBER OF DDNAMES 05280002 DDNAMEAD DS F ADDRESS OF DDNAMES 05300002 REQUEST EQU * REQUEST SWITCH 05320002 TABADDR DS F ADDRESS OF TABLE BUILT 05340002 DS XL3 BY THE VOLUME MOUNTING ROUTINE 05360002 MOUNTNUM DS X NUMBER OF MOUNT REQUESTS 05380002 UCBAD1 EQU * ADDRESS OF A UCB 05400002 DEVTYPE1 DS F DEVICE CODE 05420002 VOLSER1 DS CL6 VOLUME SERIAL NUMBER 05440002 RTA1 DS XL2 TABLE DISPLACEMENT TO DDNAME ADDR 05460002 UNIT DS XL5 DT0I 05480002 DDLIST DS 20F FOR TEN DDNAMES 05500002 ORG 05520002 READBASE DC F'0' 05540002 PARAM1 DS 44X 05560002 DS F FOR LENGTH OF PARAM2 05580002 PARAM2 DS 44X 05600002 DS F FOR LENGTH OF PARAM3 05620002 PARAM3 DS 44X 05640002 PARAM5 DS 2F CPASWORD PARAMETER S21046 05660002 PARAM6 DS 151F VOL IDS PARAMETER S21046 05680002 PARAM7 DS 2F PASSWORD2 PARAMETER S21046 05700002 PARAM8 DS 80X DATA PARAMETER S21046 05720002 DUMMY DS 1F TEMPORARY STORAGE FIELD S21046 05740002 PROTCTAD DS 1F ADDRESS OF WHERE TO PUT NEXT S21046 05760002 * VOL ID IN PARAM6 FOR PROTECT S21046 05780002 FINUSE DS F ADDR OF DC LIST IN USE 05800002 DCSAVEAD DS F SAVE AREA FOR ADDR OF DC LIST 05820002 INPUT DS 40F TWO CARD INPUT AREA 05840002 MSGOUT DS 30F MSG OUTPUT AREA 05860002 DS F 05880002 DS 0D 05900002 PARAM4 DS 151F FOR A VOLUME LIST 05920002 EOCORE EQU *-12 05940002 ORG PARAM4+20 05960002 VTOCDCB2 DS 0F 05980002 DCB4VTOC DCB DDNAME=VTOC, .06000002 DSORG=PS, .06020002 MACRF=R, .06040002 KEYLEN=44, .06060002 BLKSIZE=1, .06080002 RECFM=U 06100002 JFCB DS 24D 06120002 * THE FOLLOWING ORG STATEMENT IS FLAGGED YM5077 06140002 ORG 06160002 SAVEREG2 DS 72X SECONDARY SAVE AREA M2838 06180002 SAVEREG3 DS 72X THIRD LEVEL SAVE AREA M2838 06200002 ORG 06220002 VTOCSW EQU JFCB+50 06240002 VTOCDECB EQU JFCB+60 06260002 JFCBVOL EQU JFCB+118 06280002 EXLST2 EQU DCB4VTOC+36 06300002 FORMATID EQU PARAM2+44 06320002 BLANK EQU 64 06340002 READTOO EQU INPUT+72 06360002 COL16 EQU READTOO+15 06380002 COL72 EQU READTOO+71 06400002 MIDDLE EQU READTOO-1 06420002 WARE2PUT EQU IEHEMAC1-4 06440002 SYSINEND EQU * 06460002 END 06480002