Allocating output unload data sets
The unload data set can be allocated by using DD statements that are supplied in the JCL, or by using dynamic allocation.
BMC recommends dynamic allocation because of the flexibility and improved control that it provides.
You can specify the optional OFILECTL subcommand to combine the data targeted to one or more output areas into a single output data set. One unload data set is produced for each OFILECTL subcommand that is specified. Do not code the OAREA keyword on the UNLOAD command. Code this keyword on the OFILECTL subcommand to specify the output areas to be placed into the unload data set.
If no OFILECTL subcommand is specified, a separate unload data set is produced for each output area. The DD statement for each unload data set is named OAREAxxx, which uses a three-digit area number, or OARxxxxx, which uses a five-digit area number. The OAREAxxx DD statement can only be used for area numbers 1 through 999. The OARxxxxx DD statement can be used for area numbers 1 through 2048, and must be used for area numbers greater than 999. If this DD statement is omitted from the JCL, Fast Path Reorg/EP tries to dynamically allocate the output unload data set by using the OUTPUT_DSN_MASK keyword. The data set name that is generated by using this mask must be a preexisting cataloged data set.
You can specify the PFPTOTAL DD statement to allocate an optional output PFPTOTAL data set. This output data set can be used as an audit file to verify segment output totals after using the unload process.
The PFPTOTAL data set is designed for input to a user-written program. For more information about the PFPTOTAL DD statement and the record format, see the Fast Path/EP Series Reference Manual documentation.
Using JCL to allocate the unload data set
Use the DDNAME keyword to indicate that the unload data set is allocated by using JCL DD statements.
The example in the following figure uses a JCL DD statement to allocate an unload data set. All output areas are written into a single unload data set.
//STEPLIB DD DISP=SHR,DSN=BMC.PFP.LOAD
// DD DISP=SHR,DSN=IMS.RESLIB
//ddname1 DD UNIT=3400,DISP=(NEW,CATLG),
// DSN=
your.dataset.name
//PFPSYSIN DD *
UNLOAD DBD=
dbdname,IAREA=ALL
OFILECTL OAREA=ALL,DDNAME=ddname1
/*
Dynamic allocation for the unload data set
In the example shown in the following figure, the input and output area data sets are dynamically allocated.
The output data set names are in the form PFP.dbdname.ULxxxxx, where xxxxx is the five-digit area number.
dbdname,
OAREA=ALL,OUTPUT_DSN_MASK='PFP.&DBD.UL&AREA#5'
You can specify the optional OFILECTL subcommand to combine the data targeted to one or more output areas into a single output data set. One unload data set is produced for each OFILECTL subcommand that is specified. Do not code the OAREA keyword on the UNLOAD command. Instead, code this keyword on the OFILECTL subcommand to specify the output areas to be placed into the unload data set.
Use the DSNAME keyword to indicate that the unload data set is to be dynamically allocated, and to supply a mask for constructing the data set name. Substitution variables within the mask can be used to generate unique names for each unload data set.
Additional keywords such as UNIT, DISP, and DATACLAS can be used to control the allocation and disposition of the data set, similar to the corresponding JCL keywords.
The example in the following figure requests the creation of two unload data sets. The first data set contains data for output areas areanam1 and areanam2. The second data set is allocated to a disk device and contains data for output area area1024.
dbdname,IAREA=ALL
OFILECTL OAREA=(
areanam1,
areanam2),
DSNAME='
dataset-name1-mask',
UNIT=TAPE,DISP=(NEW,CATLG)
OFILECTL OAREA=(
area1024)
DSNAME='
dataset-name2-mask'
UNIT=3390,VOLSER=123456,
SPACE=(CYL,100,10,RLSE),
DISP=(NEW,CATLG,DELETE)
Using generation data set groups
The data set name specified with the DSNAME keyword can refer to a generation data group (GDG). Code the DSNAME keyword to specify the base name for the GDG. As an option, you can include the '(+1)' relative generation number as part of the DSNAME keyword.
The following example requests that all unload data be written to a single data set. The unload data set is allocated as the next generation within a predefined GDG.
dbdname,IAREA=ALL
OFILECTL OAREA=ALL,DSNAME='
gdg-dataset-name-mask(+1)',
DISP=(NEW,CATLG),UNIT=TAPE
Related topic