How to reduce very large allocation amounts for non-LARGE data sets so that the 4GB limit per volume is not exceeded. Additional benefit is that storage groups are not "swamped" with multiple large allocation amounts?
4 GB is the MVS space limit for non-LARGE data sets per volume. 4 GB computes to 65,535 tracks or 4,369 cylinders.
When the total size of a non-LARGE data set on a volume will exceed the 4GB limit, Allocate has to close the allocation on that volume and extend to another volume with the ASR logic in the EOV or EOV_VSAM environments.
When the PRI and SEC values are very large, such as CYL,(1500,1000), these large allocation amounts - especially multiples of them in a step or multiple jobs - can "swamp" a storage group.
Large PRI-SEC amounts can also cause that the full 4GB limit per volume will not be utilized so the data set(s) will span more volumes than needed. The Reduce To Fit variables listed in these ASR examples (SET &RB and SET &MP) will help improve volume utilization.
The following ASR code can be added in the ALLOC environment that will adjust the size of PRI and SEC to more manageable sizes if the potential size would exceed the 4GB limit per volume.
/* ---------------------------------------------------------------- */ /* THIS WILL SET PRI AND SEC TO 1/16 OF MVS LIMIT (4GB) */ /* ---------------------------------------------------------------- */ IF &DSNTYPE NE 'LARGE' AND &MAXSIZE > 65535 AND &SPACTYPE = 'TRK' THEN DO SET &PRIMARY = 4095 SET &SECONDARY = 4095 WRITE 'TOTAL ALLOCATION AMOUNT COULD EXCEED 4GB LIMIT' WRITE 'ALLOCATION CHANGED TO: PRI = &PRI SEC = &SEC' END IF &DSNTYPE NE 'LARGE' AND &MAXSIZE > 4369 AND &SPACTYPE = 'CYL' THEN DO SET &PRIMARY = 273 SET &SECONDARY = 273 WRITE 'TOTAL ALLOCATION AMOUNT COULD EXCEED 4GB LIMIT' WRITE 'ALLOCATION CHANGED TO: PRI = &PRI SEC = &SEC' END SET &RB = 10 SET &MP = 25 /* ---------------------------------------------------------------- */
The following ASR code can be added in the DEFINE environment that will adjust the size of PRI & SEC or PDC & SDC to more manageable sizes if the potential size would exceed the 4GB limit per volume.
/* ---------------------------------------------------------------- */ /* THIS WILL SET PRI AND SEC TO 1/16 OF MVS LIMIT (4GB) */ /* ---------------------------------------------------------------- */ IF &DSNTYPE NE 'LARGE' AND &PRI > 0 AND &SPACTYPE = 'TRK' AND &PRI + (&SEC * 15) > 65535 THEN DO SET &PRI = 4095 SET &SEC = 4095 WRITE 'TOTAL ALLOCATION AMOUNT COULD EXCEED 4GB LIMIT' WRITE 'ALLOCATION CHANGED TO: PRI = &PRI SEC = &SEC' END IF &DSNTYPE NE 'LARGE' AND &PDC > 0 AND &SPACTYPED = 'TRK' AND &PDC + (&SDC * 15) > 65535 THEN DO SET &PDC = 4095 SET &SDC = 4095 WRITE 'TOTAL ALLOCATION AMOUNT COULD EXCEED 4GB LIMIT' WRITE 'ALLOCATION CHANGED TO: PRI = &PDC SEC = &SDC' END /* - - - - - - - - - - - - - - - - - - - - - - */ IF &DSNTYPE NE 'LARGE' AND &PRI > 0 AND &SPACTYPE = 'CYL' AND &PRI + (&SEC * 15) > 4369 THEN DO SET &PRI = 273 SET &SEC = 273 WRITE 'TOTAL ALLOCATION AMOUNT COULD EXCEED 4GB LIMIT' WRITE 'ALLOCATION CHANGED TO: PRI = &PRI SEC = &SEC' END IF &DSNTYPE NE 'LARGE' AND &PDC > 0 AND &SPACTYPED = 'CYL' AND &PDC + (&SDC * 15) > 4369 THEN DO SET &PDC = 273 SET &SDC = 273 WRITE 'TOTAL ALLOCATION AMOUNT COULD EXCEED 4GB LIMIT' WRITE 'ALLOCATION CHANGED TO: PRI = &PDC SEC = &SDC' END SET &RB = 10 SET &MP = 25 /* ---------------------------------------------------------------- */