The following SYSLMOD information applies only to the batch interface
of the binder:
- The SYSLMOD DD statement is required. It describes the output
program library, which must be a partitioned data set, a PDSE, or
a z/OS UNIX file.
If it is a z/OS UNIX file,
you must specify the PATH parameter. z/OS UNIX supports the
use of an alternate ddname for SYSLMOD.
- A member name can be specified on the SYSLMOD DD statement. If
a member name is specified, it is used only if a name was not specified
on a NAME control statement. This member name must conform to the
rules for the name on the NAME control statement (see NAME statement).
- If SYSLMOD is referenced by an INCLUDE statement, a member name
on the DD statement must be the name of an existing member.
Note: If
you specify the PATH parameter on this DD statement,
but do not specify PATHOPTS or PATHMODE,
the binder assigns attributes for the created file that allow only
the file owner to have read, write, and execute authority.
- When a NAME statement is not used and a member name
is supplied on the SYSLMOD DD statement, the behavior is to REPLACE
(just as when using NAME with (R), or SAVEW with REPLACE=YES).
The following SYSLMOD information applies to both the batch interface
and the Application Programming Interface of the binder:
- If the member replaces an identically named member in an existing
library, the disposition should be OLD or SHR.
- If the member is added to an existing library, the disposition
should be MOD, OLD, or SHR.
- If no library exists and the member is the first added to a new
library, the disposition should be NEW or MOD.
- If the member is added to an existing library that can be used
concurrently by other users in the system or in other systems sharing
the library, the disposition should be SHR.
- Programs which call the binder can specify a different DD name
to replace SYSLMOD. All references here to SYSLMOD also apply to that
replacement name.
- If SYSLMOD defines a NEW data set, do not specify the RLSE subparameter
because the binder closes the data set after saving each member.
- Do not specify the FREE=CLOSE parameter on the SYSLMOD dataset,
whether it is NEW or OLD.
- The binder writes data to a PDS or PDSE in RECFM=U format.
- If the data set is being created in this step without an explicit
RECFM, or already exists but has no record format, the binder will
set its record format to U.
- If the data set already has a record format other than U, the
binder will not write to it unless you provide an explicit override
of RECFM=U.
- A PDSE cannot contain a mixture of program objects with other
data, so an explicit override of RECFM=U is likely to fail in that
case.
- A PDS can contain a mixture of load modules with other data, but
overriding the data set record format may interfere with access to
other data in the PDS.
- The binder always assigns a block size of 4 KB to a program object.
Procedures used by the binder to assign block size to a load module are:
- If the data set is new:
- When the DCBS option is not specified
- When the data set is created without a block size, the block size
is the maximum supported by the access method for that device type.
- When the data set is created with a block size, the block size
specified on the DD statement is used if it is smaller than the maximum
block size supported by the device.
- Certain of the binder options can restrict the blocksize. The
block size is:
- 1KB if the DC option is specified,
- the value specified on the MAXBLK option,
- one-half the value specified for value2 on
the SIZE option,
- When the DCBS option is specified, the block size is the smaller
of:
- The maximum block size for the device
- The value of the BLKSIZE parameter on the SYSLMOD DD statement
- The actual output buffer length.
- The minimum block size is 256 bytes.
- If the data set already exists:
- When the DCBS option is not specified, the larger of the existing
block size or 256 bytes is used.
- See DCBS option for the block size determination
when the block size exists and the DCBS option is specified.
In the following example, the SYSLMOD DD statement specifies a
permanent partitioned data set library on an IBM® 3390 direct access storage device:
//SYSLMOD DD DSNAME=USER.USERLIB(TAXES),DISP=NEW,UNIT=3390,...
The binder assigns a record format of U and a block size of 32760
bytes. However, consider the following example:
//LKED EXEC PGM=IEWBLINK,PARM='XREF,DCBS'
⋮
//SYSLMOD DD DSNAME=USER.USERLIB(TAXES),DISP=SHR,UNIT=3390,
// DCB=BLKSIZE=8000
The binder still assigns a record format of U, but the block size
is 8000 bytes rather than 32760 bytes because of the use of the DCBS
option.