DDDEF entry (distribution, target, and global zone)

The DDDEF entry contains the information SMP/E needs to dynamically allocate a specific data set. With DDDEF entries, you do not have to provide a DD statement for every data set SMP/E may need to process a particular command. When SMP/E determines that it needs a specific data set, it looks for a DD statement that it can use to allocate that data set. If there is no DD statement, SMP/E checks whether the current zone contains a DDDEF entry for that data set. If so, it uses the information in the DDDEF entry to dynamically allocate the data set.

For more information about dynamically allocating data sets, see SMP/E for z/OS User's Guide.
Note:
  1. In a job with multiple SET commands, if you use DDDEF entries that specify SYSOUT for SMP/E output (such as SMPOUT or SMPRPT), SMP/E produces multiple SYSOUT data sets. This can cause undesirable results; for example, the output could appear to be out of sequence from one SET command to the next. Therefore, when you run such a job, you may prefer to use DD statements instead of DDDEF entries for SMP/E output data sets.
  2. SMP/E does not strictly enforce rules for which subentries you can specify in DDDEF entries for specific data sets. To prevent possible allocation errors, refer to z/OS MVS JCL User's Guide.

Subentries

These are the subentries for the DDDEF entry as they appear in the LIST output: For more information concerning DDDEF entry syntax, see the UCLIN command topic in SMP/E for z/OS Commands.
name
is the ddname of the data set to be allocated.
  • The name can contain from 1 to 8 alphabetic (A through Z), national (@, #, or $), or numeric (0 through 9) characters. The first character must be alphabetic or national.
  • Other than checking for duplicate DDDEF names in a given zone, SMP/E does not check whether the specified name is associated with another data set. For example, SMP/E does not check whether a DDDEF name is the same as a zone name. You must do this checking yourself to avoid undesired results.
BLK(size), CYL, or TRK
specifies the space units to be used in allocating the data set: blocks, cylinders, or tracks.
The UCL operand is BLOCK(size), CYLINDERS, or TRACKS.
  • size is the size, in decimal, of each block to be allocated. To specify the number of blocks to be allocated, use SPACE.
  • You can specify either the long form or the short form of these operands:
    • BLOCK or BLK
    • CYLINDERS or CYL
    • TRACKS or TRK
  • These operands are mutually exclusive with each other and with OLD, MOD, SHR, CONCAT, PATH, and SYSOUT.
CATALOG, DELETE, or KEEP
specifies the final disposition (DISP) of the data set.
The UCL operand is CATALOG, DELETE, or KEEP.
  • These operands are mutually exclusive with each other and with CONCAT and PATH.
  • You cannot specify a final disposition for SMPTLIB data sets. SMP/E automatically specifies a final disposition based on the command being processed. For more information, see SMPTLIB.
CONCAT
identifies one or more DDDEF entries, existing in the same zone, that should be concatenated during SMP/E processing.
The UCL operand is CONCAT(name).
  • The DDDEF names can contain from 1 to 8 alphabetic (A through Z), national (@, #, or $), or numeric (0 through 9) characters. The first character must be alphabetic or national.
  • There must be a DDDEF entry for each specified name. SMP/E does not check other sources (such as DD statements or GIMDDALC control statements in SMPPARM member GIMDDALC) to get the information needed to allocate the data sets.
  • SMP/E allows you to specify up to 123 names. However, the actual number of partitioned data sets that can be concatenated depends on the operating system you are running under. To determine the maximum number of data sets you can concatenate, see z/OS DFSMS Using Data Sets.
  • CONCAT is required for concatenated data sets.
  • CONCAT cannot specify any DDDEF entries that contain the CONCAT operand. (You cannot nest concatenated DDDEF entries.)
  • CONCAT is mutually exclusive with all other operands.
    Note: When a DDDEF that specifies a disposition of OLD is allocated as part of a CONCAT, a disposition of SHR is used for the allocation.
DATACLAS
specifies the name of a data class to be used for allocating a new data set managed by SMS.
The UCL operand is DATACLAS(name).
  • The data class name is defined by the storage administrator at your installation. This value can contain from 1 to 8 alphanumeric characters (A through Z and 0 through 9) or national characters (@, #, $) and must start with either an alphabetic or national character.
  • You can specify this operand only if SMS manages your storage.
  • Specify this operand only when you are allocating a new data set. SMS ignores this parameter if it is specified for an existing data set.
  • This operand is mutually exclusive with PATH and CONCAT.
DATASET
is the name of the data set to be allocated.
The UCL operand is DATASET(dsname).
  • You can specify either DATASET or DA.
  • The data set name must conform to standard naming conventions for data sets. Each part of the name must contain from 1 to 8 characters, separated from the other parts by a period (.), with no intervening blanks. The maximum length of the entire name is 44 characters (including the periods).
  • The data set name itself cannot contain parentheses.
  • To define a dummy data set, omit the DATASET operand and specify an initial DISP of NEW.
  • DATASET is required if OLD, SHR, or MOD is specified.
  • DATASET is mutually exclusive with CONCAT, PATH, and SYSOUT.
  • You cannot use DATASET to specify the data set name of an SMPTLIB data set. Instead, you can use the DSPREFIX operand in either the SMPTLIB DDDEF entry or in the OPTIONS entry used to process those data sets.
  • SMP/E does not check whether the specified data set name is unique within the zone. For example, SMP/E does not check whether the data set name was also defined in another DDDEF entry in the same zone, or whether the data set name defines the CSI data set containing the zone. You must do this checking yourself to avoid undesired results.
DIR
specifies the number of directory blocks to allocate.
The UCL operand is DIR(nnnn).
  • The number specified can contain from 1 to 4 decimal digits.
  • DIR is mutually exclusive with OLD, MOD, SHR, CONCAT, and PATH.
DSNTYPE
specifies the type of partitioned data set to be created.
The UCL operand is DSNTYPE(LIBRARY) or DSNTYPE(PDS).
LIBRARY
specifies that a PDSE (which must be an SMS-managed data set) is to be created.
PDS
specifies that a PDS is to be created.
You can also specify DSNTYPE in either a data class or a member of SYS1.PARMLIB.
Note:
  1. This operand is mutually exclusive with PATH and CONCAT.
  2. When SMP/E RECEIVE processing allocates a new SMPTLIB data set, it uses the original DSNTYPE of the corresponding RELFILE data set. If SMP/E cannot determine the original DSNTYPE of the corresponding RELFILE data set, SMP/E uses the DSNTYPE value specified in the SMPTLIB DDDEF entry.
DSPREFIX
specifies the data set prefix to be used to construct the full data set name for SMPTLIB data sets. For more information about names for SMPTLIB data sets, see SMP/E for z/OS Commands.
The UCL operand is DSPREFIX(prefix).
  • The prefix can contain from 1 to 26 alphanumeric characters.
  • The prefix must follow standard conventions for naming data sets.
  • Instead of specifying DSPREFIX in the SMPTLIB DDDEF entry, you can specify it in the OPTIONS entry that is in effect when you receive RELFILEs into the SMPTLIB data sets.

    If you do not specify a data set prefix in the SMPTLIB DDDEF entry or in the appropriate OPTIONS entry, no prefix is included when SMP/E assigns a name to the SMPTLIB data sets.

  • DSPREFIX is mutually exclusive with CONCAT and PATH.
Note: This subentry exists only in the global zone.
MGMTCLAS
specifies the name of a management class to be used for allocating a new data set managed by SMS.
The UCL operand is MGMTCLAS(name).
  • The management class name is defined by the storage administrator at your installation. This value can contain from 1 to 8 alphanumeric characters (A through Z and 0 through 9) or national characters (@, #, $) and must start with either an alphabetic or national character.
  • You can specify this operand only if SMS manages your storage.
  • Specify this operand only when you are allocating a new data set. SMS ignores this parameter if it is specified for an existing data set.
  • This operand is mutually exclusive with PATH and CONCAT.
MOD, NEW, OLD, or SHR
specifies the initial disposition (DISP) of the data set.
The UCL operand is MOD, NEW, OLD, or SHR.
  • These operands are mutually exclusive with each other and with CONCAT and PATH.

    OLD, SHR, and MOD are also mutually exclusive with SYSOUT, PROTECT, BLOCK, CYLINDERS, TRACKS, DIR, and SPACE.

  • You cannot specify an initial disposition for SMPTLIB data sets. SMP/E automatically specifies an initial disposition, which is based on the command being processed. For more information, see SMPTLIB.
PATH
identifies the name of the path to be allocated in a UNIX file system. The name is not a complete pathname; it is a directory. This value is concatenated with the appropriate element or load module name to create a complete pathname.
The UCL operand is PATH(pathname).
  • PATH is mutually exclusive with all other DDDEF entry operands.
  • The pathname can be from 1 to 255 characters.
  • The pathname must begin and end with a slash (/).
  • In addition to the required delimiters (/), a pathname must also be enclosed in single apostrophes (') if any of the following is true:
    • The pathname contains lowercase alphabetic characters.
    • The pathname contains a character that is not uppercase alphabetic, numeric, national ($, #, or @), slash (/), plus (+), hyphen, period, or ampersand (&).
    • The pathname spans more than one line in the UCL control statement.

    The apostrophes must be outside the required delimiters, as in '/pathname/', not /'pathname'/.

    The single apostrophes used to enclose a pathname (the delimiters) do not count as part of the 255-character limit.

  • Any apostrophes specified as part of a pathname (not the delimiters) must be doubled.

    Double apostrophes count as two characters in the 255-character limit.

  • The pathname can include characters X'40' through X'FE'.
  • Because symbolic substitution is not detected by SMP/E, it is not supported by SMP/E.
PROTECT
specifies that the z/OS® SecureWay Security Server PROTECT option should be used when a new data set is first allocated. If PROTECT is specified and z/OS SecureWay Security Server is installed, the data set allocated by SMP/E will be protected by z/OS SecureWay Security Server.

You can also use PROTECT to indicate that an existing data set is protected by z/OS SecureWay Security Server. In this case, because SMP/E does not allocate the data set, it does not check the PROTECT indicator. However, you can use it to keep a record of which data sets have been protected with z/OS SecureWay Security Server.

The UCL operand is PROTECT.
  • PROTECT is mutually exclusive with CONCAT, PATH, OLD, MOD, and SHR.
SPACE
specifies the primary and secondary space allocation for new data sets.
The UCL operand is SPACE(prime,second).
  • Each value must contain from 1 to 4 decimal digits, and the two values must be separated by a comma or a blank.
  • SPACE is mutually exclusive with CONCAT, PATH, OLD, MOD, and SHR.
STORCLAS
specifies the name of a storage class used for allocating a new data set managed by SMS.
The UCL operand is STORCLAS(name).
  • The storage class name is defined by the storage administrator at your installation. This value can contain from 1 to 8 alphanumeric characters (A through Z and 0 through 9) or national characters (@, #, $) and must start with either an alphabetic or national character.
  • You can specify this operand only if SMS manages your storage.
  • Specify this operand only when you are allocating a new data set. SMS ignores this parameter if it is specified for an existing data set.
  • This operand is mutually exclusive with PATH and CONCAT.
SYSOUT
specifies the output class for SYSOUT data sets.
The UCL operand is SYSOUT(value).
  • If you specify a class, it must be 1 alphabetic or numeric character (A through Z or 0 through 9).
  • If you specify *, the output class depends on references to an OUTPUT JCL statement.
    • If there is an implicit or explicit reference to an OUTPUT JCL statement, the output is written to the same class as the CLASS parameter on the OUTPUT statement.
    • If there is no reference to an OUTPUT JCL statement, the output is written to the same class as the one specified as MSGCLASS on the JOB card.
  • SYSOUT is mutually exclusive with CATALOG, DELETE, KEEP, DIR, DSNTYPE, UNIT, SPACE, VOLUME, BLOCK, CYLINDER, TRACK, CONCAT, PATH, and DATASET.
  • You cannot specify SYSOUT for SMPTLIB data sets.
UNIT
specifies the UNIT type the data set resides on if it is not cataloged.
The UCL operand is UNIT(type).
  • If the data set is not cataloged, you must specify UNIT (unless it is not cataloged because of SMS). If you specify UNIT for a cataloged data set, it overrides the value in the catalog.
  • The UNIT value can contain from 1 to 8 characters and should conform to standard UNIT naming conventions.

    SMP/E accepts any nonblank characters specified between the open and close parentheses, up to a maximum length of 8.

  • UNIT is mutually exclusive with CONCAT and PATH.
VOLUME
specifies the volume serial number of the volume that the data set resides on if not cataloged.
The UCL operand is VOLUME(volid).
  • If the data set is not cataloged, you must specify VOLUME (unless it is not cataloged because of SMS). If you specify VOLUME for a cataloged data set, it overrides the value in the catalog.
  • The volume identifier can contain from 1 to 6 alphanumeric characters.
  • For SMPTLIB data sets, you can specify up to five volume serial numbers. All the volumes must have the same UNIT type. For other data sets, you can specify only one volume serial number.
  • VOLUME is mutually exclusive with CONCAT and PATH.
WAIT=YES or WAIT= NO
indicates whether SMP/E should wait for the data set to be allocated if the volume is not mounted or if the data set is already in use. Not waiting causes allocation to fail for the data set.
The UCL operand is WAITFORDSN.
  • You can specify either WAITFORDSN or WAIT.
  • WAIT is mutually exclusive with CONCAT and PATH.
  • If you do not specify a value, the default is not to wait.
  • WAIT is not related to the PROCESS parameter specified on the EXEC statement. PROCESS affects how long a job should wait for a data set before being run. For more information, see JCL statements required to invoke SMP/E.

LIST Examples

To list all the DDDEF entries in a particular zone, you can use the following commands:
SET      BDY(TGT1)          /* Set to requested target. */.
LIST     DDDEF              /* List all DDDEF entries.  */.
To list specific DDDEF entries in a particular zone, you can use these commands:
SET      BDY(TGT1)          /* Set to requested target. */.
LIST     DDDEF(SMPMTS       /* List only these three    */
              MACLIB        /* entries.                 */
              SYSLIB)       /*                          */.

The format of the LIST output for each DDDEF entry is the same for both of these commands. The only difference is the number of DDDEF entries listed.

Figure 1 and Figure 2 are examples of LIST output for DDDEF entries.
Figure 1. DDDEF entry: sample LIST output for a target zone
PAGE nnnn  - NOW SET TO zzzzzz ZONE nnnnnnn  DATE mm/dd/yy TIME hh:mm:ss SMP/E 36.nn SMPLIST OUTPUT

TGT1          DDDEF ENTRIES


  NAME

AMACLIB   DATASET         = SYS1.AMACLIB
          VOLUME          = DLIB01
          UNIT            = 3380
          SHR

BPXLIB1   PATH            = '/path_name1/'

CMACLIB   DATASET         = SYS1.MACLIB
          SHR

MACLIB    DATASET         = SYS1.MACLIB
          OLD

SMPMTS    DATASET         = SYS1.SMPMTS
          OLD

SMPLOG    DATASET         = SYS1.SMPLOG
          MOD

SYSLIB    CONCAT          = SMPMTS    CMACLIB   AMACLIB

SMPOUT    SYSOUT          = A

SMPWRK1   UNIT            = SYSDA
          SPACE           = (25,25)
          DIR             = 25
          ALLOC           = TRK
          NEW
          DELETE

SMPWRK2   DATACLAS        = FB80CLAS
          MGMTCLAS        = SMPEMCLS
          STORCLAS        = SMPESCLS

SMPTLIB   VOLUME          = DLIB01    DLIB02    DLIB03
          UNIT            = 3380
Figure 2. DDDEF entry: sample LIST output for a global zone
PAGE nnnn  - NOW SET TO zzzzzz ZONE nnnnnnn  DATE mm/dd/yy TIME hh:mm:ss SMP/E 36.nn SMPLIST OUTPUT

GLOBAL        DDDEF ENTRIES


  NAME

SMPPTS    DATASET         = SYS1.SMPPTS
          OLD

SMPLOG    DATASET         = SYS1.GLOBAL.SMPLOG
          MOD

SMPOUT    SYSOUT          = A

SMPWRK1   UNIT            = SYSDA
          SPACE           = (25,25)
          DIR             = 25
          ALLOC           = TRK
          NEW
          DELETE

SMPWRK2   DATACLAS        = FB80CLAS
          MGMTCLAS        = SMPEMCLS
          STORCLAS        = SMPESCLS

SMPTLIB   VOLUME          = DLIB01    DLIB02    DLIB03
          UNIT            = 3380
          DSPREFIX        = C87MVSP
          PROTECT

UNLOAD Examples

To dump the DDDEF entries in UCL format, you can use the UNLOAD command. To unload all the DDDEF entries in a particular zone, you can use the following commands:
SET      BDY(TGT1)          /* Set to requested target.   */.
UNLOAD   DDDEF              /* Unload all DDDEF entries.  */.
To unload specific DDDEF entries in a particular zone, you can use these commands:
SET      BDY(TGT1)          /* Set to requested target.   */.
UNLOAD   DDDEF(SMPMTS       /* Unload only these three    */
              MACLIB        /* entries.                   */
              SYSLIB)       /*                            */.

The format of the UNLOAD output for each DDDEF entry is the same for both of these commands. The only difference is the number of DDDEF entries unloaded.

Note: You can use the UNLOAD command only for target and distribution zones, not for the global zone.
Figure 3 is an example of UNLOAD output for DDDEF entries.
Figure 3. DDDEF entry: sample UNLOAD output
UCLIN .
REP       DDDEF           ( AMACLIB  )
          DATASET         ( SYS1.AMACLIB                                 )
          VOLUME          ( DLIB01 )
          UNIT            ( 3380    )
          SHR
                          .
REP       DDDEF           ( BPXLIB1  )
          PATH            ( '/path_name1/' )
                          .
REP       DDDEF           ( CMACLIB  )
          DATASET         ( SYS1.MACLIB                                  )
          SHR
                          .
REP       DDDEF           ( MACLIB   )
          DATASET         ( SYS1.MACLIB                                  )
          OLD
                          .
REP       DDDEF           ( SMPDATA1 )
          DATASET         ( MVSTGT1.SMPDATA1  )                          )
          MOD
                          .
REP       DDDEF           ( SMPDATA2 )
          DATASET         ( MVSTGT1.SMPDATA2  )                          )
          MOD
                          .
REP       DDDEF           ( SMPMTS   )
          DATASET         ( SYS1.SMPMTS                                  )
          OLD
                          .
REP       DDDEF           ( SMPLOG   )
          DATASET         ( SYS1.SMPLOG                                  )
          MOD
                          .
REP       DDDEF           ( SYSLIB   )
          CONCAT          ( SMPMTS    CMACLIB   AMACLIB  )
                          .
                          .
ENDUCL.

UCLIN Examples

You can use the ADD, REP, and DEL UCL statements to change subentries in a DDDEF entry. When you use UCLIN to update a DDDEF entry, keep these points in mind:
  • If a DEL statement deletes all the existing subentries in the entry, SMP/E deletes the entire entry.
  • When SMP/E dynamically allocates a concatenation list, the order of the concatenation is the same as that specified in the DDDEF entry. Therefore, you cannot use ADD statements to update a DDDEF entry that already contains a concatenation list. SMP/E would not know the correct position for the new data.
    For example, suppose you have a DDDEF entry for the SYSLIB data set that concatenates SMPMTS and MACLIB. You cannot use the following commands to add XYZMACS at the end of the list:
    SET      BDY(DLIB1)         /* Set to DLIB1 zone.    */.
    UCLIN                       /*                       */.
    ADD      DDDEF(SYSLIB)      /*                       */
             CONCAT(XYZMACS)    /*                       */.
    ENDUCL                      /*                       */.
    Instead, you can use these commands to replace the entire concatenation list:
    SET      BDY(DLIB1)         /* Set to DLIB1 zone.    */.
    UCLIN                       /*                       */.
    REP      DDDEF(SYSLIB)      /*                       */
             CONCAT(SMPMTS,     /* Replace entire list.  */
                    MACLIB,     /*                       */
                    XYZMACS)    /*                       */.
    ENDUCL                      /*                       */.

The following examples are provided to help you use the DDDEF entry.