IBM Support

PH07579: UNABLE TO USERMOD MODULE DFSMDA00 DUE TO BASE REGISTER LIMITATIONS

A fix is available

Subscribe

You can track all active APARs for this component.

 

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