IBM Support

PI85432: The second call to a DLL from within a nested procedure fails abend0c1 in that DLL

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • DLL call code within a nested procedure fails to set the WSA
    pointer (CEECAACRENT) to that of the target DLL prior to
    transfering control. When the DLL gets control, its static data
    is not properly addressable and a failure will ensue, often an
    abend0c1 or abend0c4. DLL calls in the main body of the compile
    unit are unaffected.
    
    The first call works because that's the one where the run-time
    loads the DLL and transfers control to it, including setting up
    the WSA pointer.
    

Local fix

  • Call DLLs from mainline code
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED: Users of Enterprise COBOL V6.1 compiling     *
    *                 programs at OPT(1|2) that make a call to a   *
    *                 DLL, using the DLL compiler option or        *
    *                 >>CALLINTERFACE DLL, from a nested program.  *
    *                                                              *
    ****************************************************************
    * PROBLEM DESCRIPTION: The call fails and the program abends.  *
    *                                                              *
    ****************************************************************
    * RECOMMENDATION: Apply the provided PTF.                      *
    *                                                              *
    ****************************************************************
    The compiler needs to set up the CRENT pointer before making a
    DLL call, and restore it afterwards. The compiler was
    incorrectly removing the CRENT setup and restoration when the
    call was in a nested program.
    

Problem conclusion

  • The compiler was fixed to properly set up and restore the CRENT
    pointer when calling a DLL from a nested program.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PI85432

  • Reported component name

    ENT COBOL FOR Z

  • Reported component ID

    5655EC600

  • Reported release

    610

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2017-08-03

  • Closed date

    2017-08-18

  • Last modified date

    2018-08-21

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

    PI83358

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

Modules/Macros

  •    IGYQCBE
    

Fix information

  • Fixed component name

    ENT COBOL FOR Z

  • Fixed component ID

    5655EC600

Applicable component levels

  • R610 PSY UI49694

       UP17/08/25 P F708

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":"BU048","label":"IBM Software"},"Product":{"code":"SS6SG3","label":"Enterprise COBOL for z\/OS"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"6.1","Edition":"","Line of Business":{"code":"LOB70","label":"Z TPS"}}]

Document Information

Modified date:
05 September 2024