IBM Support

PH31178: DFHEIENT DOES NOT RESTORE REGISTER 1 WHEN IN AMODE64

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as new function.

Error description

  • When running in AMODE31 within DFHEIENT, there is the following
    code that restores R1, which is the Parameter list passed from
    the calling program:
    ST    13,DFHEISA-DFHEISTG+4(,1)  CHAIN TO CALLER'S @F8E1S @L2A
    LR    15,1                ADDRESS OF STORAGE       @F8E1S @L2A
    ICM   1,B'1111',24(13)    RESTORE INPUT REGISTER 1 @F8E1S @L2A
    However in the AMODE64 section, there are no such instructions.
    Because CICS also allows linkage between AMODE(64) and
    AMODE(31) or even AMODE(24) programs, it is possible to provide
    service routines that handle data in 64-bit storage without
    rewriting other parts of the application. Therefore DFHEIENT
    should preserve R1 regardless of the AMODE.
    Additional Symptom(s) Search Keyword(s): KIXREVBDB
    

Local fix

  • N/A
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED: All CICS Users.                              *
    ****************************************************************
    * PROBLEM DESCRIPTION: In AMODE 64 specifically, the DFHEIENT  *
    *                      macro does not restore Register 1 as it *
    *                      completes.                              *
    *                                                              *
    *                      This means that any optional parameters *
    *                      passed by the calling program are not   *
    *                      accessible via the address that is held *
    *                      in Register 1.                          *
    ****************************************************************
    With the introduction of AMODE 64 the DFHEIENT macro was
    updated to support 64-bit, but it did not restore Register 1 to
    the value that it had saved on entry.
    
    No error is generated but the result after DFHEIENT completes
    is that Register 1 does not hold an address pointing to the EIB
    and COMMAREA, plus any optional parameters that may have been
    passed to the program, as is expected and as already happens
    with AMODE 24 and AMODE 31.
    

Problem conclusion

  • The DFHEIENT macro has been updated so that Register 1 is now
    restored in the AMODE 64 code-path and any optional parameters
    can now be accessed via that address.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PH31178

  • Reported component name

    CICS TS Z/OS V5

  • Reported component ID

    5655Y0400

  • Reported release

    100

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2020-11-02

  • Closed date

    2021-05-14

  • Last modified date

    2021-06-02

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

    UI75403 UI75404 UI75405

Modules/Macros

  • DFHEIENT
    

Fix information

  • Fixed component name

    CICS TS Z/OS V5

  • Fixed component ID

    5655Y0400

Applicable component levels

  • R100 PSY UI75405

       UP21/05/15 P F105

  • R200 PSY UI75404

       UP21/05/15 P F105

  • R300 PSY UI75403

       UP21/05/19 P F105

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.

[{"Line of Business":{"code":"LOB35","label":"Mainframe SW"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSGMGV","label":"CICS Transaction Server"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"5.4"}]

Document Information

Modified date:
03 June 2021