z/OS DFSMS Implementing System-Managed Storage
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Data Set Stacking Using Volume Serial

z/OS DFSMS Implementing System-Managed Storage
SC23-6849-00

With the enhancements, the system is now aware of data set stacking when requested with volume serial (either with the VOL=SER parameter or obtained from the catalog) within a job step.

Recommendation: Use VOL=REF for data set stacking across jobs or steps. If you use VOL=SER to stack data sets across steps or jobs, the system cannot detect data set stacking. In these cases, you can do one of the following:
  • Change your JCL to specify VOL=REF instead of VOL=SER.
  • Ensure that your ACS routines don't redirect these data set allocations, unless you guarantee that they can be redirected to a consistent device category.
If the ACS routines initially directed the stacked allocations to different device categories, the system detects this and re-invokes the ACS routines, passing them additional information. The ACS routines can then take one of the following actions:
  • Correct the problem and route the allocations to consistent device categories
  • Fail the stacked allocation (if the ACS routine exits with a non-zero return code)
  • Fail to correct the inconsistency; SMS fails the allocation

Figure 1 and Figure 2 show examples of ACS routine fragments to assign the referencing data set to a consistent device category as the referenced data set.

Figure 1. Storage Class ACS Routine Fragment to Assign Consistent Device Category
PROC STORCLAS
FILTLIST DS_STACK INCLUDE('STK=SMSD','STK=NSMS')

IF &UNIT = &DS_STACK THEN
 SELECT (&UNIT)
   WHEN('STK=SMSD')
     SET &STORCLAS = 'DASDSC'
   OTHERWISE
     SET &STORCLAS = '
 END
:
END
Figure 2. Storage Group ACS Routine Fragment to Assign Consistent Device Category
PROC STORGRP
FILTLIST DS_STACK INCLUDE('STK=SMSD','STK=NSMS')

IF &UNIT = &DS_STACK THEN
 SELECT (&UNIT)
   WHEN('STK=SMSD')
     SET &STORGRP = 'MAIN3380','MAIN3390','SPIL3380','SPIL3390'
 OTHERWISE
 :
 END
:
END
The system re-invokes the ACS routines only when all of the following conditions are true:
  • The request is part of a data set collection based on:
    • A data-set-sequence-number greater than one specified on the LABEL parameter
    • VOL=SER, either specified or obtained from the catalog, where at least one of the volume serial numbers matches one of the volume serial numbers for a previous request in the same step.

      Recommendation: Because data set stacking cannot be detected across jobs and steps when VOL=SER is used, the ACS routines are not reinvoked in these cases. Use VOL=REF instead, or ensure that your ACS routines don't redirect those data set allocations requesting data set stacking using VOL=SER across steps or jobs.

  • The request is currently directed to a different device category than the other requests in the data set collection.
  • The request is DISP=NEW (or DISP=MOD treated as NEW).

Since data set stacking might cause a second or third invocation of the ACS routines, you might want to take special care when using WRITE statements to avoid duplicates in the job log.

Additionally, existing SMS-managed data sets are not checked by the system for inclusion in a data set collection. For SMS-managed data sets that are cataloged, the system cannot assume that the volume information in the catalog represents the original intended volume for the data set. For example, the data set might have been redirected, in which case if the system uses the volume information in the catalog to allocate the data set, the data set might be incorrectly placed in the wrong data set collection.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014