IBM Support

PI61158: WHEN COB V5 OPT(1/2) DISCARDS CODE, IT DOESN'T RESOLVE CONSTANTS IN DISCARDED CODE SO PROGRAM NAME CONSTANTS ARE LOST

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • A dummy section of code that never executes can contain a
    static call statement.  COBOL V4 discards the code, but
    resolves the program name constant and forwards it to the
    linkage editor for autolink.  However, COBOL V5.2,OPT(1/2)
    discards the code and does not resolve the program name
    constant and does not forward it to the linkage editor for
    autolink.  OPT(0) does function the same way as V4.
    The COBOL V5 compiler is being modified to resolve V-constants
    in discarded code at OPT(1/2).
    Coding Example:
    MAIN Module:
    CALL "COB10ENT" USING Z-FIELD   <-- COB10ENT is an alternate
    DISPLAY "Z-FIELD: " Z-FIELD.        entry point for COB10B1C
    GOBACK.                         <-- End of program.
    DUMMY-CALL SECTION.    <-- Everything from here down is thrown
                               away by all compilers
    DUMMY-CALL-00.             because it never executes.
    CALL "COB10B1C".       <-- COB V4 resolves the COB10B1C
    DUMMY-CALL-99.             V-Constant and passes it to the
    EXIT.                      binder.  V5 does not.
    

Local fix

  • There are 3 work-arounds:
    1) Compile at OPT(0).
    2) Compile at OPT(1/2) and utilize VOLATILE to retain the
       V-constant.
    77 COB10B1C  USAGE FUNCTION-POINTER VALUE NULL VOLATILE.
        ...
       DUMMY-CALL SECTION.
            IF COB10B1C not equal NULL then
                CALL "COB10B1C"
            END-IF.
    3) Add in the appropriate binder control statements to allow
    the binder to handle the resolution.
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED: Users of Enterprise COBOL V5.1 compiling     *
    *                 programs that CALL the secondary ENTRY       *
    *                 point of a program but not the main entry    *
    *                 point, where an unreachable CALL to the      *
    *                 main entry point has been added to allow     *
    *                 the binder to resolve the called module.     *
    *                                                              *
    *                                                              *
    ****************************************************************
    * PROBLEM DESCRIPTION: Binder terminates with message what     *
    *                      IEW2456E 9207 SYMBOL XXXXX UNRESOLVED.  *
    *                       MEMBER COULD NOT BE INCLUDED FROM THE  *
    *                      DESIGNATED CALL LIBRARY.                *
    *                                                              *
    ****************************************************************
    * RECOMMENDATION: Apply the provided PTF.                      *
    *                                                              *
    ****************************************************************
    The optimizer removed the unreachable call and didn't leave a
    reference to the call in the external symbol dictionary, so the
    binder was unable to resolve the call to the secondary
    entrypoint.
    

Problem conclusion

  • The compiler was fixed to always add all external CALLs to the
    external symbol dictionary.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PI61158

  • Reported component name

    ENT COBOL FOR Z

  • Reported component ID

    5655W3200

  • Reported release

    510

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2016-04-20

  • Closed date

    2016-04-27

  • Last modified date

    2016-05-04

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

    PI57887

  • 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 UI37372

       UP16/04/29 P F604

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:
04 May 2016