# SECMODEL parameter - IBM-JCL

Parameter Type

Keyword, optional — use this parameter only with SMS Without SMS, use the DD PROTECT parameter described.

Purpose

Use the SECMODEL parameter to specify the name of an existing RACF data set profile that is copied to the discrete data set profile that RACF builds for the new data set.

The following information from the RACF data set profile, which RACF uses to control access to the data set, is copied to the discrete data set profile of the new data set:

• OWNER - indicates the user or group assigned as the owner of the data set profile.
• ID - indicates the access list of users or groups authorized to access the data set.
• UACC - indicates the universal access authority associated with the data set.
• AUDIT/GLOBALAUDIT - indicates which access attempts are logged.
• ERASE - indicates that the data set is to be erased when it is deleted (scratched).
• LEVEL - indicates the installation-defined level indicator.
• DATA - indicates installation-defined information.
• WARNING - indicates that an unauthorized access causes RACF to issue a warning message but allow access to the data set.
• SECLEVEL - indicates the name of an installation-defined security level.

Use the SECMODEL parameter (1) when you want a different RACF data set profile than the default profile selected by RACF or (2) when there is no default profile.

If SMS is not installed or is not active, the system syntax checks and then ignores the SECMODEL parameter.

1.Syntax

SECMODEL=(profile-name[,GENERIC])

2.Subparameter Definition

profile-name
Specifies the name of a RACF model profile, discrete data set profile, or generic data set profile. The named profile is copied to the discrete data set profile of the new data set. If a generic data set profile is named, GENERIC must also be coded.

GENERIC
Identifies that the profile-name refers to a generic data set profile.

3.Overrides
The SECMODEL parameter overrides the PROTECT=YES parameter.

4.Relationship to Other Parameters
Do not code the following DD parameters with the SECMODEL parameter.

* DDNAME DATA DYNAM

5.Examples of the SECMODEL Parameter

Example

//SMSDS4 DD DSNAME=MYDS4.PGM,SECMODEL=(GROUP4.DEPT1.DATA), // DISP=(NEW,KEEP)

In the example, RACF uses the previously defined model data set profile named GROUP4.DEPT1.DATA to control access to the new data set.

Example

//SMSDS5 DD DSNAME=MYDS5.PGM,SECMODEL=(GROUP5.*,GENERIC), // DISP=(NEW,KEEP)

In the example, RACF uses the previously defined generic data set profile named GROUP5.* to control access to the new data set.

SEGMENT parameter

Parameter Type

Keyword, optional

Purpose

In a JES2 system, use the SEGMENT parameter to allow part of a job’s output to be printed while the job is still executing, or to allow multiple segments of a job’s output to be printed simultaneously on multiple printers. With SEGMENT, portions of a data set are spun, one segment at a time. You determine the size of the portion with the SEGMENT parameter. SEGMENT allows you to specify the number of pages produced for a sysout data set before the system processes the segment of the data set. To count pages, JES2 uses the carriage control characters in the data that skip to channel 1.

SEGMENT is supported by JES2 only. The SEGMENT parameter applies only to line mode data sets with RECFM=A or RECFM=M.

1.Syntax

SEGMENT=page-count

2.Subparameter Definition

page-count
Indicates the number of pages produced for the sysout data set for the current segment. When the number is reached, the system spins-off the data segment for output processing.

3.Overrides
The system spins the sysout regardless of SPIN, FREE, and OUTDISP specifications.

4.Relationship to Other Parameters
Do not code the following parameters with the SEGMENT parameter.

* DDNAME EXPDT QNAME AMP DISP LABEL RETPD CHKPT DSNAME LIKE SUBSYS DATA DYNAM PROTECT VOLUME

Page mode data is not counted for segmentation. The system might suspend segmentation if it reaches the threshold for segmentation allowed by JES.

5.Example of the Segment Parameter

//DD1 DD SYSOUT=A,SEGMENT=100

In this example, if the sysout data set produced 400 pages, then four separate segments, 100 pages in each, are produced for output processing.

SPACE parameter

Parameter Type

Keyword, optional

Note: With SMS, code the SPACE parameter when you want to

• Request space for a new data set, or
• Override the space allocation defined in the DATACLAS parameter for the data set.

Purpose

Use the SPACE parameter to request space for a new data set on a direct access volume. You can request space in two ways:

• Tell the system how much space you want and let the system assign specific tracks.
• Tell the system the specific tracks to be allocated to the data set.

Letting the system assign the specific tracks is most frequently used. You specify only how space is to be measured in tracks, cylinders, blocks, or records — and how many of those tracks, cylinders, blocks, or records are required.

The SPACE parameter has no meaning for tape volumes; however, if you assign a data set to a device class that contains both direct access devices and tape devices, for example, UNIT=SYSSQ, you should code the SPACE parameter.

If you code the SPACE parameter on a DD statement that defines an existing data set, the SPACE value you specify temporarily overrides the SPACE value used to create the data set. For example, a data set created with SPACE=(CYL,(5,1)) causes 5 cylinders to be allocated to the data set, and, if it needs more space, it can obtain 1 additional cylinder.

Suppose, though, that there is one particular job that specifies DISP=MOD and will write many records to this data set. JCL for this job can define, for example, SPACE=(CYL,(5,10)) to obtain an additional 10 cylinders instead of just 1 cylinder. The override, however, is in effect only for this job. Any other job that requires a secondary extent and does not have a SPACE parameter override gets just the 1 additional cylinder specified in the JCL that created the job.

Notes

• When creating VSAM data sets, be aware that there is no direct one-to-one correspondence between ‘define cluster’ parameters and JCL keyword parameters.
• The average value in the SPACE keyword is meant to be an average block length value for space calculations and is not meant to represent an LRECL value.
• The AVGREC keyword is only to be used as a multiplier in determining how much space is to be allocated.
• When defining VIO data sets, be aware that a SPACE parameter in the JCL or the SPACE value defined for a data class will override the system default space value.
• The size of a data set is limited to 65,536 tracks per volume except for the following types of data sets:
• – Hierarchical File System (HFS)
– Extended format sequential
– Partitioned data set extended (PDSE)
– VSAM

1.Syntax

• All the subparameters are positional. Code a comma to indicate an omitted subparameter if any others follow. Thus:
• – If you code primary and directory or index quantities and omit a secondary quantity, code a comma inside the inner parentheses to indicate the omission. For example, SPACE=(TRK,(20,,2)).
– If you omit RLSE but code a following subparameter, code a comma to indicate the omission. For example, SPACE=(TRK,(20,10),,CONTIG) or SPACE=(TRK,20,,CONTIG).
– If you omit CONTIG, MXIG, or ALX and ROUND follows, code a comma to indicate the omission. For example, SPACE=(400,30,RLSE,,ROUND). If you also omit RLSE, this example becomes SPACE=(400,30,,,ROUND).

2.Subparameter Definition

System Assignment of Space

TRK
Requests that space be allocated in tracks.
CYL
Requests that space be allocated in cylinders.

blklgth — (only if AVGREC is not coded)
Specifies the average block length of the data, in bytes. The blklgth is a decimal number from 0 through 65535. This parameter indicates that the values specified for primary-qty and second-qty are block quantities, and directs the system to compute the number of tracks to allocate using a block length. The value specified for block size uses block length in this computation, with the exception of the value zero. See primary-qty and second-qty descriptions for how a zero block size is handled.

reclgth — (only if AVGREC is coded and SMS is active)
With SMS, specifies the average record length of the data, in bytes. The reclgthis a decimal number from 0 through 65535. This parameter indicates that the values specified for primary-qty and second-qty are record quantities, whose average record length is reclgth. If you specify zero, no space will be allocated. The system allocates DASD space in whole tracks. The number of tracks required depends on how the records are blocked. The system uses one of the following as the block length to compute the number of tracks to allocate, in the order indicated:

1. The block size from the DCB parameter, if specified
2. The system determined block size, if available
3. A default value of 4096.

primary-qty
Specifies one of the following:

• For TRK, the number of tracks to be allocated.
• For CYL, the number of cylinders to be allocated.
• For a block length, the number of data blocks in the data set.
• For a record length, the number of records in the new data set. Use the AVGREC parameter to specify that the primary quantity represents units, thousands, or millions of records.

Note: When you specify TRK or CYL for a partitioned data set (PDS or PDSE), the primary quantity includes the space for the directory. When you specify a block length or record length for a partitioned data set (PDS or PDSE), the primary quantity does not include the directory space; the system assigns the directory to space outside the primary space assignment.

If the data set does not have the space constraint relief option, one volume must have enough available space for the primary quantity. If you request a particular volume and it does not have enough space available for your request, the system terminates the job step. In order for a data set to have the space constraint relief option, it must be SMS-managed and the data class must specify the option.

If you specify a blklgth of zero for the first subparameter, the system uses one of the following as the block length to compute the number of tracks to allocate, in the order indicated:

1. The block size from the DCB parameter, if specified
2. The block size determined from RECFM and LRECL on the DD statement or data class, if available
3. A default value of 4096.

To request an entire volume, either code the ALX parameter or specify in the primary quantity the number of tracks or cylinders on the volume minus the number used by the volume table of contents (VTOC), volume label track, VTOC index, and VVDS (if any). The volume must not contain other data sets.

second-qty
Specifies the number of additional tracks, cylinders, blocks, or records to be allocated, if more space is needed. The system does not allocate additional space until it is needed. With SMS, use the AVGREC parameter to specify that the secondary quantity represents units, thousands, or millions of records. The system computes the number of tracks to allocate using a block length as indicated in the following order:

1. The block size from the DCB parameter, if specified
2. The system determined block size, if available
3. A default value of 4096.

If the first subparameter specifies the average block length, the system computes the number of tracks for the secondary quantity from the second-qty number and one of the following, in order:

1. The blklgth subparameter of the SPACE parameter.
2. The saved average block length value specified when the data set was created, if no SPACE parameter was specified for an existing data set.
3. The block length in the BLKSIZE field of the data control block.

When you specify a secondary quantity and the data set requires additional space, the system allocates the specified quantity:

• In contiguous tracks or cylinders, if available.
• If not available:
• – If the data set does not have the space constraint relief option, in up to five extents.
– With the space constraint relief option, the system might have to allocate more than five new extents. A data set has this option only if it is SMS-managed and the data class specifies the option.

The system can allocate up to 123 extents for a data set on a volume if it is a PDSE, an HFS data set, an extended format data set, or a VSAM data set in an ICF catalog. For other types of data sets the system can allocate up to 16 extents for each data set on each volume. An extent is space that may or may not be contiguous to other space allocated to the data set. The extents for a data set include the primary quantity space and user-label space.

Note: BDAM data sets cannot be extended.

When your program has filled a sequential data set’s allocated space on a volume, the system determines where the following data is written as follows:

• If the disposition of the data set is NEW or MOD and the limit on the number of extents on a volume has not been reached, the system attempts to allocate the secondary quantity on the same volume.
• If the disposition of the data set is OLD or SHR, the system examines the next volume specified for the data set.
• – If space has been allocated on the next volume for the data set, the next volume is used for the data set.
– If space has not been allocated on the next volume for the data set, secondary space is allocated on the next volume for the data set.

If there is not another volume specified for the data set, the system attempts to allocate the secondary quantity on the current volume.

Note that your program should not write with a disposition of DISP=SHR unless you take precautions to prevent other programs from writing at the same time.

If the requested volumes have no more available space and if at least one volume is demountable, the system asks the operator to mount scratch (nonspecific) volumes until the secondary allocation is complete. If none of the volumes are demountable, the system abnormally terminates the job step.

directory
Specifies the number of 256-byte records needed in the directory of a partitioned data set (PDS).

Note: When creating a partitioned data set (PDS), you must request space for a directory. When creating a partitioned data set extended (PDSE), the size of the directory grows dynamically as needed. SMS uses the size requested for a PDSE directory only if you later convert the PDSE to a PDS.

The PDS directory must fit in the first extent of the data set. If the primary quantity is too small for the directory, or if the system has allocated the primary quantity over multiple extents and the first extent is too small for the directory, then the allocation fails.

With SMS, you can specify the number of directory records on the SPACE parameter without specifying any other subparameters. For example:

//DD12 DD DSNAME=PDS.EXMP,DATACLAS=DCLAS12,SPACE=(,(,,20)), // DISP=(NEW,KEEP)

specifies 20 directory records for the data set. In this example, the number of specified directory records (20) overrides the number of directory records defined in the data class of the data set. (SMS uses all other space allocation attributes defined in the data class of the data set.)

index
For the index of an indexed sequential data set, specifies one of the following:

• For TRK, the number of tracks needed. The number of tracks must equal one or more cylinders.
• For CYL, the number of cylinders needed.

RLSE (Partial Release)
Requests that space allocated to an output data set, but not used, is to be released when the data set is closed. This partial release parameter causes the close function to release unused space only if the data set is open to allow writing and the last operation was not a read or a POINT macro.

For a multi-volume sequential data set, only unused space on the current volume is released when the data set is closed; allocated space on any subsequent volume is not affected.

If you specify RLSE and an abnormal termination occurs, the system does not release unused space even though the data set is open. RLSE is supported only for sequential, partitioned, and VSAM extended format data sets.

Coding RLSE for primary allocation does not prohibit use of secondary allocation. The secondary request for space is still in effect.

The system ignores a request to release unused space when closing a data set if it cannot immediately obtain exclusive control of the data set. Circumstances that would preclude obtaining exclusive control include:

• Another job is sharing the data set.
• Another task in the same multitasking job is processing an OPEN, CLOSE, EOV, or FEOV request for the data set.
• Another data control block is open for the data set.

The RLSE subparameter is ignored when TYPE=T is coded in the CLOSE macro instruction.

When coding RLSE for an existing data set, code the unit of measurement and primary quantity as they appeared in the original request. For example, if the original request was:

SPACE=(TRK,(100,50))

you can release unused tracks when you retrieve the data set by coding:

SPACE=(TRK,(100),RLSE)

You can release space in the following additional ways other than by deleting the data set:

• Partial release option in the management class
• DFSMShsm space management cycle
• PARTREL macro issued by an authorized program.

CONTIG
Requests that space allocated to the data set must be contiguous. This subparameter affects only primary space allocation.

If CONTIG is specified and contiguous space is not available, the system terminates the job step.

MXIG
Requests that space allocated to the data set must be (1) the largest area of available contiguous space on the volume and (2) equal to or greater than the primary quantity. This subparameter affects only primary space allocation.

Caution: IBM recommends that you use extreme care when coding this parameter. Large amounts of storage could be allocated, depending on how much free space is available at the time the request is made. If you code this parameter, IBM recommends that you also code the RLSE parameter to release any unused space.

Note: Do not code a MXIG subparameter for an indexed sequential data set.

ALX
Requests that space allocated to the data set is to be up to 5 of the largest areas of available contiguous space on the volume, and each area must be equal to or greater than the primary quantity. The system allocates fewer than 5 areas only when 5 areas of sufficient size are not available. ALX affects only primary space allocation.

For example, assume the following space extents (in tracks) are available: 910,435, 201, 102, 14, 12, and 8.

If your job requests 14 tracks as its primary allocation, and ALX is in effect, the job receives the following 5 extents: 910, 435, 201, 102, and 14.

However, if the job requests 15 tracks as its primary allocation, it would receive 4 extents: 910, 435, 201, and 102. The job does not receive the 14-track extent because it is less than the primary space allocation.

Caution: IBM recommends that you use extreme care when coding this parameter. Large amounts of storage could be allocated, depending on how much free space is available at the time the request is made. If you code this parameter, IBM recommends that you also code the RLSE parameter to release any unused space.

Note: Do not code an ALX subparameter for an indexed sequential data set.

ROUND
When the first subparameter specifies the average block length, requests that space allocated to the data set must be equal to an integral number of cylinders. If the first subparameter specifies TRK, or CYL, the system ignores ROUND.

Request for Specific Tracks
For an SMS-managed data set (one with an assigned storage class), do not code ABSTR.

ABSTR
Requests that the data set be allocated at the specified location on the volume.

primary-qty
Specifies the number of tracks to be allocated to the data set. The volume must have enough available space for the primary quantity. If it does not, the system terminates the job step.

Specifies the track number of the first track to be allocated. Count the first track of the first cylinder on the volume as 0. Count through the tracks on each cylinder until you reach the track on which you want the data set to start. The absolute track address must be a decimal number equal to or less than 65535.

Note: Do not request track 0.

directory
Specifies the number of 256-byte records needed in the directory of a partitioned data set.

Note: When creating a partitioned data set, you must request space for a directory.

index
Specifies the number of tracks needed for the index of an indexed sequential data set. The number of tracks must equal one or more cylinders.

3.Overrides
With SMS, the SPACE parameter overrides the space allocation attributes defined in the data class for the data set.

Explicit specification of SPACE on the DD statement overrides both the SPACE and the AVGREC values specified in the data class.

4.Relationship to Other Parameters
Do not code the following parameters with the SPACE parameter.

* DYNAM DATA QNAME DDNAME SUBSYS

With KEYLEN for Block Requests
If space is requested in blocks and the blocks have keys, code the DD parameter KEYLEN (or the DCB subparameter KEYLEN) on the DD statement and specify the key length.

5.SPACE for New Data Sets with SMS
With SMS, code the SPACE parameter with or without the AVGREC parameter when you want to (1) request space for the data set or (2) override the space allocation attributes defined in the data class for the data set.

6.Examples of the SPACE Parameter

Example

//DD1 DD DSNAME=&&TEMP,UNIT=MIXED,SPACE=(CYL,10)

The DD statement defines a temporary data set. The UNIT parameter requests any available tape or direct access volume; MIXED is the installation’s name for a group of tape and direct access devices. If a tape volume is assigned, the SPACE parameter is ignored; if a direct access volume is assigned, the SPACE parameter is used to allocate space to the data set. The SPACE parameter specifies only the required subparameters: the type of allocation and a primary quantity. It requests that the system allocate 10 cylinders.

Example

//DD2 DD DSNAME=PDS12,DISP=(,KEEP),UNIT=3350, // VOLUME=SER=25143,SPACE=(CYL,(10,,10),,CONTIG)

The DD statement defines a new partitioned data set. The system allocates 10 cylinders to the data set, of which ten 256-byte records are for a directory. Since the CONTIG subparameter is coded, the system allocates 10 contiguous cylinders on the volume.

Example

These DD statements request space in block lengths. The average block length of the data is 1024 bytes. 75 blocks of data are expected as output. Each block is preceded by a key eight bytes long. The system computes how many tracks are needed, depending on the device requested in the UNIT parameter.

Example

//REQUEST2 DD DSNAME=PET,DISP=NEW,UNIT=3330,VOLUME=SER=606674, // SPACE=(ABSTR,(5,1))

In this example, the SPACE parameter asks the system to allocate 5 tracks, beginning on the second track of the volume.

Example

//DD3 DD DSNAME=MULTIVOL,UNIT=3350,DISP=(,CATLG), // VOLUME=SER=(223344,223345),SPACE=(CYL,(554,554))

This example shows how to create a multivolume data set on two complete volumes. The two volumes do not contain other data sets. A volume on 3350 Direct Access Storage contains 555 cylinders. The unrequested cylinder contains the volume table of contents (VTOC).

Example

//SMSDS3 DD DSNAME=MYDS3.PGM,DATACLAS=DCLAS03,DISP=(NEW,KEEP), // SPACE=(128,(5,2)),AVGREC=K

In this example, the space allocation defined in the DCLAS03 data class is overridden by the SPACE and AVGREC parameters, which indicate an average record length of 128 bytes, a primary quantity of 5K (5,120) records, and a secondary quantity of 2K (2,048) records.

SPIN parameter

Parameter type

Keyword, optional

Purpose

Use the SPIN parameter to specify that the output for the sysout data set is to be made available for processing

• Immediately upon unallocation
• At the end of the job.

1.Syntax

SPIN= {UNALLOC} {NO }

2.Subparameter Definition

UNALLOC
Indicates that the system makes the data set available for processing immediately when the data set is unallocated. If you dynamically unallocate the sysout data set, either explicitly or by specifying FREE=CLOSE, the system makes the data set available for processing immediately. If you do not dynamically unallocate it, the sysout data set is unallocated at the end of the step, and the system will make it available for processing then.

NO
Indicates that the system makes the sysout data set available for processing as a part of the output at the end of the job, regardless of when the data set is unallocated.

3.Defaults
If you dynamically unallocate the sysout data set, the default is that the data set is immediately available for processing. If you unallocate the sysout data set at the end of the step, the default is that the data set is available for processing. at the end of the job.

If you specify FREE=CLOSE, the following defaults apply:

• A data set that is closed by the application program is available for processing immediately.
• A data set that is closed as part of the end-of-step cleanup, such as for a program abend, is available for processing at the end of the job.

If you specify FREE=END, the default is that the data set is available for processing at the end of the job.

4.Overrides
The SEGMENT parameter overrides the SPIN parameter.

Note: Another way for a program to control when the sysout data set becomes available for processing is to issue a SETPRT macro.

5.Relationship to Other Parameters
Do not code the following parameters with the SPIN parameter.

* DDNAME LABEL RETPD AMP DISP LIKE SUBSYS CHKPT DYNAM PROTECT VOLUME DATA EXPDT QNAME

6.Examples of the SPIN Parameter

Example

//DD1 DD SYSOUT=A,FREE=CLOSE,SPIN=UNALLOC

In this example, if you explicitly close or dynamically unallocate the sysout data set, the system makes it available for printing immediately. If you do not explicitly close or dynamically unallocate the sysout data set, the system makes it available for printin at the end of the step.

Example

//DD2 DD SYSOUT=A,FREE=CLOSE,SPIN=NO

In this example, the system makes the sysout data set available for printing at the end of the job, regardless of when it is unallocated or closed.

Example

//DD3 DD SYSOUT=A,FREE=END,SPIN=UNALLOC

In this example, the sysout data set is unallocated at the end of the step, and made available for printing then. If you dynamically unallocate the sysout data set, the system makes it available for printing immediately.

Example

//DD4 DD SYSOUT=A,FREE=END,SPIN=NO

In this example, the system makes the sysout data set available for printing at the end of the job, regardless of whether the data set is unallocated or closed.

STORCLAS parameter

Parameter Type
Keyword, optional — use this parameter only with SMS and for SMS-managed data sets

Without SMS or for non-SMS-managed data sets, use the UNIT parameter and the VOLUME parameter.

Purpose

Use the STORCLAS parameter to specify a storage class for a new SMS-managed data set. The storage administrator at your installation defines the names of the storage classes you can code on the STORCLAS parameter.

The storage class contains the attributes that identify a storage service level to be used by SMS for storage of the data set. It replaces the storage attributes that are specified on the UNIT and VOLUME parameters for non-SMS-managed data sets.

An SMS-managed data set is defined as a data set that has a storage class assigned. A storage class is assigned when either (1) you specify the STORCLAS parameter or (2) an installation-written automatic class selection (ACS) routine selects a storage class for a new data set.

If SMS is not installed or is not active, the system syntax checks and then ignores the STORCLAS parameter. SMS ignores the STORCLAS parameter if you specify it for an existing data set. The use of a storage class can be protected by RACF.

1.Syntax

STORCLAS=storage-class-name

2.Subparameter Definition

storage-class-name
Specifies the name of a storage class to be used for storage of the data set. The name, one to eight characters, is defined by the storage administrator at your installation.

3.Defaults
If you do not specify STORCLAS for a new data set and the storage administrator has provided an installation-written automatic class selection(ACS) routine, the ACS routine may select a storage class for the data set. Check with your storage administrator to determine if an ACS routine will select a storage class for the new data set, in which case you do not need to specify STORCLAS.

4.Overrides
No attributes in the storage class can be overridden by JCL parameters.

An ACS routine can override the storage class that you specify on the STORCLAS parameter.

5.Relationship to Other Parameters
If the storage administrator has specified GUARANTEED_SPACE=YES in the storage class, then volume serial numbers you specify on the VOLUME=SER parameter override the volume serial numbers used by SMS. Otherwise, volume serial numbers are ignored.

Do not code the following DD parameters with the STORCLAS parameter.

* DYNAM UNIT=AFF DATA QNAME VOLUME=REF DDNAME

6.Examples of the STORCLAS Parameter

Example

//SMSDS1 DD DSNAME=MYDS1.PGM,STORCLAS=SCLAS01,DISP=(NEW,KEEP)

In the example, SMS uses the attributes in the storage class named SCLAS01 for the storage service level of the data set. Note that installation-written ACS routines may select a management class and data class and can override the specified storage class.

Example

//SMSDS2 DD DSNAME=MYDS2.PGM,STORCLAS=SCLAS02,DISP=(NEW,KEEP), // VOLUME=SER=(223344,224444)

In the example, SMS uses the attributes in the storage class named SCLAS02 for the storage service level of the data set. Also, if the storage administrator has specified GUARANTEED_SPACE=YES in the storage class, VOLUME=SER can be coded and the data set will reside on the specified volumes. (However, if space is not available on the volumes, the job step fails.) Note that installation-written ACS routines may select a management class and data class and can override the specified storage class.

SUBSYS parameter

Parameter Type

Keyword, optional

Purpose

Use the SUBSYS parameter to request a subsystem to process this data set and, optionally, to specify parameters defined by the subsystem.

Do not use the SUBSYS parameter for an SMS-managed data set (one with an assigned storage class).

In a loosely-coupled multiprocessing environment, the requested subsystem must be defined on all processors that could interpret this DD statement.

Considerations for an APPC Scheduling Environment
In an APPC scheduling environment, avoid coding the system symbolic SYSUID on the SUBSYS parameter. Symbolic substitution is inconsistent when you code SYSUID as a subparameter of SUBSYS parameter.

1.Syntax

SUBSYS= {subsystem-name } {(subsystem-name[,subsystem-subparameter]...)}

Single Subparameter: You can omit the parentheses if you code only the
subsystem-name.

Number of Subparameters: If needed, you can code up to 254 subsystem-
subparameters on a JES2 system, or up to 1020 bytes of data on a JES3 system.

Multiple Subparameters: When the parameter contains more than the subsystem-name, separate the subparameters by commas and enclose the subparameter list in parentheses. For example, SUBSYS=(XYZ,1724,DT25).

Positional Subparameters: If you omit a subparameter that the subsystem considers positional, code a comma in its place.

Special Characters: When a subparameter contains special characters, enclose the subparameter in apostrophes. For example, SUBSYS=(XYZ,1724,'KEY=Y').

Code each apostrophe that is part of a subparameter as two consecutive apostrophes. For example, code O’Day as SUBSYS=(XYX,1724,'NAME=O''DAY').

If you code a symbolic parameter on the SUBSYS parameter, you can code the symbolic parameter in apostrophes.

Continuation onto Another Statement: Enclose the subparameter list in only one set of parentheses. End each statement with a comma after a complete
subparameter. For example:

//DS1 DD DSNAME=DATA1,SUBSYS=(XYZ,1724,’KEY=Y’, // DT25,’NAME=O’’DAY’)

Note: The SUBSYS parameter can have a null value only when coded on a DD which either:

• Overrides a DD in a procedure
• Is added to a procedure.

2.Subparameter Definition

subsystem-name
Identifies the subsystem. The subsystem name is 1 through 4 alphanumeric or national ($, #, @) characters; the first character must be alphabetic or national ($, #, @). The subsystem must be available in the installation.

subsystem-subparameter
Specifies information needed by the subsystem. A subparameter consists of alphanumeric, national ($, #, @), or special characters. 3.Relationship to Other Parameters Do not code the following DD parameters with the SUBSYS parameter: * DDNAME QNAME AMP DYNAM SEGMENT DATA MODIFY SYSOUT The specified subsystem can define other parameters that you must not code with the SUBSYS parameter: Ignored but Permitted DD Parameters If you specify any of the following DD parameters, the system checks them for syntax and then ignores them: HOLD UNIT If you specify the SPACE parameter, the system checks its syntax and then ignores it, but the subsystem designated on the SUBSYS parameter may use this information when it allocates the DD. DISP Parameter The system checks the DISP status subparameter for syntax, but always indicates a status of MOD to the subsystem. If the DISP normal or abnormal termination subparameter is CATLG or UNCATLG, the system allocates the appropriate catalog to the subsystem. DUMMY Parameter If DUMMY is specified with SUBSYS, the subsystem checks the syntax of the subsystem subparameters. If they are acceptable, the system treats the data set as a dummy data set. When This Statement Overrides a Procedure Statement If SUBSYS appears on a DD statement that overrides a DD statement in a cataloged or in-stream procedure, the following occurs: • The system ignores a UNIT parameter, if specified, on the overridden DD statement. • The system nullifies a DUMMY parameter, if specified, on the overridden DD statement. 4.Subsystem Support for JCL Parameters The specified subsystem might not support all parameters on the DD and OUTPUT JCL statements. 5.Examples of the SUBSYS Parameter Example //DD1 DD DSNAME=ANYDS,DISP=OLD,SUBSYS=ABC The DD statement asks subsystem ABC to process data set ANYDS. Example //DD1 DD DSNAME=ANYDS,DISP=OLD,SUBSYS=(XYZ2, // ’KEYWORD=DATA VALUE1’) The DD statement asks subsystem XYZ2 to process data set ANYDS. The system passes the subparameter KEYWORD=DATA VALUE1 to the subsystem. The parameter is enclosed in apostrophes because it contains an equal sign and a blank, which are special characters. Example //DD1 DD DSNAME=ANYDS,DISP=OLD,SUBSYS=(XYZ2,IKJ2, // ’NAME=’’MODULE1’’’,’DATE=4/11/86’) The DD statement asks subsystem XYZ2 to process the data set ANYDS. The system passes three subparameters to the subsystem: IKJ2, NAME='MODULE1' and DATE=4/11/86. Note that the character string MODULE1 is passed to the subsystem enclosed in apostrophes. Example //DD1 DD SUBSYS=(AOP1,’MyPrinter’) The DD statement asks the Infoprint Server subsystem named AOP1 to process a sysout data set. The system passes the subparameter MyPrinter to the Infoprint Server subsystem. The subparameter is enclosed in apostrophes because it contains lowercase letters. SYSOUT parameter Parameter Type Keyword, optional Purpose Use the SYSOUT parameter to identify this data set as a system output data set, usually called a sysout data set. Do not use the SYSOUT parameter for an SMS-managed data set (one with an assigned storage class). The SYSOUT parameter also: • Assigns this sysout data set to an output class. The attributes of each output class are defined during JES initialization. • Optionally requests an external writer to process the sysout data set rather than JES. An external writer is an IBM- or installation-written program. • Optionally identifies the forms on which the data set is to be printed or punched. • Optionally refers to a JES2 /*OUTPUT statement for processing parameters. The sysout data set is processed according to the following processing options, in override order: 1. The options specified on this sysout DD statement. 2. The options specified on a referenced OUTPUT JCL statement. 3. The options specified on a referenced JES2 /*OUTPUT statement or on a JES3 //*FORMAT statement. 4. The installation default options for the requested output class. Notes: 1. If a sysout data set has the same class as the JOB statement MSGCLASS parameter, the job log appears on the same output listing as this sysout data set. 2. An installation should maintain a list of available output classes and their attributes. Some classes should be used for most printing and punching, but others should be reserved for special processing. Each class is processed by an output writer. The system operator starts the output writers for the commonly used output classes. If you plan to specify a special output class, ask the operator to start the output writer for that class. If the writer is not started before the job produces the sysout data set, the data set is retained until the writer is started. 3. If the automatic restart manager (ARM) restarts a job, JES discards all non-spin sysout data sets created during the previous execution. (You can avoid losing that output by adding SPIN=UNALLOC to the DD statement for the SYSOUT data set.) 1.Syntax SYSOUT= { class } { * } { ([class] [,writer-name] [,form-name]) } [ ,INTRDR ] [,code-name] SYSOUT= (,) • You can omit the parentheses if you code only a class. • All of the subparameters are positional. Code a comma to indicate an omitted subparameter as follows: • – If you omit the class, code a comma to indicate the omission. For example, when other subparameters follow, code SYSOUT=(,INTRDR,FM26). When other subparameters do not follow, code a null class as SYSOUT=(,). – If you omit a writer-name but code a form-name or code-name, code a comma to indicate the omission. For example, SYSOUT=(A,,FM26). – Omission of the third subparameter does not require a comma. For example, SYSOUT=A or SYSOUT=(A,INTRDR). 2.Subparameter Definition Class Identifies the output class for the data set. The class is one character: A through Z or 0 through 9, which you may optionally include in quotation marks. The attributes of each output class are defined during JES initialization; specify the class with the desired attributes. *: Requests the output class in the MSGCLASS parameter on the JOB statement. In a JES2 system you can also use the dollar-sign ($) to request the output class in the MSGCLASS parameter on the JOB statement.

(,): Specifies a null class. A null class must be coded to use the CLASS parameter on a referenced OUTPUT JCL statement.

writer-name
Identifies the member name (1 to 8 alphanumeric characters) of an installation-written program.

An external writer is a started task used to process output. Because the external writer is a started task, it has a userid associated with it. Process output with an external writer by naming the writer on the DD statement that defines the output:

//MYOUTPUT DD SYSOUT=(A,XTWTR)

In order for the writer to process that output, the writer’s userid must be in a RACF access list. The access list permits the writer’s userid to the SYSOUT data set. The writer’s userid is the userid specified in the started procedure table for the writer task. If your installation’s policy requires security labels, the security label associated with the external writer must be equal to or greater than the security label associated with the SYSOUT.

Do not code STDWTR as a writer-name.STDWTR is reserved for JES and used as a parameter in the MVS operator’s MODIFY command.

In a JES3 system, do not code NJERDR as a writer-name. NJERDR is reserved for JES3.

INTRDR
Tells JES that this sysout data set is to be sent to the internal reader as an input job stream.

form-name
Identifies the print or punch forms. form-name is 1 through 4 alphanumeric or national (\$, #, @) characters.

code-name
Identifies an earlier JES2 /*OUTPUT statement from which JES2 is to obtain processing characteristics. The code-name must be the same as the code parameter on the JES2 /*OUTPUT statement.

Note:

• code-name is supported only on JES2 systems.
• Do not specify the code-name subparameter when the job or job step contains a default OUTPUT JCL statement.

3.Defaults
In a JES2 system, if you do not specify a class on this DD statement or a referenced OUTPUT JCL statement, JES2 assigns the sysout data set to the output class defined by the MSGCLASS value of the JOB statement. See the override order shown under ²Purpose² for how this default is established. If you do not code a writer-name subparameter on this DD statement or a referenced OUTPUT JCL statement, the installation’s job entry subsystem processes the sysout data set. If you do not code a form-name subparameter on this DD statement or a referenced OUTPUT JCL statement, JES uses an installation default specified at initialization.

4.Overrides
The class subparameter of the DD statement SYSOUT parameter overrides an OUTPUT JCL CLASS parameter. On the DD statement, you must code a null class in order to use the OUTPUT JCL CLASS parameter; for example:

//OUTDS DD SYSOUT=(,),OUTPUT=*.OUT1

The writer-name subparameter of the DD statement SYSOUT parameter overrides an OUTPUT JCL WRITER parameter. The form-name subparameter of the DD statement SYSOUT parameter overrides an OUTPUT JCL FORMS parameter. Note that the SYSOUT form-name subparameter can be only four characters maximum while both the OUTPUT JCL FORMS form-name and the JES initialization default form names can be eight characters maximum.

5.Relationship to Other Parameters
Do not code the following DD parameters with the SYSOUT parameter.

* DDNAME LIKE AMP DISP PROTECT CHKPT DYNAM QNAME DATA EXPDT RETPD DATACLAS LABEL SUBSYS VOLUME

Ignored Parameters

Because JES allocates sysout data sets, the UNIT and SPACE parameters are ignored, if coded on a sysout DD statement.

Parameters on Procedure DD Statements that are Overridden

When an overriding DD statement contains a SYSOUT parameter, the system ignores a UNIT parameter on the overridden DD statement in the cataloged or in-stream procedure.

Naming a Sysout Data Set

Code the DSNAME parameter with the SYSOUT parameter if you wish to assign the last qualifier of the system-generated name to a sysout data set.

SYSOUT and DEST Subparameters

Do not code the SYSOUT writer-name subparameter when coding a DEST userid subparameter. These subparameters are mutually exclusive. You can code:

//VALID1 DD SYSOUT=D,DEST=(node,userid) //VALID2 DD SYSOUT=(D,writer-name),DEST=(node)

With DCB Subparameters

JES2 ignores DCB=PRTSP=2 on a DD statement that also contains a SYSOUT parameter. For JES, it is not necessary to select a specific BLKSIZE on the DCB parameter for performance reasons because the subsystem selects its own blocking.

INTRDR with OUTPUT Parameter

Do not code an OUTPUT parameter when the writer-name subparameter is INTRDR.

6.Relationship to Other Control Statements
A sysout DD statement can directly or indirectly reference an OUTPUT JCL
statement. The parameters on the referenced OUTPUT JCL statement combine with the parameters on the sysout DD statement to control the processing of the sysout data set.

SYSOUT cannot specify a code-name subparameter in a job or job step that contains an OUTPUT JCL statement; in this case, JES2 treats the third
subparameter as a form-name, instead of a reference to a JES2 /*OUTPUT statement.

Backward References

Do not refer to an earlier DD statement that contains a SYSOUT parameter.

7.Starting an External Writer when Requested
When a statement supplying processing options for a sysout data set specifies an external writer, the writer must be started before it can print or punch the data set.The writer is started by a system command from the operator or in the input stream. If the writer is not started before the job produces the sysout data set, the data set is retained until the writer is started.

8.Held Classes in a JES2 System
A sysout data set is held if the sysout DD statement contains HOLD=YES or the OUTPUT JCL statement specifies OUTDISP=HOLD.

9.Held Classes in a JES3 System
If CLASS specifies a class-name that is defined to JES3 as a held class for the output service hold queue (Q=HOLD), all of the new output characteristics might not be included in the data set on the writer queue when (1) the data set is moved from the hold queue to the output service writer queue (Q=WTR), (2) the data setincludes an OUTPUT JCL statement, and (3) the NQ= or NCL= keyword is used.

10.Significance of Output Classes
To print this sysout data set and the messages from your job on the same output listing, code one of the following:

• The same output class in the DD SYSOUT parameter as in the JOB MSGCLASS parameter.
• DD SYSOUT=* to default to the JOB MSGCLASS output class.
• DD SYSOUT=(,) to default to one of the following:
1. The CLASS parameter in an explicitly or implicitly referenced OUTPUT JCL statement. In this case, the OUTPUT JCL CLASS parameter should specify the same output class as the JOB MSGCLASS parameter.
2. The JOB MSGCLASS output class, if no OUTPUT JCL statement is referenced or if the referenced OUTPUT JCL statement contains either CLASS= or CLASS=*.

11.Examples of the SYSOUT Parameter

Example

//DD1 DD SYSOUT=P

In this example, the DD statement specifies that JES is to write the sysout data set to the device handling class P output.

Example

//DD2 DD DSNAME=&&PAYOUT1,SYSOUT=P

In this example, DD statement DD2 defines PAYOUT1 as the last qualifier of the system-generated name for the sysout data set. The system generates a name such as serid.jobname.jobid.Ddsnumber.PAYOUT1. The DD statement specifies that JES is to write the data set to the device handling class P output.

Example

In this example, DD statement DDX specifies that JES is to write the sysout data set to the device handling class C output. Because the SYS