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.
- 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.
- 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
- 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:- This operand is mutually exclusive with PATH and CONCAT.
- 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.
- These operands are mutually exclusive with each other and with
CONCAT and PATH.
- 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
SET BDY(TGT1) /* Set to requested target. */.
LIST DDDEF /* List all DDDEF entries. */.
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.
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
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
SET BDY(TGT1) /* Set to requested target. */.
UNLOAD DDDEF /* Unload all DDDEF entries. */.
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.
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
- 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.