The COMPAT option allows you to specify the compatibility level
of the binder. For instance, when binding a module you can specify
LKED which will partially alter the binder's behavior and its ultimate
output as if you had invoked the linkage editor. PM2 or PM3 would
allow you to take advantage of the functions supported by the newer
version of program modules.
Awareness of the function provided by each option value allows
you to anticipate the behavior of your bound programs as you share
them across systems that might not support the same functionality.
The functional differences are broadly discussed below for each option
value.
If the output is directed to a PDS, the output module is saved
as a load module regardless of the value of COMPAT. COMPAT(LKED) will
alter some of the processing.
If SYSLMOD is allocated to a PDSE or a
z/OS UNIX file, the
output is saved as a program object in the format specified by the
COMPAT option. If the user specified a COMPAT value that does not
support the contents of the module, binder will issue a level 12 message
and fail the bind.
COMPAT={MIN | LKED | {CURRENT | CURR} | PM1 | PM2
| {PM3 | OSV2R8 | OSV2R9 | OSV2R10 | ZOSV1R1 | ZOSV1R2}
| {PM4 | ZOSV1R3 | ZOSV1R4} | {ZOSV1R5 | ZOSV1R6} | {ZOSV1R7}
| {PM5 | ZOSV1R8 | ZOSV1R9} | {ZOSV1R10 | ZOSV1R11 | ZOSV1R12}
| {ZOSV1R13| ZOSV2R1}
- CURRENT or CURR
- Specifies that the output is to be as defined
for the current level of the binder. For the level of Program Management
support described in this version of the manual, CURRENT is the same
as ZOSV2R1.
- ZOSV2R1
- COMPAT=ZOSV2R1 is the minimum level that supports preserving all
boundary alignments specifications coming from ESD records. ALIGNT
can be used to specify boundary alignments for both load modules and
program objects without requiring the use of COMPAT(ZOSV2R1).
- ZOSV1R13
- COMPAT=ZOSV1R13 is the minimum level that supports conditional
sequential RLDs.
- ZOSV1R10 | ZOSV1R11| ZOSV1R12
- COMPAT=ZOSV1R10 is the minimum level that supports saving the
timestamp from compiler IDRL records in program objects. It also supports
the RLD type corresponding to the assembler QY-con. The QY-con is
a special form of QCON representing the displacement in RXY type instructions.
- PM5 | ZOSV1R8 | ZOSV1R9
- COMPAT=PM5 is the minimum level that supports cross-segment references
in relative immediate instructions in program objects.
Caution:
Programs bound with this option cannot be loaded, inspected, or reprocessed
on any MVS™ version prior to z/OS® 1.8.
- ZOSV1R7
- COMPAT=ZOSV1R7 is the minimum level that supports relative/immediate
instructions across compile units or compression of non-program data.
- ZOSV1R5 | ZOSVIR6
- COMPAT=ZOSV1R5 is the minimum level that can be specified if RMODE
64 has been specified by a compiler for deferred load data segments.
- PM4 | ZOSV1R3 | ZOSV1R4
- COMPAT=PM4 is the minimum level that can be specified if any of
the following features are used:
- Input modules contain 8-byte adcons
- Any ESD record is AMODE 64
- Input contains symbol names longer than 1024, unless EDIT=NO
- A value of 64 is specified on the AMODE option or control statement
If COMPAT=PM4 and OVLY are both specified, COMPAT=PM4 is changed
to PM1. PM4 supports all PM3, PM2 and PM1 features.
- PM3 | OSV2R8 | OSV2R9 | OSV2R10 | ZOSV1R1 | ZOSV1R2
- In general, COMPAT=PM3 is the minimum level that can be specified
if any of the following features are used:
- Binding modules compiled using the XPLINK attribute
- DYNAM=DLL
- XOBJ format input to the binder without going through the Language Environment® prelinker,
or rebinding modules containing input from such sources
- Hidden aliases (from ALIASES control statement)
- Support for both deferred load classes and merge classes with
initial text (from GOFF format input modules or data buffers passed
via the binder API.)
- Language Environment-enabled programs
If COMPAT=PM3 and OVLY are both specified, COMPAT=PM3 is changed
to PM1.
PM3 supports all PM2 and PM1 features.
- PM2
- In general, COMPAT=PM2 is the minimum level that can be specified
if any of the following are used:
- User-defined classes passed in GOFF format input as well as certain
other information supported only in GOFF format
- Names (from input modules or created by control statements which
cause renaming) that are longer than 8 bytes.
- Use of RMODE=SPLIT
If OVLY is specified, COMPAT=PM2 is changed to PM1.
PM2
supports all PM1 features.
- PM1
- This is the minimum level which supports binder program objects.
In addition to old linkage editor load module features, program object
features supported here include:
- Device-independent record format
- Text length greater than 16 megabytes
- More than 32,767 external names
OVLY is supported, and will force PM1 to be used.
- MIN
- This is the default, and indicates that the binder should select
the minimum PM level that supports the features actually in use for
the current bind.
- LKED
- Specifies that certain binder processing options are to work in
a manner compatible with the linkage editor. Specific processing affected
by this specification includes:
- AMODE/RMODE—Where conflicts exist between the AMODE or RMODE of
individual entry points or sections and the value specified in the
AMODE or RMODE option, the option specification will prevail. No warning
message will be issued and the return code remains unchanged.
- REUS—If a section is encountered in a module with a lower reusability
than that specified on the REUS option, the reusability of the module
is automatically downgraded. An information message is issued and
the return code remains unchanged.
This should not be thought of as a level below PM1. Since
LKED does not tell the binder what format to use when saving a program
object, the binder will behave according to MIN.
If COMPAT is not specified, the output format used by the binder
will be the same as if you had specified COMPAT=MIN.