Changes at run time with Enterprise COBOL Version 5 and Version 6

There are a number of changes to runtime behavior with Enterprise COBOL V5 and V6.

If a z/OS® system does not have Language Environment® PTFs installed to support Enterprise COBOL Version 5 or Version 6 programs, you cannot run Enterprise COBOL Version 5 or Version 6 programs on that system.

  • Runtime option changes. For details, see Language Environment option changes.
  • Interoperability. Enterprise COBOL V5 and V6 has some restrictions with interoperability with older versions of COBOL. For details, see Interoperability with older levels of IBM COBOL programs.
  • Start of changeInvalid data might get different results with COBOL V5 and V6 than in earlier COBOL versions. Some users have found that they get different results with the newer compilers than with previous compilers, and/or that they get different results with Start of changedifferent OPT or ARCH settingsEnd of change. These are normally due to invalid data that is brought into the COBOL programs at run time. One way to find out whether your programs will have this problem is to follow our new migration recommendation:
    1. Compile with Start of changeNUMCHECK, PARMCHECK, and SSRANGEEnd of change, and then run regression tests.
    2. Check whether there are any problems:
      • If no problems found, recompile with Start of changeNONUMCHECK, NOPARMCHECK, NOSSRANGE, and INITCHECK. At this point, check for compile-time warnings from INITCHECK. If there are none, then run a final test and move the application into production.End of change
      • If problems are found, then either correct the programs and or data, or in the case of bad data in zoned decimal data items, use the ZONEDATA compiler option to tolerate the invalid data.
    Note: Start of changeYou do not have to do this extra testing for programs that have already been compiled with Enterprise COBOL V5 or V6. End of change
    End of change
  • All of the AMODE and RMODE scenarios supported by Enterprise COBOL Version 4 are now supported with Version 5 and Version 6, except that programs compiled with the NORENT compiler option must be RMODE 24. After binding, executable COBOL programs can have any of the following combinations of AMODE and RMODE attributes:
    • AMODE 31 and RMODE ANY
    • Either AMODE ANY or AMODE 31, and RMODE 24
    • AMODE 24 and RMODE 24
    The resolved AMODE and RMODE settings depend on the COBOL language constructs used, the compiler options specified, the binder options specified, and the AMODE and RMODE attributes of the input object modules that are bound into the executable module.
  • Start of changeIn some cases, AMODE 24 execution is not supported and the applications must run in AMODE 31. For details, see Restrictions for AMODE.End of change
  • For applications compiled with Enterprise COBOL V5 or V6, the compiled-in range checks cannot be disabled at run time using the runtime option CHECK(OFF) or NOSSRANGE .
  • Start of change

    The ILBOABN0 interface for requesting an ABEND in a COBOL environment can be called dynamically with Enterprise COBOL V5 and later versions. When called by a program compiled with Enterprise COBOL compiler, it will has the same result as calling Start of changeCEE3ABDEnd of change using ACTION code 1.

    Your are strongly recommended to migrate and use the CEE3ABD interface, because the CEE3ABD interface provides extra flexibility to control the level of details provided in the CEEDUMP produced.

    When your application is called by Enterprise COBOL programs, it might ABEND in an unexpected way if it has an older version of ILBOABN0 (before LE's SCEELKED) statically linked. To fix the unexpected ABEND, you can follow one of the advises below:
    • Migrate to CEE3ABD.
    • Relink your application with the REPLACE ILBOABN0 in the LINK step, against LE's SCEELKED.
    • Change the COBOL program to use dynamic call for ILBOABN0.
    End of change
  • The IGZERRE and ILBOSTP0 interfaces for managing a reusable COBOL environment are not supported for applications containing programs compiled with Enterprise COBOL V5 or V6.
  • The IGZBRDGE macro, for converting static calls to dynamic calls, is not supported for programs compiled with Enterprise COBOL V5 or V6.
  • A new compiler option, VLR(COMPAT|STANDARD), controls how Enterprise COBOL handles conflicts with record length in READ statements for variable-length record files. For details, see Variable length records - wrong length READ.
  • VSAM record areas for reentrant COBOL programs are allocated above 16 MB, by default. Programs that pass data in VSAM file records as CALL … USING parameters to AMODE 24 subprograms may be impacted. Such programs can be recompiled with the DATA(24) compiler option, or the Language Environment HEAP() option can be used, to ensure that the records are addressable by the AMODE 24 programs.
  • Start of changeCICS® System Definition (CSD) file might need to be updated to include Enterprise COBOL V5 and V6 runtime modules. For details, see CSD setup differences with Enterprise COBOL V5 and V6.End of change
  • When COBOL programs perform an IEEE (decimal or binary) floating point division-by-zero operation, the division operation raises an IEEE divide-by-zero exception. For details, see Using object oriented COBOL or interoperating with C programs.

Start of changeFor COBOL V5 and later, procedure and function pointers point to a function descriptor rather than directly to the entry point. If your code expects these pointers to point directly to the entry point, for example of a data-only module, this requires a code change. For details, see Using procedure and function pointers (Enterprise COBOL Programming Guide).End of change

Start of changeFor COBOL V5 and later, calls to procedure and function pointers must be from a module with an LE stack frame, which is the case for any high-level programming language. If such a call is to be made from an assembler module, an LE stack frame must be provided by using the CEEENTRY and CEETERM macros, along with the associated register content requirements.End of change

Start of changeThe following changes apply only to V6.1:
  • With Enterprise COBOL V6.1, WORKING-STORAGE is acquired from HEAP storage in all cases, so that there are no exceptions to when the STORAGE runtime option will affect WORKING-STORAGE. In Enterprise COBOL V5, this was only true in CICS and some special cases in non-CICS.
  • File status changes in V6.1:
    • WRITE statement on line-sequential file with a record size mismatch.

      In prior releases of Enterprise COBOL, when an attempt is made to write a record to a line-sequential file with mismatched record size, file status 48 is incorrectly returned. This is corrected in Enterprise COBOL V6.1 to return file status 44.

    • Start of changeOPEN INPUT on a line-sequential file when the UNIX file attribute is write-only.
      In prior releases of Enterprise COBOL, an OPEN statement with the INPUT phrase on a line-sequential file that has the write-only attribute, such as a z/OS UNIX file with DD PATHOPTS=(OWRONLY,...) or a COBOL program that has the write access permission only, incorrectly returned file status 0 (successful). An OPEN statement attempted on a file that does not support the open access mode should return file status 37.
      Note: "write-only" here does not mean the APPLY WRITE-ONLY clause that is not applicable to line-sequential files. Line-sequential files are files created in the z/OS UNIX file system.

      In Enterprise COBOL V6.1, this OPEN statement is detected with file status 37.

      End of change
    • OPEN INPUT, I-O, EXTEND on VSAM file with file attributes mismatch.
      In prior releases of Enterprise COBOL, when an OPEN INPUT, I-O or EXTEND statement is attempted on a VSAM file that is not defined as OPTIONAL, and a file attributes mismatch is detected, file status 35 is incorrectly returned. This is corrected inEnterprise COBOL V6.1 to return file status 39.
      Note: Similar file attributes mismatch condition for OPEN OUTPUT, and for OPEN INPUT, I-O, and EXTEND when the VSAM file is defined as OPTIONAL, are already correctly reported as file status 39.
End of change