Controlled reduction of primary space (PRIM_REDUCE)
The PRIM_REDUCE function helps avoid JOB FAILED-JCL errors that occur due to insufficient space for a primary allocation.
Out-of-space conditions can occur for primary allocations when a job requests allocation for a new data set and the primary space is not available on the requested volume. When an out-of-space condition occurs for a primary allocation, the PRIM_REDUCE function reduces the original allocation by a user-specified amount, up to a maximum value, until the allocation is successful.
The PRIM_REDUCE keyword specifies whether to reduce the primary allocation when an out-of-space condition occurs.
Syntax
PRIM_REDUCE=(ENABLE|DISABLE, ENABLE|DISABLE)
Operands
The first operand applies to the primary allocation on the first volume. The following values are valid:
- ENABLE
- Reduce the primary allocation when an out-of-space condition occurs.
- DISABLE
- Do not reduce the primary allocation when an out-of-space condition occurs.
The second operand applies to the first allocation on the second and subsequent volumes. The following values are valid:
- ENABLE
- Reduce the primary allocation when an out-of-space condition occurs.
- DISABLE
- Do not reduce the primary allocation when an out-of-space condition occurs.
Default
DISABLE, DISABLE
Environments
ALLOCATE and EXTEND.
Usage and processing considerations
- You must set PRIM_REDUCE_INC to a nonzero value to implement the function.
- For the PRIM_REDUCE function initial allocation (the first set
of PRIM_REDUCE operands), Advanced Allocation Management uses
the amount specified by PRIM_REDUCE_INC to continue reducing the allocation
until it is successful or the limit that is specified by PRIM_REDUCE_LIM
is reached.
For PRIM_REDUCE non-initial allocations (the second set of PRIM_REDUCE operands), Advanced Allocation Management evaluates the amount of available freespace and reduces the allocation to that value or the PRIM_REDUCE_LIM value, whichever is greater.
- The PRIM_REDUCE, PRIM_REDUCE_INC, and PRIM_REDUCE_LIM keywords are supported for VSAM and non-VSAM data sets. The PRIM_REDUCE function and related keywords work in the same manner for both types of data sets.
- For non-VSAM data sets, the first allocation on volumes other than the first volume, is not technically a primary allocation. The allocation quantity value that is used to extend non-VSAM volumes to additional volumes is the secondary quantity.
- For SMS VSAM and non-VSAM data sets, because the volume serial number is not yet chosen by the system at PRIM_REDUCE time, if VOLSER_CURRENT is specified in the selection criteria with a value other than $NULL, the rule definition statement is considered not to match for the PRIM_REDUCE function on the first volume.
- When specifying explicit volsers for a data set
and one of the non-first volumes contains no free space when an extend
to a new volume occurs, end of volume processing normally produces
an E37 abend. If you want Advanced Allocation Management to
skip the volume with no free space and continue processing by attempting
the next explicitly specified volume or by adding a new volume using
the VOL_ADD function, you must specify
PRIM_REDUCE=(,ENABLE)
. - If you specify more than 65535 tracks of data for a primary allocation for non-VSAM, non-LARGE format, non-extended format data sets, Advanced Allocation Management reduces the specified value to 65535 tracks or less, as part of PRIM_REDUCE processing.
- PRIM_REDUCE is not performed for DFDSS dynamically allocated data sets.
- If a data set has the Guaranteed Space attribute defined in the SMS Storage Class, PRIM_REDUCE processing does not occur for the data set.
- If DSORG or RECORG is not explicitly specified in the JCL or if RECORG is not specified in the associated Data Class definition, the data set organization is not known at PRIM_REDUCE time. Therefore, if DSORG is specified in the selection criteria for a rule, the rule definition statement is considered not to match.
- The smaller the value that you specify on the PRIM_REDUCE_LIM
keyword, the more successful the PRIM_REDUCE function will be in reducing
the allocation to a value that prevents the failure of the allocation. The
smaller the value that you specify for PRIM_REDUCE_INC, the closer
the allocation quantity will be to the minimum size that is needed
to make the allocation succeed, which therefore reduces the unused
space for the allocation. Note: Specifying a smaller value for PRIM_REDUCE_INC can increase the number of allocation attempts.
Related keywords
PRIM_REDUCE_INC and PRIM_REDUCE_LIM.
Example: PRIM_REDUCE (ENABLE, DISABLE)
In the following example, when an out-of-space condition occurs, the primary allocation is reduced on the first volume, but not on the second, or subsequent volumes:
PRIM_REDUCE=(ENABLE, DISABLE)
Figure 1 illustrates the example:

Example: PRIM_REDUCE=ENABLE
In the following
example, PRIM_REDUCE=ENABLE
specifies that the PRIM_REDUCE
function is enabled:
* RULE DEFINITIONS DEFAULTS PRIM_REDUCE=ENABLE * Default settings PRIM_REDUCE_LIM=50 PRIM_REDUCE_INC=10 * INCLUDE JOBNAME=ABCJOB2 * Item to include in processing INCLUDE JOBNAME=ABCJOB3 * Item to include in processing PRIM_REDUCE_INC=05 * Function to invoke
Note the following items in the example:
PRIM_REDUCE_LIM=50
specifies that the primary allocation amount should not be reduced below 50 percent of the original allocation amount.PRIM_REDUCE_INC=10
specifies that the original allocation value should be reduced by 10 percent of the current allocation amount (on each allocation attempt) until the allocation is successful.
The INCLUDE keywords that follow the PRIM_REDUCE keywords specify the selection criteria:
- The first INCLUDE keyword specifies that jobs that have a job name of ABCJOB2 are to be included in Advanced Allocation Management processing.
- The second INCLUDE keyword specifies that jobs that have a job name of ABCJOB3 are to be included in Advanced Allocation Management processing. The PRIM_REDUCE_INC keyword that follows specifies that for these jobs, the original allocation is to be reduced by 5 percent of the current allocation amount instead of 10 percent.
Therefore, if Advanced Allocation Management encounters a job that has a job name of ABCJOB2 and an out-of-space condition occurs for a primary allocation, Advanced Allocation Management reduces the original allocation by 10 percent of the current allocation amount (not to exceed 50 percent of the original allocation amount) until the allocation is successful.
If Advanced Allocation Management encounters a job that has a job name of ABCJOB3 and an out-of-space condition occurs for a primary allocation, Advanced Allocation Management reduces the original allocation by 5 percent of the current allocation amount (not to exceed 50 percent of the original allocation amount) until the allocation is successful.
Jobs that do not have job names of ABCJOB2 or ABCJOB3 are included in Advanced Allocation Management processing. When an out-of-space condition occurs for these jobs, the jobs abend.