IBM Support

PI14476: LENGTH OF A MULTI-BYTE VARIABLE-LENGTH MOVE CAN TEMPORARILY BE OFF BY ONE FOLLOWING A MOVE WHEN USING OPT(1/2).

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Length of a multi-byte variable-length move can temporarily be
    off by one following a MOVE when using OPT(1/2).  During the
    instruction sequence, the value of the variable contained in
    the register will be one less than it's actual value.  If that
    same register is then carried over into the next instruction,
    the problem will surface.
    
    Below is an example of the sort of result that might be seen:
    
    1321   MOVE EMV-DATA (WK-OFFSET:WK-LEN) TO EMV-DF31(1:WK-LEN)
    1322   DISPLAY 'WK-OFFSET:' WK-OFFSET ' WK-LEN:' WK-LEN
    1323   ADD  WK-LEN TO WK-OFFSET
    1324   DISPLAY 'WK-OFFSET:' WK-OFFSET ' WK-LEN:' WK-LEN
    
    Statement "ADD WK-LEN TO WK-OFFSET" gives different runtime
    results when compiled using OPT(0) and OPT(1).
    
    The OPT(0) program correctly yields 5 + 66 = 71.
    The OPT(1) program incorrectly yields 5 + 66 = 70.
    
    The display statements are using the correct value for WK-LEN
    loaded from memory, not the now-incorrect value in a register.
    Therefore, the display show the value of WK-LEN as 5, when its
    actual (incorrect) value in the register is 4 (which produces
    the incorrect result of 70.)
    

Local fix

  • Use compiler option OPT(0) as a workaround.
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED: Users of programs compiled with Enterprise   *
    *                 COBOL 5.1 with OPT(1) or OPT(2) compiler     *
    *                 options compiling programs that have         *
    *                 variable-length MOVEs                        *
    *                                                              *
    ****************************************************************
    * PROBLEM DESCRIPTION: Programs with variable-length MOVEs     *
    *                      could use incorrect length when         *
    *                      compiled with OPT(1) or OPT(2).         *
    *                                                              *
    ****************************************************************
    * RECOMMENDATION: Apply the provided PTF.                      *
    *                                                              *
    ****************************************************************
    The compiler was not correctly calculating the length for some
    variable-length MOVE statements.
    

Problem conclusion

  • The compiler was changed to ensure that the length for
    variable-length MOVEs is always correct.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PI14476

  • Reported component name

    ENT COBOL FOR Z

  • Reported component ID

    5655W3200

  • Reported release

    510

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2014-03-25

  • Closed date

    2014-05-16

  • Last modified date

    2014-06-03

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

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

Modules/Macros

  • IGYCBE
    

Fix information

  • Fixed component name

    ENT COBOL FOR Z

  • Fixed component ID

    5655W3200

Applicable component levels

  • R510 PSY UI18055

       UP14/05/21 P F405

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":"SS6SG3","label":"Enterprise COBOL for z\/OS"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"5.1","Edition":"","Line of Business":{"code":"LOB17","label":"Mainframe TPS"}},{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG19M","label":"APARs - z\/OS environment"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"5.1","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
03 June 2014