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

Read syntax diagramSkip visual syntax diagramPRIM_REDUCE=(DISABLE,DISABLE)(ENABLE,ENABLE)(ENABLE,DISABLE)(DISABLE,ENABLE)

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:

Figure 1. PRIM_REDUCE (ENABLE, DISABLE)
PRIM_REDUCE (ENABLE, DISABLE) For the first volume, the primary allocation is reduced. For the second, and subsequent volumes, the primary allocation is not reduced.

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.