A fix is available
APAR status
Closed as program error.
Error description
Module DFSMDA00 is a very common module modified by users with USERMODs. The module is real tight on base registers. There are two base registers defined in the module. Label WRTMSGM is located at x'1FFA'. Any USERMOD modification of the module can easily push the label beyond the defined base registers. Adding an additional base register does not appear to be an option. . The module may needed to be modified to use a Branch Relative approach.
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: * * All users of IMS v15 * **************************************************************** * PROBLEM DESCRIPTION: * * Applying a USERMOD to DFSMDA00 may result in assembly errors * * due to base register limitations * **************************************************************** * RECOMMENDATION: * * INSTALL CORRECTIVE SERVICE FOR APAR/PTF * **************************************************************** Module DFSMDA00 uses two base registers, which is sufficient to address 8192 bytes (0x2000 hex) of executable code. Almost all of this area is used. The branch target with the highest offset, WRTMSGM, is at offset 0x1FFA from the beginning of the CSECT. Therefore, if a USERMOD, even a very small one, adds code to DFSMDA00, this label and possibly others may be pushed beyond offset 0x2000, which is not addressable by the module?s base registers. This results in an assembly error ASMA034E for BEYOND ACTIVE USING.
Problem conclusion
Module DFSMDA00 is changed to use branch relative addressing. As a result, a USERMOD may add lines of code to the module without causing assembly errors due to base register limitations. There are two main components to this conversion. First, a BRREL=YES statement is added to the CHANGEID statement for the main CSECT and subroutines to direct the assembler to convert branch instructions that depend on a base register to jump instructions that use relative addressing, according to the definitions in DFSBRREL MACRO. Second, a static area is defined so that local variables may be addressed using a register that points to the static area, rather than relying on a base register. Additional smaller changes are required in order to support this conversion to branch relative addressing and the use of a static area: - Rearrange the module so that all data definitions that need to be in the static area are contiguous. - Modify CHANGEID statements to specify both branch relative addressing and the static area. Remove the specification of R12 and R10 as base registers. - Remove USING statements and code used to set up the base registers. - Relocate instructions that are the target of EXECUTE instructions from the main CSECT to the static area. - Modify branch tables to use relative addressing to calculate the correct branch target. - For certain branch instructions that do not depend on the base register (such as at label LOAD089), add an underscore to tell the assembler not to try to convert it to a branch relative instruction. - Remove LTORG statements so that all literals appear in the static area.
Temporary fix
Comments
APAR Information
APAR number
PH07579
Reported component name
IMS V15
Reported component ID
5635A0600
Reported release
500
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2019-01-23
Closed date
2019-03-07
Last modified date
2019-04-02
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
UI61720 PH16171
Modules/Macros
DFSMDA00
Fix information
Fixed component name
IMS V15
Fixed component ID
5635A0600
Applicable component levels
R500 PSY UI61720
UP19/03/12 P F903
Fix is available
Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.
[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPH2","label":"IMS"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"15","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]
Document Information
Modified date:
22 December 2023