These substatements are valid for members of the R, C and L base types and must directly follow the MODIFY-ELEMENT statement. They are read from the statement stream until the END-MODIFY substatement is encountered.
The MODIFY-ELEMENT substatements make modifications to object modules, phases and link and load modules (LLM).
LMS initially collects these substatements and executes them only after the END-MODIFY substatement has been entered.
Overview of MODIFY-ELEMENT substatements
These substatements are dependent on the selected member type and are permitted only for members of types R, C or L.
MODIFY-ELEMENT statement | Member type | Function |
ADD-REP-RECORD | R | Generate REP records |
ADD-TEXT-MODIFICATION | R,C,L | Modify text records |
DELETE-RECORD-TYPE | R,C,L | Delete record types |
END-MODIFY | R,C,L | Terminate modifications |
MODIFY-CSECT-ATTRIBUTES | R | Modify CSET attributes |
MODIFY-MODIFICATION- | R,C,L | Define global parameters in the MODIFY- |
REMOVE-MODIFICATION | R,C,L | Cancel corrections |
RENAME-SYMBOLS | R | Rename CSECTs, ENTRYs, EXTRNs and |
Note
The SDF standard statements (see "SDF standard statements for LMS") are also permitted as MODIFY-ELEMENT substatements.
ADD-REP-RECORD
The MODIFY-ELEMENT substatement ADD-REP-RECORD adds REP records to the object module. These REP records are evaluated by the dynamic binder loader (DBL).
ADD-REP-RECORD is permitted only for object modules (R-type members).
ADD-REP-RECORD | ||||||||||||||||
|
ADDRESS = <x-string 1..8>(...)
Specifies the address at which the member selected by MODIFY-ELEMENT is to be modified.
BASE-ADDRESS = *MODIFICATION-DEFAULT / <x-string 1..8>
Base address. BASE-ADDRESS is added to ADDRESS. The resulting correction address must, in the case of prelinked modules, relate to the prelinked module (and not to the CSECT).
NEW-CONTENTS = <x-string 1..100> / <c-string 1..50 with-low>
Replacement text specified in character or hexadecimal form.
If the text is specified in character form, it must not exceed 50 characters in length. An apostrophe in the text must be duplicated.
If the text is specified in hexadecimal form, it must not exceed 100 characters in length.
Statement return code
(SC2) | Maincode | Meaning |
0 | CMD0001 | No error |
ADD-TEXT-MODIFICATION
The MODIFY-ELEMENT substatement ADD-TEXT-MODIFICATION corrects text records of an object module and phases. This substatement generates a correction journal record (TXTP record) that contains the original contents of the text area.
With the MODIFY-MODIFICATION-DEFAULTS statement, you can specify that no correction journal record is to be created. Corrections without a correction journal record cannot be reversed by the REMOVE-MODIFICATION substatement.
This substatement may be used for members of types R, C and L.
ADD-TEXT-MODIFICATION | ||||||||||||||||||||||||||||||||||||
|
ADDRESS = <x-string 1..8>(...)
Specifies the address at which the member selected by MODIFY-ELEMENT is to be modified.
BASE-ADDRESS = *MODIFICATION-DEFAULT / <x-string 1..8>
Base address.
The base address is added to ADDRESS. The resulting correction address is as follows:
For ... | Relative to: |
modules | start of CSECT |
phases | start of phase |
LLMs | start of CSECT if a CSECT has been specified |
start of sub-LLM if a sub-LLM has been specified (the desired sub-LLM | |
start of slice if a slice has been specified (the desired slice is specified | |
start of LLM if nothing has been specified and the LLM only consists of |
NEW-CONTENTS = <x-string 1..100>(...) / <c-string 1..50 with-low>(...)Replacement text specified in character or hexadecimal form.
OLD-CONTENTS = *ANY / <x-string 1..100> / <c-string 1..50 with-low>
Original text of the member. The original text must always be specified the same length as the replacement text.
MODIFICATION-ID = *MODIFICATION-DEFAULT / *SPACES / <c-string 1..12 with-low>Identification which is held in the correction journal record (TXTP record). If SPACES is specified, blanks are used as the identification.
Only 8 characters are allowed for member types R and C.
Statement return code
(SC2) | Maincode | Meaning |
0 | CMD0001 | No error |
DELETE-RECORD-TYPE
The MODIFY-ELEMENT substatement DELETE-RECORD-TYPE excludes the following record types from the input member:
ISD records (applies only to R-type members)
LSD records (applies only to R-type members)
REP records (applies only to R-type members)
INCLUDE records (applies only to R-type members)
TXTP records (applies only to R-, C- and L-type members)
DSDD records (applies only to R-type members)
This substatement may be used for members of types R, C and L.
DELETE-RECORD-TYPE | ||||||||||||
|
TYPE = *TXTP(...) / list-poss(5): *ISD / *LSD / *REP / *DSDD / *INCLUDE
Defines the record type that is not to be transferred from the input member to the output member.
MODIFICATION-ID = *ALL / *SPACES / <c-string 1..12 with-low>
Only those TXTP records with the specified identification are deleted.
For member types R and C, only 8 characters are allowed.
This identification applies only to this DELETE-RECORD-TYPE.
Statement return code
(SC2) | Maincode | Meaning |
0 | CMD0001 | No error |
Note
Deleted record types cannot be retrieved.
END-MODIFY
END-MODIFY concludes the sequence of MODIFY-ELEMENT substatements. LMS then checks all the statements for executability and executes the statement string.
END-MODIFY |
This substatement has no operands.
Statement return code
(SC2) | SC1 | Maincode | Meaning |
| 0 | CMD0001 | No error |
MODIFY-CSECT-ATTRIBUTES
The MODIFY-ELEMENT substatement MODIFY-CSECT-ATTRIBUTES modifies CSECT attributes.
This substatement must be used for object modules (R-type members) only.
MODIFY-CSECT-ATTRIBUTES |
NAME = *ALL / <c-string 1..8 with-low> / <text 1..8> ,VISIBLE = *UNCHA NGED / *YES / *NO ,READ-ONLY = *UNCHA NGED / *YES / *NO ,PAGE-ALIGNMENT = *UNCHA NGED / *YES / *NO ,RESIDENCY-MODE = *UNCHA NGED / 24 / *ANY ,ADDRESSING-MODE = *UNCHA NGED / 24 / 31 / *ANY |
At the beginning of the MODIFY-ELEMENT statement, the operands are preset to the value immediately following *UNCHANGED.
NAME = *ALL / <c-string 1..8 with-low> / <text 1..8>
Name of the CSECT whose attributes are to be modified. All CSECTs or a specific CSECT can be specified.
VISIBLE = *UNCHANGED / *YES / *NO
Masking (visibility) of CSECTs.
VISIBLE = *YES
The specified control sections are not masked (see [4 (Related publications)]).
A secondary name record is created for these sections, and the names are entered in the directory of secondary names.
VISIBLE = *NO
The specified control sections are masked. No secondary name record is created for these sections, and the names are not entered in the directory of secondary names. Any secondary name record which may exist is deleted.
If all control sections of an object module are masked, a library member without a secondary name entry is created. This object module can be located via the primary name only.
The module name can, however, be derived from the initial control section name with the aid of all ESD records, since masked control sections are also used in this case.
Note
The linkage editor cannot process object modules which only have masked control sections, e.g. when an object module is excluded with the autolink function.
The VISIBLE operand can also be used on ENTRYs.
READ-ONLY = *UNCHANGED / *YES / *NO
Write protection.
READ-ONLY = *YES
Indicates that only read access to the specified control sections is permitted while the program is executing.
READ-ONLY = *NO
Enables write access to the specified control sections even while the program is executing.
PAGE-ALIGNMENT = *UNCHANGED / *YES / *NO
Page alignment.
PAGE-ALIGNMENT = *YES
Indicates that the specified control sections are to be aligned on a page boundary, i.e. the load address should be a multiple of decimal 4096 or hexadecimal 1000.
PAGE-ALIGNMENT = *NO
Does not take page boundaries into account. The control sections always start at the next doubleword address produced during the linkage process.
RESIDENCY-MODE = *UNCHANGED / 24 / *ANY
Load mode.
RESIDENCY-MODE = 24
Indicates that the specified control sections are to be loaded to the address area below the 16-Mbyte limit.
RESIDENCY-MODE = *ANY
No limitation exists.
ADDRESSING-MODE = *UNCHANGED / 24 / 31 / *ANY
Execution mode.
ADDRESSING-MODE = 24
Indicates that the specified control sections are to be executable in 24-bit mode.
ADDRESSING-MODE = 31
Indicates that the specified control sections are to be executable in 31-bit mode.
ADDRESSING-MODE = *ANY
Any execution mode.
Statement return code
(SC2) | Maincode | Meaning |
0 | CMD0001 | No error |
MODIFY-MODIFICATION-DEFAULTS
The MODIFY-ELEMENT substatement MODIFY-MODIFICATION-DEFAULTS defines the global default values within the MODIFY-ELEMENT statement.
This substatement may be used for members of types R, C and L.
MODIFY-MODIFICATION-DEFAULTS | ||||||||||||||||||||||||||||||||||||||||||||
|
At the beginning of the MODIFY-ELEMENT statement, the operands are preset to the value immediately following *UNCHANGED.
CSECT-NAME = *UNCHANGED / *NONE / <c-string 1..32 with-low> / <text 1..32> Name of the CSECT to be corrected (relevant only for types R and L).
CSECT-NAME = *NONE
If no CSECT name is specified, in the case of R-type modules the first CSECT name is used.
PHASE-SEGMENT = *UNCHANGED / *ROOT / <name 1..8>
Specifies the phase segment to be corrected. If no segment is specified, the first segment (*ROOT) is used.
LLM-PART = *UNCHANGED / *NONE / *SLICE(...) / *SUB-LLM(...)
If no LLM part is specified, the entire LLM is used.
LLM-PART = *SLICE(...)
Specifies the slice to be corrected.
NAME = <structured-name 1..32>
Name of the slice to be corrected.
LLM-PART = *SUB-LLM(...)
Specifies the sub-LLM to be corrected.
PATH-NAME = <c-string 1..255 with-low> / <text 1..255>
The sub-LLM to be corrected is determined by way of its path name.
MODIFICATION-LOGGING = *UNCHANGED / *YES(...) / *NO
Defines TXTP record generation.
MODIFICATION-LOGGING = *YES(...)
TXTP records are to be generated.
MODIFICATION-ID = *UNCHANGED / *SPACES / <c-string 1..12 with-low> Identification which is held in the correction journal record (TXTP record). If SPACES is specified, blanks are used as the identification.
For member types R and C, only 8 characters are allowed.
MODIFICATION-LOGGING = *NO
No TXTP records are to be generated.
BASE-ADDRESS = *UNCHANGED / <x-string 1..8>
Hexadecimal specification of the base address. At the beginning of the MODIFY-ELEMENT statement, base address 0 is set.
Statement return code
(SC2) | Maincode | Meaning |
0 | CMD0001 | No error |
REMOVE-MODIFICATION
The MODIFY-ELEMENT substatement REMOVE-MODIFICATION cancels corrections from a previous correction run under the following preconditions:
A correction journal record was created with the MODIFY-ELEMENT substatement ADD-TEXT-MODIFICATION, i.e. the operand MODIFICATION-LOGGING = *YES (see "MODIFY-ELEMENT substatements for member types R, C and L") was set.
This substatement may be used only for members of types R, C and L.
REMOVE-MODIFICATION |
MODIFICATION-ID = *ALL / *SPACES / <c-string 1..8 with-low> |
MODIFICATION-ID = *ALL / *SPACES / <c-string 1..12 with-low>
For member types R and C, only 8 characters are allowed.
Only those corrections with the specified identification are cancelled. If an identification is specified, it is necessary that correction journal records for it exist. If no identification (*ALL) is specified, all corrections for which a correction journal record exists are cancelled.
Statement return code
(SC2) | Maincode | Meaning |
0 | CMD0001 | No error |
RENAME-SYMBOLS
The MODIFY-ELEMENT substatement RENAME-SYMBOLS changes the name of a CSECT, ENTRY, COMMON, EXTRN, WXTRN or a V constant. Each renaming results in a modification of the ESD records. LMS checks for the uniqueness of names within all ESD records, rejecting a new name if that name already exists.
In LSD records, no renaming occurs. This is why, following a change in the CSECT name, AID can no longer be used for symbolic testing (see [13 (Related publications)]). If testing is run near machine level, the new names must be used in any AID qualifications.
The MODIFY-ELEMENT substatement RENAME-SYMBOLS may be used only for object modules (R-type members).
RENAME-SYMBOLS |
SYMBOL-NAME = <text 1..8> ,SYMBOL-TYPE = *CSECT / *ENTRY / “COMMON / *EXTRN / *VCON / *WXTRN ,NEW-NAME = <text 1..8> |
SYMBOL-NAME = <text 1..8>
Defines the symbol name to be renamed.
SYMBOL-TYPE = *CSECT / *ENTRY / *COMMON / *EXTRN / *VCON / *WXTRNDefines the type of symbol whose name is to be changed.
NEW-NAME = <text 1..8>
New symbol name.
The name should satisfy the BINDER conventions for the special data type <symbol> (see [4 (Related publications)]). LMS does not check for this convention, however.
Statement return code
(SC2) | Maincode | Meaning |
0 | CMD0001 | No error |
Note
Masked (invisible) CSECT/ENTRY names can also be renamed.