Joined: 01 Mar 2006 Posts: 290 Location: Basel, Switzerland
amode and rmode are linkage editor options,
they have nothing to do with your cobol program.
these options fit for all program languages that need
to be link edited.
AMODE - Addressing Mode Option
To assign the addressing mode for all the entry points into a program
module (the main entry point, its true aliases, and all the alternate
entry points), you should code the AMODE parameter as follows:
The addressing mode must be either 24, 31, ANY, or MIN. When AMODE=MIN is
coded, the binder assigns one of the other three values to the output
module; it selects the most restrictive mode of all control sections
within the output module. See "Addressing and Residence Modes" in
item ADDRESS&RESIDNCE for more information about AMODE and RMODE.
The addressing mode assigned in the PARM field is overridden by an
addressing mode assigned in the MODE control statement. However, the
values in the PARM field override the separate addressing modes found in
the ESD data for the control sections or private code where the entry
points are located.
AMODE and RMODE values are specified independently, but the values are
checked for conflicts before output processing occurs. See "AMODE and RMODE Combinations" in item MODE-COMBINATNS for information on AMODE and
RMODE compatibility and the setting of default values.
RMODE - Residence Mode Option
To assign the residence mode for all the entry points into a program
module, you can code the RMODE parameter as follows:
The residence mode assigned in the PARM field is overridden by a residence
mode assigned in the MODE control statement, but overrides the accumulated
residence mode found in the ESD data for the control sections or private
code in the input.
AMODE and RMODE values are specified independently, but checked for
conflicts before output processing occurs. See "AMODE and RMODE
Combinations" in item MODE-COMBINATNS for information on AMODE and RMODE
compatibility and the setting of default values.
RMODE(SPLIT) When an RMODE(SPLIT) module is loaded, the LOAD service
returns a length of zero. When you use LOAD, the CSVQUERY service should
be used with the OUTXTLST parameter to obtain information about the
address (load point) and length of each program segment. See CSVQUERY in
&ieaa600t. for more information.
RMODE(SPLIT) specifies the program text (class B_TEXT) can be split into
two class segments according to the RMODE of each section. Rules for
splitting the text are:
o If RMODE(SPLIT) is specified, the B_TEXT class of each included module
is distributed between the two class segments according to the RMODE
of each section contained in the module.
o If RMODE(SPLIT) is not specified, either through the binder execution
parameter or a control statement, included text in classes B_TEXT,
B_TEXT24 and B_TEXT31 are combined into B_TEXT class and loaded into
memory using the existing RMODE resolution rules.
o If the OVLY option is specified, RMODE is reset to 24 and the split
module is not produced.
o If the module is the target of a directed load (where the issuer of
the LOAD is providing the storage in which to load the module), the
two class segments are concatenated and loaded into storage as a
single unit. The module length field in the directory, PMAR_STOR,
indicates the combined length of the program object. PMAR_STOR is in
the IGWPMAR DSECT obtained when you issue the DESERV macro
function=GET. Or the value is also contained in PDS2VSTR in IHAPDS
when BLDL is issued.
o If RMODE(SPLIT) is specified, consider the HOBSET option. If you
specify HOBSET, the high order bit of each V-type address is set
according to the AMODE of the called entry point.
thanks a lot for the info U have given.
In the reply you said.
See "AMODE and RMODE Combinations" in item MODE-COMBINATNS for information on AMODE and RMODE compatibility and the setting of default values.
Can you please clear what reference are you pointing to.so that I get some more info
Joined: 01 Mar 2006 Posts: 290 Location: Basel, Switzerland
AMODE and RMODE Combinations
If an AMODE or RMODE value is not specified on a MODE control statement or
in the PARM field of an EXEC statement, the binder derives a value based
on information in the ESD.
If RMODE is not specified, the module is assigned an RMODE of 24 if
o Any section in the module has an RMODE of 24 (Note that resident
LPA-resident sections resulting from the use of the RES Loader option
are not considered when determining RMODE)
o An AMODE of 24 has been specified or defaulted.
Otherwise, the module is assigned an RMODE of ANY. Note that some
sections (for example, those resident in the LPA) are not considered when
If AMODE is not specified, each entry point and alias in the module is
assigned the AMODE of that entry point. If the entry point or alias does
not correspond to a defined symbol or the symbol does not specify an
AMODE, the AMODE of the control section containing the entry point or
alias will be used.
If the AMODE of the section containing the entry point is AMODE(MIN) then
the entry point is assigned the most restrictive AMODE of all control
sections in the input to the program module. Note that the AMODE(MIN) can
be in effect due to the conversion of ESD values AMODE(ANY) RMODE(ANY).
(see "Addressing and Residence Modes" in item ADDRESS&RESIDNCE ).
Addressing and Residence Modes
A program module has a residence mode assigned to it, and each entry point
and alias has an addressing mode assigned to it. You can specify one or
both of these modes when creating a program module or you can allow the
binder to assign default values. For additional information see "AMODE
and RMODE Hierarchy" in item MODE-HIERARCHY. The addressing and residence
modes must be compatible. The binder, however, allows you to specify them
as independent options and validates the combination when the module is
saved. See "AMODE and RMODE Combinations" in item MODE-COMBINATNS for
information on how the binder resolves addressing and residence modes.
AMODEs and RMODEs can be assigned at assembly or compilation time for
inclusion in an object module. AMODE and RMODE values provided to the
binder in the ESD data of an object module are retained in the ESD data of
the program module (except for overlay programs). Overriding the AMODE
and RMODE values in the ESD (see "AMODE and RMODE Hierarchy" in item
MODE-HIERARCHY ) sets the values in the program library directory entry,
but does not affect the ESD data.
A special, invalid combination of AMODE(ANY) RMODE(ANY), when appearing in
ESD records, is processed as AMODE(MIN). This setting is used by some
compilers when creating OBJ-format object modules that do not support