*TITLEUSATSO -- ALLOCATE A NEW TSO FILE 00000100 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** *A AUTHOR FRANCIS COLLINS 00000200 *A DESIGNER RALPH MCMILLAN 00000300 *A LANGUAGE ASSEMBLER 00000400 *A SYSTEM IBM (SEE CRAY) 00000500 *A WRITTEN 7-07-82 00000600 * REVISED 8-26-82 FAC. CORRECTED SETTING OF NORMAL RETURN CODE. 00000700 * REVISED 3-09-83 DWD. DWD1-ADDED CODE TO VALIDATE TSO USER 00000800 * PREFIX. 00000900 * REVISED 4-18-83 DWD. DWD2-DELETED RELEASE OPTION FROM SVC99 00001000 * PARM LIST. 00001100 * REVISED 7-24-85 RSK. 'CAPPED' FOR EXTENDED ADDRESSING USE. 00001200 * CHANGES ARE MARKED BY 'EXT'. 00001300 * DBGG03 AND DBGG04 MSS GROUPS. SWITCH TO 00001400 * SVC 230 TO GET MOUNT ATTRIBUTE. 00001500 * REVISED 6-08-87 PJF. MOVED 'RETURN' ONE STATEMENT TO PRESERVE 00001600 * ERROR STATUS RETURNED. 00001700 * REVISED 8-03-87 REP. CHANGE TO 3380 DISC WITH NO TRACK OVERFLOW. 00001800 * REVISED 4-07-88 ESN. RENAME FROM UGANEW FOR TSO DISK ONLY. 00001900 * REVISED 3-01-92 REM. CHANGE UNIT FROM TSODBG TO TSODA. 00002000 *A 00002100 *A 00002200 *A CALL USATSO (DSNAME, NREC, LRECL, BLKSIZ, DSTYPE, 00002300 *A DCBAD, ERR, ERIN) 00002400 *A 00002500 *A IN/OUT ARGUMENT TYPE DESCRIPTION 00002600 *A 00002700 *A IN DSNAME C44 NAME OF SEQUENTIAL DATA SET TO BE 00002800 *A 11R4 ALLOCATED: TSO DATA SET LEFT-ADJUSTED 00002900 *A 11I4 AND PADDED WITH BLANKS. 00003000 *A 00003100 *A IN NREC I4 NUMBER OF RECORDS IN DATA SET. 00003200 *A 00003300 *A IN LRECL I4 RECORD LENGTH, BYTES. 00003400 *A IN BLKSIZ I4 BLOCK SIZE, BYTES. 00003500 *A BLKSIZ IS A MULTIPLE OF LRECL. 00003700 *A 00004000 *A IN DSTYPE I4 DATA SET TYPE CODE: 00004100 *A 1 = TSO DATA SET. 00004200 *A DATA CONTROL BLOCK ASSUMPTIONS BELOW. 00004700 *A 00004800 *A OUT DCBAD I4 ADDRESS OF DATA CONTROL BLOCK. THE DCB 00004900 *A AREA WILL BE OBTAINED WITH A GETMAIN 00005000 *A MACRO. THE AREA WILL INCLUDE TWO CONTROL 00005100 *A WORDS PRECEDING THE DCB. 00005200 *A WORD ONE CONTAINS THE LENGTH OF THE AREA, 00005300 *A INCLUDING THE CONTROL WORDS. 00005400 *A WORD TWO IS NOT USED (5-31-82). 00005500 *A THE FIRST CONTROL WORD IS USED BY UGUNAL 00005600 *A TO RELEASE THE DCB AREA. 00005700 *A DCBAD POINTS TO THE DCB ITSELF, NOT TO 00005800 *A THE FIRST CONTROL WORD. 00005900 *A DCB PARAMETERS USED: SEE BELOW. 00006000 *A EJECT 00006100 EJECT 00006200 *A OUT ERR I4 ERROR CODE. 00006300 *A 1 = OK. 00006400 *A 2 <---4 ) RETURN CODES 00006500 *A 3 <---8 ) FROM SVC 99. 00006600 *A 4 <--12 ) SEE IBM MANUAL BELOW, P. 27. 00006700 *A 5 = NOT USED (CLOSE FAILED). 00006800 *A 6 = GETMAIN (FOR DCB AREA) FAILED. 00006900 *A 7 = NOT USED (FREEMAIN FAILED). 00007000 *A 8 = NOT USED (DDNAME ALL BLANKS). 00007100 *A 9 = DATA SET NAME ALL BLANKS. 00007200 *A 10 = NREC ZERO OR NEGATIVE. 00007300 *A 11 = LRECL ZERO OR NEGATIVE, OR > 32760. 00007400 *A 12 = BLKSIZ ZERO OR NEGATIVE, OR > 32760. 00007500 *A 13 = BLKSIZ NOT A MULTIPLE OF LRECL. 00007600 * 14 = BLKSIZ NOT EQUAL TO LRECL (SEISMIC). 00007700 * 15 = DSTYPE NOT 1, 2, OR 3. 00007800 *A 15 = DSTYPE NOT 1 00007900 *A 16 = INVALID TSO PREFIX IN DDNAME. DWD1 00008000 *A 00008100 *A OUT ERIN I4 CODES FROM DYNAMIC ALLOCATION (SVC 99). 00008200 *A BYTES 1 AND 2 = ERROR CODE, 00008300 *A BYTES 3 AND 4 = INFORMATION CODE. 00008400 *A IBM MANUAL GC28-0627-2, OS/VS2 MVS 00008500 *A SYSTEM PROGRAMMING LIBRARY: 00008600 *A JOB MANAGEMENT, PAGES 28 TO 31.0. 00008700 *A 00008800 *A THIS PROGRAM ALLOCATES A NEW CATALOGED SEQUENTIAL TSO DATA 00008900 *A SET. 00009000 *A 00009400 *A TO CREATE THE DATA SET, USE FGQSAM OR FOTRCE/FGTRCE. 00009500 *A 00009600 *A THE DDNAME ASSIGNED BY THE SYSTEM WILL BE PLACED IN THE DATA 00009700 *A CONTROL BLOCK. THIS NAME HAS THE FORM SYSNNNNN. 00009800 *A 00009900 *A THE DATA SET SHOULD BE UNALLOCATED WITH A CALL TO UGUNAL. 00010000 *A OTHERWISE, THE DCB AREA WILL NOT BE RELEASED. 00010100 *A 00010200 *A DCB AND JCL PARAMETERS ASSUMED BY SUBROUTINE. 00010300 *A 00010400 *A CODE 1 00010500 *A TSO, 00010600 *A ETC. 00010700 *A 00010800 *A UNIT TSODA 00010900 *A MSVGP NA 00011000 *A ACCESS QSAM 00011100 *A FGQSAM 00011200 *A MACRF PM,GM 00011300 *A RECFM FB 00011400 *A DSORG PS 00011500 *A STATUS NEW 00011600 *A DISP CATLG 00011700 *AEND 00011800 EJECT 00011900 * REGISTER ASSIGNMENTS. 00012000 FR0 EQU 0 00012100 FR2 EQU 2 00012200 FR4 EQU 4 00012300 FR6 EQU 6 00012400 SPACE 00012500 R0 EQU 0 WORK REGISTER. 00012600 R1 EQU 1 ADDRESS OF PARAMETER LIST. 00012700 R2 EQU 2 ADDRESS OF DATA SET NAME. 00012800 DSN EQU 2 " 00012900 R3 EQU 3 VALUE OF NREC. 00013000 NREC EQU 3 " 00013100 R4 EQU 4 VALUE OF LRECL. 00013200 LRECL EQU 4 " 00013300 R5 EQU 5 VALUE OF BLOCK SIZE. 00013400 BLKSIZ EQU 5 " 00013500 R6 EQU 6 VALUE OF DSTYPE: INITIALLY 1, 2, 3 ... 00013600 DST EQU 6 " LATER, 0, 4, 8 ...FOR INDEXING 00013700 R7 EQU 7 ADDRESS OF DATA CONTROL BLOCK. 00013800 DCBAD EQU 7 " 00013900 R8 EQU 8 ADDRESS OF ERROR RETURN CODE, AND WORK. 00014000 ERR EQU 8 " 00014100 R9 EQU 9 ADDRESS OF ERROR AND INFO. CODES FROM SVC 99. 00014200 ERIN EQU 9 " 00014300 R10 EQU 10 WORK REGISTER. 00014400 R11 EQU 11 " 00014500 R12 EQU 12 BASE REGISTER = ADDRESS OF USATSO. 00014600 R13 EQU 13 ADDRESS OF SAVE AREA. 00014700 R14 EQU 14 SUBROUTINE LINKAGE = RETURN ADDRESS. 00014800 R15 EQU 15 SUBROUTINE LINKAGE, RETURN CODE, AND WORK. 00014900 * 00015000 EJECT 00015100 * PRELIMINARY SECTION. SAVE REGS., ESTABLISH BASE REGS. 00015200 USATSO CSECT 00015300 USING *,R15 00015400 B START 00015500 DC X'06',C'USATSO ' 00015600 START STM R14,R12,12(R13) 00015700 ST R13,SAVE+4 00015800 LA R12,SAVE 00015900 ST R12,8(,R13) 00016000 LR R13,R12 00016100 SPACE 00016200 LR R12,R15 BASE REGISTER FOR PROGRAM. 00016300 DROP R15 00016400 USING USATSO,R12 00016500 USING IHADCB,R8 IHADCB = NAME OF DCBD DSECT (DCB MAP). 00016600 **************** ADDRESSING MODE SWITCH ****************** EXT 00016700 USATSO AMODE ANY EXT 00016800 USATSO RMODE 24 EXT 00016900 LA R4,UGNEXT EXT 00017000 LA R5,RETURNIT EXT 00017100 BSM R5,R4 EXT 00017200 RETADD DC F'0' EXT 00017300 UGNEXT DS 0H EXT 00017400 ST R5,RETADD EXT 00017500 SPACE 3 00017600 * SECTION A. OBTAIN PARAMETERS FOR THIS PROGRAM, 00017700 * CHECK VALUES OF PARAMETERS, 00017800 * SET INITIAL VALUES OF VARIABLES. 00017900 * 00018000 LM R2,R9,0(R1) LOAD PARAMETER ADDRESSES. 00018100 L R3,0(,R3) R3 = VALUE OF NREC. 00018200 L R4,0(,R4) R4 = VALUE OF LRECL. 00018300 L R5,0(,R5) R5 = VALUE OF BLKSIZ. 00018400 L R6,0(,R6) R6 = VALUE OF DSTYPE (DATA SET TYPE), 00018500 ST R5,SVBLKSIZ SAVE BLOCK SIZE. 00018600 ST R8,SVERR SAVE ADDRESS OF ERROR RETURN. 00018700 SPACE 00018800 * ERIN MUST BE SET TO ZERO IF AN ERROR 00018900 SR R15,R15 OCCURS WHICH CAUSES EXIT FROM THE 00019000 ST R15,0(,ERIN) PROGRAM BEFORE SVC 99 IS ISSUED. 00019100 SPACE 00019200 * CHECK NREC. MUST BE POSITIVE. 00019300 LTR NREC,NREC 00019400 BP A10 00019500 LA R15,10 EXIT WITH ERROR CODE 10. 00019600 B RETURN 00019700 SPACE 00019800 * CHECK LRECL. MUST BE POSITIVE AND NOT EXCEED 32760. 00019900 A10 LTR LRECL,LRECL 00020000 BNP A20 00020100 C LRECL,FW32760 00020200 BNH A30 00020300 A20 LA R15,11 EXIT WITH ERROR CODE 11. 00020400 B RETURN 00020500 EJECT 00020600 * CHECK BLKSIZ. MUST BE POSITIVE AND NOT EXCEED 32760. 00020700 A30 LTR BLKSIZ,BLKSIZ 00020800 BNP A40 00020900 C BLKSIZ,FW32760 00021000 BNH A50 00021100 A40 LA R15,12 EXIT WITH ERROR CODE 12. 00021200 B RETURN 00021300 SPACE 00021400 * CHECK DSTYPE (DST). MUST BE 1, 2, 3, 4, OR 5. 00021500 A50 LTR DST,DST 00021600 BNP A60 00021700 C DST,FW5 00021800 BNH A70 00021900 A60 LA R15,15 EXIT WITH ERROR CODE 15. 00022000 B RETURN 00022100 SPACE 00022200 * FOR DSTYPE = 1 (TSO, ETC.), BLKSIZE MUST BE MULTIPLE OF LRECL. 00022300 * THIS WILL BE CHECKED LATER. 00022400 * FOR DSTYPE > 1 (SEISMIC), BLKSIZE MUST EQUAL LRECL. 00022500 A70 C DST,FW1 00022600 BE A80 00022700 CR BLKSIZ,LRECL 00022800 BE A80 00022900 LA R15,14 EXIT WITH ERROR CODE 14. 00023000 B RETURN 00023100 SPACE 00023200 * ADJUST DSTYPE FOR INDEXING. SUBTRACT ONE AND MULTIPLY BY 4. 00023300 A80 BCTR DST,R0 INITIAL VALUES 1, 2, 3, 4, 5 00023400 SLA DST,2 INDEXING VALUES 0, 4, 8, 12, 16. 00023500 EJECT 00023600 * SECTION B. INITIAL VALUES IN SVC 99 PARAMETER TABLE. 00023700 SPACE 00023800 * DATA SET NAME (KEY 02) AND LENGTH OF DATA SET NAME. 00023900 MVC S99PRM02,0(DSN) 00024000 SPACE 00024100 * TO DETERMINE LENGTH, COUNT BACK FROM END OF DSNAME. 00024200 * LET D = ADDRESS OF DSNAME TO BE COUNTED, 00024300 * L = LENGTH OF DSNAME. 00024400 * 00024500 LA R10,43(,DSN) R10 = D + 43 --> END OF DSNAME. 00024600 L R14,FWM1 R14 = -1 00024700 LR R15,DSN 00024800 BCTR R15,R0 R15 = D - 1 00024900 SPACE 00025000 B10 CLI 0(R10),C' ' 00025100 BNE B20 R10 = D + L - 1 00025200 BXH R10,R14,B10 R10 = R10 - 1. IF R10 > D - 1, REPEAT. 00025300 SPACE 00025400 LA R15,9 HERE R10 = D - 1, DSNAME IS ALL BLANKS. 00025500 B RETURN RETURN 9 AS ERROR CODE. 00025600 SPACE 00025700 B20 SR R10,R15 R10 = D + L - 1 - (D - 1) = L 00025800 STH R10,S99LEN02 PUT DSNAME LENGTH IN SVC 99 PARAMETERS. 00025900 SPACE 00026000 * SET SPACE UNIT TO CYLINDERS (KEY08), SUPPRESS TRACKS (KEY 07). 00026100 LA R0,S99TUN08 00026200 ST R0,S99TUP08 00026300 SR R0,R0 00026400 ST R0,S99TUP07 00026500 SPACE 00026600 * UNIT (KEY 15). SET TO VALUE REQUIRED FOR DATA SET TYPE. 00026700 L R0,UNITLEN(DST) R6 = DST = 0, 4, 8, 12, 16. 00026800 STH R0,S99LEN15 00026900 L R15,UNITGRPA(DST) 00027000 MVC S99PRM15,0(R15) 00027100 SPACE 00027200 * DDNAME--RETURN GENERATED NAME (KEY 55). SET TO BLANKS. 00027300 MVC S99PRM55,BLANK8 00027400 SPACE 00027500 * MASS STORAGE VOLUME GROUP (KEY 5E). 00027600 C DST,FW4 00027700 BE B30 00027800 C DST,FW12 00027900 BNL B30 00028000 SR R0,R0 NOT MSS. TURN OFF THIS ENTRY. 00028100 ST R0,S99TUP5E 00028200 B B40 00028300 B30 LA R0,S99TUN5E MASS STORAGE. TURN ON ENTRY. 00028400 ST R0,S99TUP5E 00028500 LA R0,6 SET PARM LENGTH TO SIX (DBGG00, ETC.). 00028600 STH R0,S99LEN5E 00028700 EJECT 00028800 * SELECT PROCEDURE FOR SPACE CALCULATION: 00028900 * SECTION C FOR TSO DATA SETS, 00029000 * SECTION D FOR SEISMIC MASS STORAGE DATA SETS, 00029100 * SECTION E FOR SEISMIC DISK DATA SETS. 00029200 SPACE 00029300 B40 B *+4(DST) 00029400 B C00 00029500 B D00 00029600 B E00 00029700 B D00 00029800 B D00 00029900 SPACE 00030000 * SECTION C. SPACE CALCULATIONS FOR TSO FILES. COMPUTE: 00030100 * RECPBLK I4 RECORDS PER BLOCK = BLKSIZ/LRECL, 00030200 * (CHECK THAT BLKSIZ IS A MULTIPLE OF LRECL), 00030300 * NUMBLK I4 NUMBER OF BLOCKS, 00030400 * RECPBLK I4 RECORDS PER BLOCK, 00030500 * NUMTRK I4 NUMBER OF TRACKS, 00030600 * NUMCYL I4 NUMBER OF CYLINDERS, 00030700 * NUMVOL I4 NUMBER OF VOLUMES. 00030800 * 00030900 * THE FOLLOWING ARE GIVEN: 00031000 * LRECL I4 RECORD LENGTH, BYTES (=R4), 00031100 * NREC I4 NUMBER OF RECORDS (=R3), 00031200 * BLKSIZ I4 BLOCK SIZE, BYTES (=R5), 00031300 * TRKSIZ I4 BYTES PER TRACK (TRACK CAPACITY), 00031400 * GAPSIZ I4 BYTES PER RECORD GAP (OVERHEAD), 00031500 * TRKPCYL I4 TRACKS PER CYLINDER, 00031600 * CYLPVOL I4 CYLINDERS PER VOLUME. 00031700 * 00031800 * CALCULATION PROCEDURE: 00031900 * RECPBLK = BLKSIZ/LRECL (EXACT QUOTIENT), 00032000 * NUMBLK = NREC/RECPBLK (ROUNDED UP), 00032100 * 00032200 * TRKSIZ 00032300 * BLKPTRK = --------------- (TRUNCATED), 00032400 * BLKSIZ + GAPSIZ 00032500 * 00032600 * NUMTRK = NUMBLK/BLKPTRK (ROUNDED UP), 00032700 * NUMCYL = NUMTRK/TRKPCYL (ROUNDED UP), 00032800 * NUMVOL = NUMCYL/CYLPVOL (ROUNDED UP). 00032900 * 00033000 * PRIMARY AND SECONDARY SPACE ARE CHOSEN AS FOLLOWS: 00033100 * 00033200 * #VOL PRIMARY SECONDARY 00033300 * ---- ------- -------------- 00033400 * 1 NUMTRK NUMTRK 00033500 * 2 CYL/VOL #CYL - CYL/VOL 00033600 * >2 CYL/VOL CYL/VOL 00033700 EJECT 00033800 * COMPUTE RECPBLK = RECORDS PER BLOCK = BLKSIZ/LRECL, EXACT. 00033900 C00 EQU * DWD1 00034000 LA R15,16 GET ERROR CODE. DWD1 00034100 LA R10,S99PRM02 GET ADDRESS OF DSNAME DWD1 00034200 SR R2,R2 DWD1 00034300 CDWD1 EQU * DWD1 00034400 CLI 0(R10),C'.' CALCULATE LENGTH OF DWD1 00034500 BE CDWD2 DATA SET NAME PREFIX. DWD1 00034600 LA R2,1(R2) DWD1 00034700 LA R10,1(R10) DWD1 00034800 C R2,SEVEN DWD1 00034900 BE RETURN DWD1 00035000 B CDWD1 DWD1 00035100 CDWD2 EQU * DWD1 00035200 A R2,NEGONE SUBTR 1 FOR MOVE INSTR. DWD1 00035300 STC R2,CDWD3+1 DWD1 00035400 LA R10,S99PRM02 DWD1 00035500 MVC DWDNAM(8),BLANK8 INITIALIZE AREA TO BLANKS. DWD1 00035600 CDWD3 MVC DWDNAM(0),0(R10) MOVE NAME INTO CALLING SEQ DWD1 00035700 L R15,AUGVTSO PARM LIST. DWD1 00035800 LA R1,UGVLST DWD1 00035900 BALR R14,R15 VALIDATE PREFIX. DWD1 00036000 LA R15,16 DWD1 00036100 L R2,DWDERIN DWD1 00036200 ST R2,0(ERIN) DWD1 00036300 L R2,DWDERR DWD1 00036400 C R2,ONE DWD1 00036500 BNE RETURN EXIT IF INVALID NAME. DWD1 00036600 LR R10,BLKSIZ 00036700 SRDA R10,32 00036800 DR R10,LRECL 00036900 ST R11,RECPBLK 00037000 SPACE 00037100 * CHECK--IS BLKSIZ A MULTIPLE OF LRECL? 00037200 LTR R10,R10 TEST REMAINDER FROM DIVISION. 00037300 BZ C10 00037400 LA R15,13 NO, EXIT WITH RETURN CODE 13. 00037500 B RETURN 00037600 SPACE 00037700 * COMPUTE NUMBLK, NUMBER OF BLOCKS = NREC/RECPBLK, ROUNDED UP. 00037800 C10 LR R10,NREC 00037900 SRDA R10,32 00038000 D R10,RECPBLK 00038100 LTR R10,R10 ROUND UP. 00038200 BZ *+8 00038300 LA R11,1(,R11) 00038400 ST R11,NUMBLK 00038500 SPACE 00038600 * COMPUTE BLKPTRK = BLOCKS PER TRACK, INTEGER, TRUNCATED. 00038700 L R10,TRKSIZ(DST) R10 = TRACK CAPACITY, BYTES. 00038800 SRDA R10,32 (R10,R11) = TRKSIZ 00038900 L R2,GAPSIZ(DST) R2 = RECORD GAP, BYTES. 00039000 AR R2,BLKSIZ R2 = BLKSIZ + GAPSIZE. 00039100 DR R10,R2 R11 = BLKPTRK, R10 = REMAINDER. 00039200 ST R11,BLKPTRK 00039300 SPACE 00039400 * COMPUTE NUMTRK = NUMBER OF TRACKS = NUMBLK/BLKPTRK. 00039500 L R10,NUMBLK R10 = NUMBLK. 00039600 SRDA R10,32 (R10,R11) = NUMBLK, EVEN-ODD PAIR. 00039700 D R10,BLKPTRK R11 = NUMBLK/BLKPTRK, R11= REMAINDER. 00039800 LTR R10,R10 ROUND UP: ADD 1 IF REMAINDER NOT 0. 00039900 BZ *+8 00040000 LA R11,1(,R11) 00040100 ST R11,NUMTRK 00040200 SPACE 00040300 * COMPUTE NUMCYL = NUMBER OF CYLINDERS = NUMTRK/TRKPCYL. 00040400 L R10,NUMTRK R10 = NUMTRK. 00040500 SRDA R10,32 (R10,R11) = NUMTRK, EVEN-ODD PAIR. 00040600 D R10,TRKPCYL(DST) R11 = NUMTRK/TRKPCYL, R10=REMAINDER. 00040700 LTR R10,R10 ROUND UP. 00040800 BZ *+8 00040900 LA R11,1(,R11) 00041000 ST R11,NUMCYL 00041100 EJECT 00041200 * COMPUTE NUMVOL = NUMBER OF VOLUMES = NUMCYL/CYLPVOL. 00041300 LR R14,R11 R14 = NUMCYL. 00041400 SRDA R14,32 (R14,R15) = NUMCYL, EVEN-ODD PAIR. 00041500 D R14,CYLPVOL(DST) R15 = NUMCYL/CYLPVOL, R14 = REM. 00041600 LTR R14,R14 ROUND UP. 00041700 BZ *+8 00041800 LA R15,1(,R15) 00041900 ST R15,NUMVOL 00042000 STC R15,S99PRM13 SVC 99 VOL. COUNT PARM = 1 BYTE. 00042100 SPACE 00042200 * CHANGE SPACE UNIT FROM CYLINDERS TO TRACKS. 00042300 LA R2,S99TUN07 00042400 ST R2,S99TUP07 00042500 SR R2,R2 00042600 ST R2,S99TUP08 00042700 SPACE 00042800 * SELECT PRIMARY AND SECONDARY SPACE. 00042900 C R15,FW1 00043000 BNE C70 00043100 SPACE 00043200 * ONE VOLUME. 00043300 L R10,NUMTRK 00043400 STCM R10,B'0111',S99PRM0A PRIMARY = NUMTRK. 00043500 STCM R10,B'0111',S99PRM0B SECONDARY = NUMTRK. 00043600 B F00 00043700 SPACE 00043800 * MORE THAN ONE VOLUME. 00043900 C70 L R0,CYLPVOL(DST) CYLPVOL USED IN BOTH CASES, 00044000 C R15,FW2 TWO VOLUMES OR MORE THAN TWO. 00044100 BNE C80 00044200 SPACE 00044300 * TWO VOLUMES. PRIMARY = CYLPVOL, SECONDARY = NUMCYL - CYLPVOL. 00044400 STCM R0,B'0111',S99PRM0A 00044500 SR R11,R0 R11 = NUMCYL - CYLPVOL. 00044600 STCM R11,B'0111',S99PRM0B 00044700 B F00 00044800 SPACE 00044900 * MORE THAN TWO VOLUMES. PRIMARY = SECONDARY = CYLPVOL. 00045000 C80 STCM R0,B'0111',S99PRM0A 00045100 STCM R0,B'0111',S99PRM0B 00045200 B F00 00045300 EJECT 00045400 * SECTION D. SPACE CALCULATIONS FOR SEISMIC MASS STORAGE. COMPUTE: 00045500 * BLKSIZF R4 BYTES PER BLOCK (= FLOAT (BLKSIZ)), 00045600 * NUMBLKF R4 NUMBER OF BLOCKS (= FLOAT (NUMBLK)), 00045700 * BLKPTRKF R4 BLOCKS PER TRACK, 00045800 * NUMTRKF R4 NUMBER OF TRACKS, 00045900 * NUMTRK I4 " 00046000 * NUMCYL I4 NUMBER OF CYLINDERS, 00046100 * NUMVOL I4 NUMBER OF VOLUMES. 00046200 * 00046300 * THE FOLLOWING ARE GIVEN: 00046400 * LRECL I4 RECORD LENGTH, BYTES (=R4), 00046500 * NREC I4 NUMBER OF RECORDS (=R3), 00046600 * BLKSIZ I4 BLOCK SIZE, BYTES (=R5), 00046700 * TRKSIZF R4 BYTES PER TRACK (TRACK CAPACITY), 00046800 * GAPSIZF R4 BYTES PER RECORD GAP (OVERHEAD), 00046900 * TRKPCYL I4 TRACKS PER CYLINDER, 00047000 * CYLPVOL I4 CYLINDERS PER VOLUME (STATISTICAL CHOICE). 00047100 * 00047200 * CALCULATION PROCEDURE: 00047300 * BLKSIZF = BLKSIZ CONVERTED FROM I4 TO R4, 00047400 * NUMBLK = NREC/RECPBLK + 1, 00047500 * NUMBLKF = NUMBLK COMVERTED FROM I4 TO R4, 00047600 * 00047700 * TRKSIZF - GAPSIZF 00047800 * BLKPTRKF = ----------------- (CLOSE APPROXIMATION), 00047900 * BLKSIZF + GAPSIZF 00048000 * 00048100 * NUMTRKF = NUMBLKF/BLKPTRKF, 00048200 * NUMTRK = NUMTRKF CONVERTED FROM R4 TO I4, 00048300 * NUMTRK = NUMTRK + 1, 00048400 * NUMCYL = NUMTRK/TRKPCYL + 1, 00048500 * NUMVOL = NUMCYL/CYLPVOL + 1. 00048600 * 00048700 * PRIMARY AND SECONDARY SPACE, RELEASE PARAMETER, AND 00048800 * MASS STORAGE VOLUME GROUP, ARE CHOSEN AS FOLLOWS: 00048900 * 00049000 * #VOL NUMCYL MSVGP PRIMARY SECONDARY RLSE 00049100 * ---- ------ ------ ------- -------------- ---- 00049200 * 1 1--48* DBGG00 #CYL 0 NO 00049300 * 1 48-200 DBGG01 #CYL 0 YES 00049400 * 2 >200 DBGG02 CYL/VOL #CYL - CYL/VOL YES 00049500 * >2 DBGG02 CYL/VOL CYL/VOL YES 00049600 * 00049700 * *ROUNDED UP TO MULTIPLE OF 8. 00049800 EJECT 00049900 * CONVERT BLKSIZ TO FLOATING POINT BLKSIZF. 00050000 D00 X BLKSIZ,D4EC+4 4E00 0000 8000 0000 00050100 ST BLKSIZ,D4EV+4 4E00 0000 ---- ---- 00050200 LD FR2,D4EV 00050300 SD FR2,D4EC 00050400 STE FR2,BLKSIZF 00050500 L BLKSIZ,SVBLKSIZ 00050600 SPACE 00050700 * COMPUTE NUMBLK, NUMBER OF BLOCKS. 00050800 LR R11,NREC 00050900 ST R11,NUMBLK 00051000 * CONVERT NUMBLK TO FLOATING POINT NUMBLKF. 00051100 X R11,D4EC+4 4E00 0000 8000 0000 00051200 ST R11,D4EV+4 4E00 0000 ---- ---- 00051300 LD FR6,D4EV 00051400 SD FR6,D4EC 00051500 STE FR6,NUMBLKF 00051600 SPACE 00051700 * COMPUTE BLKPTRKF, BLOCKS PER TRACK, FLOATING. 00051800 LE FR0,TRKSIZF(DST) FR0 = BYTES/TRACK = TRACK CAPACITY. 00051900 * LE FR2,BLKSIZF FR2 = BYTES/BLOCK FROM CONVERSION. 00052000 LE FR4,GAPSIZF(DST) FR4 = BYTES PER RECORD GAP. 00052100 SER FR0,FR4 FR0 = TRKSIZF - GAPSIZF. 00052200 AER FR2,FR4 FR2 = BLKSIZF + GAPSIZF. 00052300 DER FR0,FR2 FR0 = BLKPTRKF = FR0/FR2. 00052400 STE FR0,BLKPTRKF 00052500 SPACE 00052600 * COMPUTE NUMTRKF, NUMBER OF TRACKS, FLOATING. 00052700 * LE FR6,NUMBLKF FR6 = NUM. BLOCKS, FROM CONVERSION. 00052800 * LE FR0,BLKPTRKF FR0 = BLOCKS/TRACK FROM CALCULATION. 00052900 DER FR6,FR0 FR6 = NUMTRKF = NUMBLKF/BLKPTRKF. 00053000 STE FR6,NUMTRKF 00053100 SPACE 00053200 * CONVERT NUMTRKF TO NUMTRK, NUMBER OF TRACKS, INTEGER. 00053300 SDR FR0,FR0 00053400 LE FR0,NUMTRKF 00053500 AD FR0,D4F08 4F08 0000 0000 0000 00053600 STD FR0,DTEMP 00053700 L R10,DTEMP+4 R10 = NUMTRK. 00053800 LA R10,1(,R10) R10 = NUMTRK + 1. 00053900 ST R10,NUMTRK 00054000 SPACE 00054100 * COMPUTE NUMCYL, NUMBER OF CYLINDERS, INTEGER. 00054200 * L R10,NUMTRK R10 = NUMTRK FROM CONVERSION ABOVE. 00054300 SRDA R10,32 (R10,R11) = NUMTRK, EVEN-ODD PAIR. 00054400 D R10,TRKPCYL(DST) R11 = NUMTRK/TRKPCYL, R10=REMAINDER. 00054500 LTR R10,R10 ROUND UP. 00054600 BZ D30 00054700 LA R11,1(,R11) 00054800 D30 ST R11,NUMCYL 00054900 EJECT 00055000 * COMPUTE NUMVOL, NUMBER OF VOLUMES, INTEGER. 00055100 LR R14,R11 R14 = NUMCYL. 00055200 SRDA R14,32 (R14,R15) = NUMCYL, EVEN-ODD PAIR. 00055300 D R14,CYLPVOL(DST) R15 = NUMCYL/CYLPVOL, R14 = REM. 00055400 LTR R14,R14 ROUND UP. 00055500 BZ D40 00055600 LA R15,1(,R15) 00055700 D40 ST R15,NUMVOL 00055800 STC R15,S99PRM13 SVC 99 VOL. COUNT PARM = 1 BYTE. 00055900 SPACE 00056000 * SELECT PRIMARY AND SECONDARY SPACE, RELEASE, AND MSVGP. 00056100 C R15,FW1 00056200 BNE D70 00056300 SPACE 00056400 * ONE VOLUME. 00056500 STCM R11,B'0111',S99PRM0A PRIMARY = NUMCYL. 00056600 LA R10,1 00056700 STCM R10,B'0111',S99PRM0B SECONDARY = 1. 00056800 SPACE 00056900 C R11,FW48 00057000 BH D60 00057100 MVC S99PRM5E,DBGG00 NUMCYL .LE. 48: 00057200 SR R10,R10 00057300 D R10,FW8 00057400 LTR R10,R10 MAKE NUMCYL A MULTIPLE OF 8. 00057500 BZ D100 00057600 LA R11,1(,R11) 00057700 M R10,FW8 00057800 STCM R11,B'0111',S99PRM0A 00057900 B D100 00058000 * NUMCYL .GT. 48 (AND .LE. 200): 00058100 D60 MVC S99PRM5E,DBGG01 MASS STORAGE VOL GRP = DBGG01. 00058200 B D100 RELEASE ON, SECONDARY = 1. 00058300 SPACE 00058400 * MORE THAN ONE VOLUME. 00058500 D70 MVC S99PRM5E,DBGG02 MSVGP = DBGG02. 00058600 L R0,CYLPVOL(DST) CYLPVOL USED IN BOTH CASES, 00058700 C R15,FW2 TWO VOLUMES OR MORE THAN TWO. 00058800 BNE D80 00058900 SPACE 00059000 * TWO VOLUMES. PRIMARY = CYLPVOL, SECONDARY = NUMCYL - CYLPVOL. 00059100 STCM R0,B'0111',S99PRM0A 00059200 SR R11,R0 R11 = NUMCYL - CYLPVOL. 00059300 STCM R11,B'0111',S99PRM0B 00059400 B D100 00059500 SPACE 00059600 * MORE THAN TWO VOLUMES. PRIMARY = SECONDARY = CYLPVOL. 00059700 D80 STCM R0,B'0111',S99PRM0A 00059800 STCM R0,B'0111',S99PRM0B 00059900 * 00060000 * NOW CHECK TO SEE IF MSS GROUP SHOULD BE CHANGE TO 3 OR 4 00060100 * 00060200 D100 C DST,FW12 00060300 BNE D110 00060400 MVC S99PRM5E,DBGG03 MSVGP = DBGG03. 00060500 B F00 00060600 D110 C DST,FW16 00060700 BNE F00 00060800 MVC S99PRM5E,DBGG04 MSVGP = DBGG04. 00060900 B F00 00061000 EJECT 00061100 * SECTION E. SPACE CALCULATIONS FOR SEISMIC DISK. COMPUTE: 00061200 * NUMBLK I4 NUMBER OF BLOCKS, 00061300 * BLKPTRK I4 BLOCKS PER TRACK, 00061400 * NUMTRK I4 NUMBER OF TRACKS, 00061500 * NUMCYL I4 NUMBER OF CYLINDERS, 00061600 * NUMVOL I4 NUMBER OF VOLUMES. 00061700 * 00061800 * THE FOLLOWING ARE GIVEN: 00061900 * LRECL I4 RECORD LENGTH, BYTES (=R4), 00062000 * NREC I4 NUMBER OF RECORDS (=R3), 00062100 * BLKSIZ I4 BLOCK SIZE, BYTES (=R5), 00062200 * TRKSIZ I4 BYTES PER TRACK (TRACK CAPACITY), 00062300 * GAPSIZ I4 BYTES PER RECORD GAP (OVERHEAD), 00062400 * TRKPCYL I4 TRACKS PER CYLINDER, 00062500 * CYLPVOL I4 CYLINDERS PER VOLUME (STATISTICAL CHOICE). 00062600 * 00062700 * CALCULATION PROCEDURE: 00062800 * NUMBLK = NREC 00062900 * 00063000 * TRKSIZ 00063100 * BLKPTRK = ----------------- (CLOSE APPROXIMATION), 00063200 * BLKSIZ + GAPSIZ 00063300 * 00063400 * NUMTRK = NUMBLK/BLKPTRK, 00063500 * NUMTRK = NUMTRK + 1, 00063600 * NUMCYL = NUMTRK/TRKPCYL + 1, 00063700 * NUMVOL = NUMCYL/CYLPVOL + 1. 00063800 * 00063900 * PRIMARY AND SECONDARY SPACE ARE CHOSEN AS FOLLOWS: 00064000 * 00064100 * #VOL PRIMARY SECONDARY RLSE 00064200 * ---- ------- -------------- ---- 00064300 * 1 #CYL #CYL YES 00064400 * 2 CYL/VOL #CYL - CYL/VOL " 00064500 * >2 CYL/VOL CYL/VOL " 00064600 EJECT 00064700 * COMPUTE NUMBLK, NUMBER OF BLOCKS. 00064800 E00 LR R10,NREC NUMBLK = NREC. 00064900 ST R10,NUMBLK 00065000 SPACE 00065100 * COMPUTE BLKPTRK, BLOCKS PER TRACK. 00065200 L R0,TRKSIZ(DST) R0 = BYTES/TRACK = TRACK CAPACITY. 00065300 SRDA R0,32 (R0,R1) = TRKSIZ, EVEN-ODD PAIR. 00065400 L R2,GAPSIZ(DST) R2 = BYTES PER RECORD GAP. 00065500 AR R2,BLKSIZ R2 = BLKSIZ + GAPSIZ. 00065600 DR R0,R2 R1 = BLKPTRK. 00065700 ST R1,BLKPTRK 00065800 SPACE 00065900 * COMPUTE NUMTRK, NUMBER OF TRACKS. 00066000 * L R10,NUMBLK R10 = NUM. BLOCKS. 00066100 SRDA R10,32 (R10,R11) = NUMBLK, EVEN-ODD PAIR. 00066200 DR R10,R1 R7 = NUMTRK = NUMBLK/BLKPTRK. 00066300 LA R11,1(,R11) R11 = NUMTRK + 1. 00066400 ST R11,NUMTRK 00066500 SPACE 00066600 * COMPUTE NUMCYL, NUMBER OF CYLINDERS, INTEGER. 00066700 SR R10,R10 (R10,R11) = NUMTRK, EVEN-ODD PAIR. 00066800 D R10,TRKPCYL(DST) R11 = NUMTRK/TRKPCYL, R10=REMAINDER. 00066900 LA R11,1(,R11) R11 = NUMCYL + 1 00067000 ST R11,NUMCYL 00067100 EJECT 00067200 * COMPUTE NUMVOL, NUMBER OF VOLUMES, INTEGER. 00067300 LR R14,R11 R14 = NUMCYL. 00067400 SRDA R14,32 (R14,R15) = NUMCYL, EVEN-ODD PAIR. 00067500 D R14,CYLPVOL(DST) R15 = NUMCYL/CYLPVOL, R14 = REM. 00067600 LA R15,1(,R15) R15 = NUMVOL + 1 00067700 ST R15,NUMVOL 00067800 STC R15,S99PRM13 SVC 99 VOL. COUNT PARM = 1 BYTE. 00067900 SPACE 00068000 * SELECT PRIMARY AND SECONDARY SPACE. 00068100 C R15,FW1 00068200 BNE E70 00068300 SPACE 00068400 * ONE VOLUME. 00068500 STCM R11,B'0111',S99PRM0A PRIMARY = SECONDARY = NUMCYL. 00068600 STCM R11,B'0111',S99PRM0B 00068700 B F00 00068800 SPACE 00068900 * MORE THAN ONE VOLUME. 00069000 E70 L R0,CYLPVOL(DST) CYLPVOL USED IN BOTH CASES, 00069100 C R15,FW2 TWO VOLUMES OR MORE THAN TWO. 00069200 BNE E80 00069300 SPACE 00069400 * TWO VOLUMES. PRIMARY = CYLPVOL, SECONDARY = NUMCYL - CYLPVOL. 00069500 STCM R0,B'0111',S99PRM0A 00069600 SR R11,R0 R11 = NUMCYL - CYLPVOL. 00069700 STCM R11,B'0111',S99PRM0B 00069800 B F00 00069900 SPACE 00070000 * MORE THAN TWO VOLUMES. PRIMARY = SECONDARY = CYLPVOL. 00070100 E80 STCM R0,B'0111',S99PRM0A 00070200 STCM R0,B'0111',S99PRM0B 00070300 B F00 00070400 SPACE 3 00070500 * SECTION F. EXECUTE SVC 230 FOR ALLOCATION. 00070600 * RETURN ERROR AND INFORMATION CODES TO CALLER. 00070700 * 00070800 F00 EQU * 00070900 L R0,SVCROUT SVC 230 ROUTER CODE 00071000 LA R1,S99RBPTR R1 POINTS TO REQUEST BLOCK POINTER. 00071100 SVC 230 DYNAMIC ALLOCATION CALL 00071200 L R0,S99ERROR 00071300 ST R0,0(,ERIN) ERROR AND INFO. FROM SVC 99. 00071400 LTR R15,R15 00071500 BZ G00 00071600 SRA R15,2 TRANSFORM CODES 4, 8, 12 00071700 LA R15,1(,R15) TO 2, 3, 4. 00071800 B RETURN 00071900 EJECT 00072000 * SECTION G. OBTAIN STORAGE FOR DATA CONTROL BLOCK, 00072100 * MOVE MODEL DCB TO AREA OBTAINED, 00072200 * PLACE DDNAME CREATED BY SYSTEM IN DCB, 00072300 * PLACE RECORD LENGTH AND BLOCK SIZE IN DCB. 00072400 SPACE 00072500 G00 L R11,DCBLEN(DST) GET STORAGE FOR SEISMIC DCB. 00072600 GETMAIN RC,LV=(R11) 00072700 LTR R15,R15 0 = OK, 00072800 BZ G10 4 = NO STORAGE ALLOCATED. 00072900 LA R15,6 GETMAIN FAILED. 00073000 B RETURN USE ERROR RETURN CODE 6. 00073100 SPACE 00073200 G10 LR R8,R1 R1 = ADDRESS OF AREA OBTAINED. 00073300 L R10,DCBADDR(DST) MOVE DCB TO AREA. 00073400 LR R9,R11 R10 = SOURCE, R8 = DESTINATION, 00073500 MVCL R8,R10 R11 = R9 = LENGTH OF MOVE. 00073600 LA R8,8(,R1) ADJUST R8 TO DCB ADDRESS. 00073700 ST R8,0(,DCBAD) RETURN DCB ADDRESS TO CALLER. 00073800 STH LRECL,DCBLRECL MOVE RECORD LENGTH TO DCB. 00073900 STH BLKSIZ,DCBBLKSI MOVE BLOCK SIZE TO DCB. 00074000 MVC DCBDDNAM,S99PRM55 MOVE GENERATED DDNAME TO DCB. 00074100 LA R15,1 NORMAL RETURN CODE. 00074200 SPACE 3 00074300 L ERR,SVERR 00074400 RETURN ST R15,0(,ERR) SEND RETURN CODE TO CALLER. 00074500 **************** ADDRESSING RETURN ****************** EXT 00074600 L R5,RETADD EXT 00074700 BSM 0,R5 EXT 00074800 RETURNIT DS 0H EXT 00074900 L R13,SAVE+4 00075000 LM R0,R12,20(R13) LEAVE RETURN CODE IN R15. 00075100 L R14,12(,R13) 00075200 MVI 12(R13),X'FF' 00075300 BR R14 00075400 EJECT 00075500 * REQUEST BLOCK AND PARAMETER TABLE FOR SVC 99. 00075600 * R1 POINTS TO S99RBPTR. 00075700 S99RBPTR DS 0F 00075800 DC X'80',AL3(S99RB) POINTER TO REQUEST BLOCK. 00075900 S99RB EQU * 00076000 S99RBLN DC X'14' 0 SVC 99 REQUEST BLOCK LENGTH = 20. 00076100 S99VERB DC X'01' 1 SVC 99 VERB, ALLOCATE. 00076200 S99FLAG1 DC X'0000' 2 SVC 99 FLAGS 1 (NONE NEEDED). 00076300 S99ERROR DC X'0000' 4 SVC 99 ERROR RETURN. 00076400 S99INFO DC X'0000' 6 SVC 99 INFORMATION RETURN. 00076500 S99TXTPP DC A(S99TUPL) 8 POINTS TO TEXT POINTERS. 00076600 S99RESV DC F'0' 12 RESERVED. 00076700 S99FLAG2 DC X'01000000' 16 SVC 99 FLAGS 2 (AUTHORIZED PROGRAMS). 00076800 S99TUPL EQU * 00076900 S99TUP02 DC A(S99TUN02) DATA SET NAME. 00077000 S99TUP04 DC A(S99TUN04) STATUS. 00077100 S99TUP05 DC A(S99TUN05) DISPOSITION. 00077200 S99TUP07 DC A(S99TUN07) SPACE ALLOCATION BY TRACKS. 00077300 S99TUP08 DC A(S99TUN08) SPACE ALLOCATION BY CYLINDERS. 00077400 S99TUP0A DC A(S99TUN0A) PRIMARY SPACE ALLOCATION. 00077500 S99TUP0B DC A(S99TUN0B) SECONDARY SPACE ALLOCATION. 00077600 S99TUP0D DC A(S99TUN0D) RELEASE OF SPACE SPECIFIED. 00077700 S99TUP13 DC A(S99TUN13) VOLUME COUNT. 00077800 S99TUP15 DC A(S99TUN15) UNIT. 00077900 S99TUP17 DC A(S99TUN17) PARALLEL MOUNT SPECIFIED. 00078000 S99TUP55 DC A(S99TUN55) RETURN OF DDNAME REQUESTED. 00078100 S99TUP5E DC A(S99TUN5E) MASS STORAGE VOLUME GROUP (MSVGP). 00078200 DC X'80',AL3(0) END OF LIST. 00078300 SPACE 00078400 S99TUN02 DS 0H 00078500 S99KEY02 DC X'0002' TEXT UNIT KEY FOR DATA SET NAME. 00078600 S99NUM02 DC X'0001' NUMBER OF PARAMETERS = 1. 00078700 S99LEN02 DC X'0044' LENGTH OF PARAMETER = 44 MAXIMUM. 00078800 S99PRM02 DC CL44' ' DATA SET NAME. 00078900 SPACE 00079000 S99TUN04 DS 0H 00079100 S99KEY04 DC X'0004' TEXT UNIT KEY FOR STATUS. 00079200 S99NUM04 DC X'0001' NUMBER OF PARAMETERS = 1. 00079300 S99LEN04 DC X'0001' LENGTH OF PARAMETER = 1. 00079400 S99PRM04 DC X'04' CODE FOR STATUS = NEW. 00079500 SPACE 00079600 S99TUN05 DS 0H 00079700 S99KEY05 DC X'0005' TEXT UNIT KEY FOR DISPOSITION. 00079800 S99NUM05 DC X'0001' NUMBER OF PARAMETERS = 1. 00079900 S99LEN05 DC X'0001' LENGTH OF PARAMETER = 1. 00080000 S99PRM05 DC X'02' CODE FOR DISPOSITION = CATALOG. 00080100 SPACE 00080200 S99TUN07 DS 0H 00080300 S99KEY07 DC X'0007' TEXT UNIT KEY FOR SPACE BY TRACKS. 00080400 S99NUM07 DC X'0000' NUMBER OF PARAMETERS = 0. 00080500 EJECT 00080600 S99TUN08 DS 0H 00080700 S99KEY08 DC X'0008' TEXT UNIT KEY FOR SPACE BY CYLINDERS. 00080800 S99NUM08 DC X'0000' NUMBER OF PARAMETERS = 0. 00080900 SPACE 00081000 S99TUN0A DS 0H 00081100 S99KEY0A DC X'000A' TEXT UNIT KEY FOR PRIMARY SPACE. 00081200 S99NUM0A DC X'0001' NUMBER OF PARAMETERS = 1. 00081300 S99LEN0A DC X'0003' LENGTH OF PARAMETER = 3. 00081400 S99PRM0A DC X'000000' PRIMARY QUANTITY. 00081500 SPACE 00081600 S99TUN0B DS 0H 00081700 S99KEY0B DC X'000B' TEXT UNIT KEY FOR SECONDARY SPACE. 00081800 S99NUM0B DC X'0001' NUMBER OF PARAMETERS = 1. 00081900 S99LEN0B DC X'0003' LENGTH OF PARAMETER = 3. 00082000 S99PRM0B DC X'000000' SECONDARY QUANTITY. 00082100 SPACE 00082200 S99TUN0D DS 0H 00082300 S99KEY0D DC X'000D' TEXT UNIT KEY FOR RELEASE OF SPACE. 00082400 S99NUM0D DC X'0000' NUMBER OF PARAMETERS = 0. 00082500 SPACE 00082600 S99TUN13 DS 0H 00082700 S99KEY13 DC X'0013' TEXT UNIT KEY FOR VOLUME COUNT. 00082800 S99NUM13 DC X'0001' NUMBER OF PARAMETERS = 1. 00082900 S99LEN13 DC X'0001' LENGTH OF PARAMETER = 1. 00083000 S99PRM13 DC X'00' VOLUME COUNT. 00083100 SPACE 00083200 S99TUN15 DS 0H 00083300 S99KEY15 DC X'0015' TEXT UNIT KEY FOR UNIT. 00083400 S99NUM15 DC X'0001' NUMBER OF PARAMETERS = 1. 00083500 S99LEN15 DC X'0000' LENGTH OF PARAMETER = 8 MAXIMUM. 00083600 S99PRM15 DC CL8' ' UNIT GROUP NAME. 00083700 SPACE 00083800 S99TUN17 DS 0H 00083900 S99KEY17 DC X'0017' TEXT UNIT KEY FOR PARALLEL MOUNTING. 00084000 S99NUM17 DC X'0000' NUMBER OF PARAMETERS = 0. 00084100 SPACE 00084200 S99TUN55 DS 0H 00084300 S99KEY55 DC X'0055' TEXT UNIT KEY FOR DDNAME RETURN. 00084400 S99NUM55 DC X'0001' NUMBER OF PARAMETERS = 1. 00084500 S99LEN55 DC X'0008' MAXIMUM LENGTH OF PARAMETER = 8. 00084600 S99PRM55 DC CL8' ' DDNAME RETURNED HERE. INIT. VAL. = BLANKS. 00084700 SPACE 00084800 S99TUN5E DS 0H 00084900 S99KEY5E DC X'005E' TEXT UNIT KEY FOR MASS STORAGE VOL. GROUP. 00085000 S99NUM5E DC X'0001' NUMBER OF PARAMETERS = 1. 00085100 S99LEN5E DC X'0000' MAXIMUM LENGTH OF PARAMETER = 8. 00085200 S99PRM5E DC CL8' ' NAME OF MSVGP. 00085300 EJECT 00085400 * VARIABLES COMPUTED FOR SPACE ALLOCATION. 00085500 * LISTED IN ALPHABETICAL ORDER. 00085600 * STARRED NAMES NOT STORED HERE--HELD IN REGISTERS ONLY. 00085700 * INITIALLY, ALL VARIABLES STORED FOR TESTING. 00085800 BLKPTRK DC F'0' BLOCKS PER TRACK, INTEGER. 00085900 BLKPTRKF DC E'0.0' " , FLOATING POINT. 00086000 BLKSIZF DC E'0.0' BLOCK SIZE, FLOATING POINT. 00086100 NUMBLK DC F'0' NUMBER OF BLOCKS, INTEGER. 00086200 NUMBLKF DC E'0.0' " , FLOATING POINT. 00086300 NUMCYL DC F'0' NUMBER OF CYLINDERS. 00086400 NUMTRK DC F'0' NUMBER OF TRACKS, INTEGER. 00086500 NUMTRKF DC E'0.0' " , FLOATING POINT. 00086600 NUMVOL DC F'0' NUMBER OF VOLUMES. 00086700 RECPBLK DC F'0' RECORDS PER BLOCK. 00086800 SPACE 00086900 * PARAMETERS AND CONSTANTS GIVEN FOR SPACE CALCULATION. 00087000 SPACE 00087100 * CYLINDERS PER VOLUME (STATISTICAL CHOICE). INDEX = DST. 00087200 CYLPVOL DC F'260' TSO, ETC. ) COMPARE WITH 00087300 DC F'200' SEISMIC MSS. ) TABLE IN 00087400 DC F'260' SEISMIC DISK. ) PTABMSTR. 00087500 DC F'200' SEISMIC MSS.DBGG03) 00087600 DC F'200' SEISMIC MSS.DBGG04) 00087700 SPACE 00087800 * BYTES PER RECORD GAP(OVERHEAD). INDEX=DST=0, 4, 8, 12, 16. 00087900 GAPSIZ DC F'492' TSO, ETC. 00088000 DC F'135' SEISMIC MSS. 00088100 DC F'492' SEISMIC DISK. 00088200 DC F'135' SEISMIC MSS.DBGG03 00088300 DC F'135' SEISMIC MSS.DBGG04 00088400 SPACE 00088500 GAPSIZF DC E'492.0' TSO, ETC. INDEX=DST=0, 4, 8, 12, 16. 00088600 DC E'135.0' SEISMIC MSS. 00088700 DC E'492.0' SEISMIC DISK. 00088800 DC E'135.0' SEISMIC MSS.DBGG03 00088900 DC E'135.0' SEISMIC MSS.DBGG04 00089000 SPACE 00089100 * TRACKS PER CYLINDER. INDEX=DST=0, 4, 8, 12, 16. 00089200 TRKPCYL DC F'15' TSO, ETC. 00089300 DC F'19' SEISMIC MSS. 00089400 DC F'15' SEISMIC DISK. 00089500 DC F'19' SEISMIC MSS.DBGG03 00089600 DC F'19' SEISMIC MSS.DBGG04 00089700 SPACE 00089800 * BYTES PER TRACK (TRACK CAPACITY). INDEX=DST=0, 4, 8, 12, 16. 00089900 TRKSIZ DC F'47968' TSO, ETC. 00090000 DC F'13165' SEISMIC MSS. 00090100 DC F'47968' SEISMIC DISK. 00090200 DC F'13165' SEISMIC MSS.DBGG03 00090300 DC F'13165' SEISMIC MSS.DBGG04 00090400 SPACE 00090500 TRKSIZF DC E'47968.0' TSO, ETC. INDEX=DST=0, 4, 8, 12, 16. 00090600 DC E'13165.0' SEISMIC MSS. 00090700 DC E'47968.0' SEISMIC DISK. 00090800 DC E'13165.0' SEISMIC MSS.DBGG03 00090900 DC E'13165.0' SEISMIC MSS.DBGG04 00091000 SPACE 00091100 EJECT 00091200 * CONSTANTS USED IN SETTING VALUES IN SVC 99 PARAMETER TABLE. 00091300 DBGG00 DC CL8'DBGG00' 00091400 DBGG01 DC CL8'DBGG01' 00091500 DBGG02 DC CL8'DBGG02' 00091600 DBGG03 DC CL8'DBGG03' 00091700 DBGG04 DC CL8'DBGG04' 00091800 SPACE 00091900 UNITGRPA DC A(UNITGRP) INDEX=DST=0, 4, 8, 12, 16 00092000 DC A(UNITGRP+8) 00092100 DC A(UNITGRP+16) 00092200 DC A(UNITGRP+24) 00092300 DC A(UNITGRP+32) 00092400 SPACE 00092500 UNITGRP DC CL8'TSODA' 00092600 DC CL8'3330V' 00092700 DC CL8'TSODA' 00092800 DC CL8'3330V' 00092900 DC CL8'3330V' 00093000 SPACE 00093100 UNITLEN DC F'6' INDEX=DST=0, 4, 8, 12, 16. 00093200 DC F'5' 00093300 DC F'8' 00093400 DC F'5' 00093500 DC F'5' 00093600 SPACE 3 00093700 * DOUBLE-WORD CONSTANTS AND VARIABLES. 00093800 DS 0D 00093900 BLANK8 DC CL8' ' 00094000 DTEMP DC D'0' 00094100 D4EC DC XL8'4E00000080000000' USED IN I4 TO R4 CONVERSION. 00094200 D4EV DC XL8'4E00000000000000' " 00094300 D4F08 DC XL8'4F08000000000000' USED IN R4 TO I4 CONVERSION. 00094400 SPACE 00094500 * FULLWORD CONSTANTS AND VARIABLES. 00094600 FWM1 DC F'-1' 00094700 FW1 DC F'1' 00094800 FW2 DC F'2' 00094900 FW3 DC F'3' 00095000 FW4 DC F'4' 00095100 FW5 DC F'5' 00095200 FW8 DC F'8' 00095300 FW12 DC F'12' 00095400 FW16 DC F'16' 00095500 FW48 DC F'48' 00095600 FW32760 DC F'32760' 00095700 SVBLKSIZ DC F'0' 00095800 SVERR DC F'0' 00095900 SPACE 00096000 * CONSTANTS ADDED FOR VERIFYING DATA SET NAME PREFIX. DWD1 00096100 UGVLST DC AL4(DWDNAM) DWD1 00096200 DC AL4(DWDERR) DWD1 00096300 DC X'80' DWD1 00096400 DC AL3(DWDERIN) DWD1 00096500 * DWD1 00096600 DWDNAM DS 2F DWD1 00096700 DWDERR DS F DWD1 00096800 DWDERIN DS F DWD1 00096900 * DWD1 00097000 NEGONE DC F'-1' DWD1 00097100 ONE DC F'1' DWD1 00097200 SEVEN DC F'7' DWD1 00097300 AUGVTSO DC V(UGVTSO) DWD1 00097400 * DWD1 00097500 SPACE 00097600 SAVE DC 18F'0' 00097700 DS 0F 00097800 SVCROUT DC H'0',C'01' 00097900 EJECT 00098000 PRINT NOGEN 00098100 * DATA CONTROL BLOCKS--MODELS TO BE MOVED TO GETMAIN AREA. 00098200 * TWO CONTROL WORDS PRECEDE THE DCB. 00098300 * FIRST WORD CONTAINS LENGTH OF GETMAIN AREA. 00098400 * SECOND WORD NOT USED AT THIS TIME (5-28-82). 00098500 SPACE 00098600 DCBLEN DC A(QSAMFB2-QSAMFB1) TSO, ETC. 00098700 DC A(QSAMUT2-QSAMUT1) SEISMIC MSS. 00098800 DC A(QSAMUT2-QSAMUT1) SEISMIC DISK (SAME AS MSS). 00098900 DC A(QSAMUT2-QSAMUT1) SEISMIC MSS.DBGG03 00099000 DC A(QSAMUT2-QSAMUT1) SEISMIC MSS.DBGG04 00099100 SPACE 00099200 DCBADDR DC A(QSAMFB1) TSO, ETC. 00099300 DC A(QSAMUT1) SEISMIC MSS. 00099400 DC A(QSAMUT1) SEISMIC DISK (SAME AS MSS). 00099500 DC A(QSAMUT1) SEISMIC MSS.DBGG03 00099600 DC A(QSAMUT1) SEISMIC MSS.DBGG04 00099700 SPACE 00099800 DS 0D 00099900 QSAMFB1 DC A(QSAMFB2-QSAMFB1) QSAM DCB FOR TSO, ETC. 00100000 DC CL4'QSFB' 00100100 DCB DDNAME=QSAMFBDD, -00100200 DSORG=PS, -00100300 MACRF=(GM,PM), -00100400 RECFM=FB 00100500 QSAMFB2 EQU * 00100600 SPACE 00100700 DS 0D 00100800 QSAMUT1 DC A(QSAMUT2-QSAMUT1) QSAM DCB, FOR SEISMIC MSS/DISK. 00100900 DC CL4'QSUT' 00101000 DCB DDNAME=QSAMUTDD, -00101100 DSORG=PS, -00101200 MACRF=(GM,PM), -00101300 RECFM=UT 00101400 QSAMUT2 EQU * 00101500 SPACE 00101600 PRINT NOGEN 00101700 DCBD DSORG=PS,DEVD=DA 00101800 SPACE 00101900 END 00102000