IBM Support

Diagnostic messages in CEEDUMPs for IBM Enterprise COBOL for z/OS.

News


Abstract

With APAR PH22618 applied, a CEEDUMP for Enterprise COBOL for z/OS, version 5 or later programs, may include diagnostic messages from the COBOL runtime. These messages can be used to help debug incomplete 'Local variables' or 'Variable Map' sections in the CEEDUMP.

Keywords: CEEDUMP local variables missing.

Content

Technical Details for APAR PH22618

When a CEEDUMP is generated for IBM Enterprise COBOL for z/OS, version 5 or later programs, the 'Local Variables' or 'Variables Map' sections for COBOL in the CEEDUMP may be incomplete due to various reasons. With APAR PH22618 applied, diagnostic messages are printed in the CEEDUMP when this occurs.  The diagnostic messages have the following format:

COBOL variables were inaccessible.
Reason: <Reason text>

Examples of the diagnostic messages in the CEEDUMP:

Local Variables:
  Variables for MYPGM:
  COBOL variables were inaccessible.
  Reason: IGZUOPT with SKIPDWARF=ON was found. DWARF processing was suppressed.
  
...
Variables Map for MYPGM:
COBOL variables were inaccessible.
Reason: IGZUOPT with SKIPDWARF=ON was found. DWARF processing was suppressed.
...

Explanation of common “Reason:” text:

Some of the most common reasons for the incomplete sections are explained below.  For additional assistance, please contact IBM.


  • Reason: SKIPDWARF=ON was found in IGZUOPT. DWARF processing was suppressed.

Because ‘SKIPDWARF=ON’ was specified in IGZUOPT (COBOL runtime option module), DWARF processing was suppressed.


  • Reason: Cannot load the COBOL CDA service module, IGZXCDA.             

When the CEEDUMP was generated, IGZXCDA (COBOL CDA service module) could not be loaded. Verify that the module .SCEERUN(IGZXCDA) was accessible during the CEEDUMP generation. For CICS, verify that IGZXCDA was added to the CICS System Definition file (CSD).


  • Reason: Cannot initialize DWARF in the program object.       

The COBOL program was compiled with option TEST(NOSEPARATE) or equivalent, which generates the DWARF diagnostic information into the program object. When the CEEDUMP was generated, the DWARF in the program object could not be initialized. If the program was staged into VLF and the location of the library that contains the program was specified by the IGZLOAD DD, then it is possible that the executing program fetched from VLF was not identical to the program in the library specified by the IGZLOAD DD. A selective refresh of LLA (MODIFY LLA,UPDATE=xx) may be required to purge the old program/member from VLF. (See section "Identifying members for selective refreshes" in the z/OS MVS Initialization and Tuning Guide at https://www.ibm.com/support/knowledgecenter/SSLTBW_2.4.0/com.ibm.zos.v2r4.ieae100/ident.htm .)


For CICS, verify that the setup described in the 'DFHRPL setup differences with Enterprise COBOL V5 and V6' in the Enterprise COBOL Migration Guide was completed at https://www.ibm.com/support/knowledgecenter/en/SS6SG3_6.2.0/migrate/igymch1804.html


  • Reason: cannot initialize DWARF in the program object for LLA/VLF. The DWARF DD name used was:
      DD-NAME

where DD-NAME can be one of 

//DD:IGZLOAD(MEMBER)
//DD:STEPLIB(MEMBER)
//DD:IGZLOAD(MEMBER) and //DD:STEPLIB(MEMBER)

and MEMBER is a CU (compile unit) name for the compiled COBOL program  

The COBOL program was compiled with option TEST(NOSEPARATE) or equivalent, which generates the DWARF diagnostic information into the program object. The MEMBER was staged to VLF, and one or both of the IGZLOAD and/or STEPLIB DD names were specified, but the MEMBER was not found in the IGZLOAD DD or STEPLIB DD library concatenation.

  • Reason: cannot initialize DWARF in the program object for LLA/VLF. Attempted DD:ddname(member):
    Not found because neither the IGZLOAD DD nor the STEPLIB DD was allocated.

The COBOL program was compiled with option TEST(NOSEPARATE) or equivalent, which generates the DWARF diagnostic information into the program object. The executing program was staged to VLF, but neither the IGZLOAD DD nor the STEPLIB DD were included to specify the location of the library containing the MEMBER.  When a program is staged to VLF, a user must specify its location by allocating the IGZLOAD DD, the STEPLIB DD, or both. 


Example 1
Allocate the IGZLOAD DD with DSN=USER.COBOL.LOADLIB when all of the following are true:
1) USER.COBOL.LOADLIB is in LNKLST
2) USER.COBOL.LOADLIB(PGM1) is staged to VLF
3) PGM1 is executed from USER.COBOL.LOADLIB in LNKLST 

//GO1        EXEC  PGM=PGM1                         * EXECUTE FROM LNKLST
//STEPLIB    DD    DSN=CEE1.SCEERUN,DISP=SHR
//IGZLOAD    DD    DSN=USER.COBOL.LOADLIB,DISP=SHR  * CONTAINS PGM1

Example 2
The IGZLOAD DD is not required when all of the following are true:
1) USER.COBOL.LOADLIB is in STEPLIB
2) USER.COBOL.LOADLIB(PGM1) is staged to VLF
3) PGM1 is executed from USER.COBOL.LOADLIB in STEPLIB

//GO1        EXEC  PGM=PGM1                          * EXECUTE FROM STEPLIB
//STEPLIB    DD    DSN=USER.COBOL.LOADLIB,DISP=SHR   * CONTAINS PGM1
//           DD    DSN=CEE1.SCEERUN,DISP=SHR

Example 3 
Allocate the IGZLOAD DD with DSN=USER.COBOL.LOADLIB when all of the following are true:
1) USER.COBOL.LOADLIB is in LNKLST and USER.COBOL.LOADLIB2 is in STEPLIB
2) Both USER.COBOL.LOADLIB(PGM3) and USER.COBOL.LOADLIB2(PGM2) are staged to VLF
3) PGM1 calls PGM2 dynamically, and then PGM2 calls PGM3 dynamically 

//GO1        EXEC  PGM=PGM1                          * EXECUTE FROM LNKLST
//STEPLIB    DD    DSN=USER.COBOL.LOADLIB2,DISP=SHR  * CONTAINS PGM2(STAGED)
//           DD    DSN=CEE1.SCEERUN,DISP=SHR
//IGZLOAD    DD    DSN=USER.COBOL.LOADLIB,DISP=SHR   * CONTAINS PGM1 and PGM3(STAGED)

  • Reason: cannot initialize DWARF in the program object(Checksum match failed). Attempted DD:ddname(member):
      DD-NAME

where DD-NAME can be one of 
//DD:IGZLOAD(MEMBER)
//DD:STEPLIB(MEMBER)
//DD:DFHRPL(MEMBER)

and MEMBER is a CU (compile unit) name for the compiled COBOL program  

The COBOL program was compiled with option TEST(NOSEPARATE) or equivalent, which generates the DWARF diagnostic information into the program object. The checksum of the MEMBER in the library specified by the DD name does not match to that of the executing program. 
If the batch program was staged to VLF and the location of the library that contains the program was specified by the IGZLOAD DD, then it is possible that the executing program fetched from VLF was not identical to the program in the library specified by the DD.  A selective refresh of LLA (MODIFY LLA,UPDATE=xx) may be required to purge the old program/member from VLF. (See section "Identifying members for selective refreshes" in the z/OS MVS Initialization and Tuning Guide at https://www.ibm.com/support/knowledgecenter/SSLTBW_2.4.0/com.ibm.zos.v2r4.ieae100/ident.htm .)
Similarly, in CICS, this could happen when the MEMBER (i.e. a COBOL program) from DFHRPL or the dynamic LIBRARY concatenation has been changed since a transaction using the program started. Refresh the program using ‘CEMT SET PROGRAM’. (See section “Using dynamic program Library resources” in CICS Transaction Server for z/OS at https://www.ibm.com/support/knowledgecenter/SSGMCP_5.6.0/applications/deploying/dfhp3_using_librarys.html .)

  • Reason: cannot initialize the debug file (The filename was found by IGZIUXB/IGZIUXC): 'DSNAME(MEMBER)'

The COBOL program was compiled with TEST(SEPARATE(DSNAME|NODSNAME)) and the debug file name was provided by the user exit IGZIUXB (non-CICS) or IGZIUXC(CICS). When the CEEDUMP was generated, the debug file ‘DSNAME(MEMBER)’ could not be initialized because it was damaged. Verify that the debug file ‘DSNAME(MEMBER)’ matched the one specified by //SYSDEBUG DD DSN=DSNAME(MEMBER) in the compile JCL


  • Reason: cannot initialize the debug file (IGZIUXB/IGZIUXC failed. The filename was found in PPA4): 'DSNAME(MEMBER)'

The COBOL program was compiled with TEST(SEPARATE(DSNAME)) and the debug file name was provided by the user exit IGZIUXB (non-CICS) or IGZIUXC(CICS) as well as in PP4. When the CEEDUMP was generated, the initialization using the debug file name from the user exit and then ‘DSNAME(MEMBER)' in PPA4 was tried and both were unsuccessful. This could be that the user exit failed because an incorrect alternate DD name was specified in the JCL or an incorrect debug file was used. Then, the initialization using the 'DSNAME(MEMBER)' found in PPA4 also failed because it was damaged or inaccessible.

For example, given that SYMFILE is specified as an alternate DD name in the user exit, the following JCL shows how the SYSDEBUG dataset (USER.SYSDEBUG(MYPGM)) is specified in SYSDEBUG DD at compile and the dataset is specified in the alternate SYMFILE DD at execution

//SYSDEBUG   DD    DSN=USER.SYSDEBUG(MYPGM),DISP=SHR
...
//GO1        EXEC  PGM=MYPGM,              * RUN JCL
//SYMFILE    DD    DSN=USER.SYSDEBUG,DISP=SHR

​User Exit Failure. The user exit will fail if one of the following is true:

1) ‘SYMFILE’ is not specified as an alternate DD name in the user exit.
2) The CU name for the compiled COBOL program is not ‘MYPGM’ in the ‘SYSDEBUG DD’.
3) ‘USER.SYSDEBUG’ is not used in ‘SYMFILE DD’ in the RUN JCL.
4) ‘USER.SYSDEBUG’ is inaccessible at execution.

When the user exit fails, the debug file 'DSNAME(MEMBER)' which name is recorded in PPA4 in MYPGM is attempted. It will fail if one of the following is true:

1) ‘USER.SYSDEBUG(MYPGM)’ does not match the one in ‘SYSDEBUG DD’ in the COMPILE JCL.
2) The CU name for the compiled COBOL program is not ‘MYPGM’ in the ‘SYSDEBUG DD’.
3) The debug file 'USER.SYSDEBUG(MYPGM)’ is inaccessible at execution.

If both attempts above fail, the diagnostic message will show up.


  • Reason: cannot initialize the debug file (IGZIUXB/IGZIUXC was not used. The filename was found in PPA4): 'DSNAME(MEMBER)'

The COBOL program was compiled with TEST(SEPARATE(DSNAME)) and the user exit IGZIUXB (non-CICS) or IGZIUXC(CICS) was not used. Then, the debug file name ‘DSNAME(MEMBER) was found in PPA4. When the CEEDUMP was generated, the debug file could not be initialized because it was damaged or inaccessible. Verify that the debug file ‘DSNAME(MEMBER)’ matched the one specified by //SYSDEBUG DD DSN=DSNAME(MEMBER) in the compile JCL and was accessible.


  • Reason: no debug file was found. (TEST(SEPARATE(NODSNAME) was used and IGZIUXB/IGZIUXC failed)"     

The COBOL program was compiled with TEST(SEPARATE(NODSNAME)) and the debug file name was provided by the user exit IGZIUXB (non-CICS) or IGZIUXC(CICS). When the CEEDUMP was generated, the debug file could not be initialized. This could be that the user exit failed because an incorrect alternate DD name was specified in the JCL or an incorrect debug file was used.

Refer to ‘User Exit Failure’ in Reason: cannot initialize the debug file (IGZIUXB/IGZIUXC failed. The filename was found in PPA4): 'DSNAME(MEMBER)for the details.


  • Reason: no debug file was found. (TEST(SEPARATE(NODSNAME) was used and IGZIUXB/IGZIUXC was not used)"

The COBOL program was compiled with TEST(SEPARATE(NODSNAME)), but the user exit IGZIUXB (non-CICS) or IGZIUXC(CICS) was not used. The user exit must be provided with TEST(SEPARATE(NODSNAME)).


  • Reason: Cannot initialize DWARF. IGZXCDA is still being loaded.

When the CEEDUMP was generated, IGZXCDA (the COBOL CDA service module) was being loaded and incomplete. Contact IBM for support.


  • Reason: Internal error (ERR-CODE).

When the CEEDUMP was generated, an internal error designated by ‘ERR-CODE' occurred. Contact IBM for support.

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SS6SG3","label":"Enterprise COBOL for z\/OS"},"Component":"Runtime","Platform":[{"code":"PF035","label":"z\/OS"}],"Version":"5.2;6.1;6.2;6.3","Edition":"Enterprise","Line of Business":{"code":"LOB17","label":"Mainframe TPS"}}]

Document Information

Modified date:
16 October 2020

UID

ibm15692838