Changes in compiling with Enterprise COBOL Version 5 and Version 6
There are a number of changes to Enterprise COBOL V5 and V6 that result in different behaviors.
The COBOL runtime library, the Language Environment® component of z/OS®, must now be available at compilation time. In addition, Language Environment must be updated with the APAR fixes (PTFs) for compiling programs with Enterprise COBOL V5 or V6 and for running programs that were compiled with Enterprise COBOL V5 or V6. For details about prerequisite software levels and required maintenance, see Prerequisite software and service for Enterprise COBOL Version 5 and Version 6.
Compile-time storage requirements are substantially increased compared to prior versions of Enterprise COBOL. The compiler requires a minimum of 200 M region size to run. In Enterprise COBOL Version 5.1, the compiler option SIZE(MAX) is no longer supported, but gets tolerated and interpreted as SIZE(5000K). Your SIZE option setting should be in the range of 5000 K to 20000 K for V5.1.
It is not necessary to specify a high SIZE
value
for every large program. You must raise the default SIZE
value
only when you encounter this error message during compilation: IGYPG5062-U
THERE WAS INSUFFICIENT STORAGE FOR COMPILER PROCESSING.
This
message indicates that the compiler front end has run out of memory
while still processing the program, and you must use the SIZE
option
to allocate more memory for the front end.
However, note that the memory allocated to the front
end using the SIZE
option is not available to later
phases of the compilation. Therefore, carefully calibrate the SIZE
value
to avoid depriving the code generation and optimization steps of memory.
Otherwise, the compiler might abend in those later phases with the
following message: IGYCB7145-U INSUFFICIENT MEMORY IN THE
COMPILER TO CONTINUE COMPILATION.
In Enterprise COBOL V5.2
and later, the compiler option SIZE is no longer supported. Your region
size must also be at least 200 M. The region size must be large especially
at higher optimization levels, that is, programs compiled with the OPT(1)
or OPT(2)
compiler
option.
IEW4000I
FETCH FOR MODULE IGYCBE FROM DDNAME STEPLIB FAILED BECAUSE INSUFFICIENT
STORAGE WAS AVAILABLE
, make sure that your region size is
at least 200 M. REGION=0M in JCL gives you the maximum amount allowed
by the JES system defaults set up by your system programmer. It may
be less than needed. In that case your system programmer must increase
the user limit of region size.IGYCB7145-U
Insufficient memory in the compiler to continue compilation
.
If you encounter this error message, set REGION=0M
and MEMLIMIT=3G
on
the job card and recompile your programs. If it is successful, consider
changing the system MEMLIMIT default that was set in IEFUSI, SMFPRMxx,
or SMFLIMxx to no less than 2 GB.- The Language
Environment member ID for Enterprise COBOL Version 5 Release
1 or later is
4
(The member ID for all previous COBOL versions was5
). - Compile-time CPU time requirements are substantially increased, compared to prior versions of Enterprise COBOL. The compiler may take more than five times as long to compile as the older compilers.
- Compile time and run time diagnostic messages might differ, and
might be generated at different times or locations.
- Presence or absence of informational and warning level diagnostic messages might differ
- Diagnostic messages for programs that define excessive and unsupported amounts of storage might be issued either by the binder at bind time, or by Language Environment at run time, instead of by the compiler at compilation time.
- The compiler output is in GOFF format. This format allows the compiler to create more efficient generated code and also to put out the NOLOAD debug information (DWARF) segments.
- There is no SYSDEBUG data set created for debug information.
- Compiler listing format and contents differ from prior versions of Enterprise COBOL. You can find details on these changes in the Enterprise COBOL Programming Guide.
- Starting
in Enterprise COBOL V6.1,
the build level information (of the form PYYMMDD) is always included
in the header of the listing file, which assists with determining
the maintenance level of the compiler. Here is an example of the listing
header:
PP 5655-EC6 IBM Enterprise COBOL for z/OS 6.3.0 PXXXXXX
- In Enterprise COBOL V5 and V6.1, the diagnostic messages are in the middle of the listing. In Enterprise COBOL V6.2 and later versions, the diagnostic messages are at the bottom of the listing as with Enterprise COBOL V4 and earlier compilers.
- Several compiler limits are increased with Enterprise COBOL V5 and V6. For details, see Compiler limit comparison.
- Starting in Enterprise COBOL V6.3, listing terminologies change as follows:
STATIC MAP
in Enterprise COBOL V6.2 and earlier versions is changed toINITIAL HEAP STORAGE MAP
.- Writeable static area (WSA) in Enterprise COBOL V6.2 and earlier
versions is changed to
storage
. WSA24
in Enterprise COBOL V6.2 and earlier versions is changed toBELOW THE LINE STORAGE
.AUTOMATIC MAP
in Enterprise COBOL V6.2 and earlier versions is changed toSTACK STORAGE MAP
.
-
Starting in Enterprise COBOL V6.3, the installation customization for placing compiler phases into shared storage is removed, since in modern systems most users have lots of storage available, and do not need to conserve storage by placing compiler phases in shared storage. As a result of this change to the compiler, the language for placing compiler phases in shared storage is no longer supported, so if you have a saved copy of the IGYCDOPT customization that has a specification of compiler phases being
IN
orOUT
of shared storage, that language must be removed before you can assemble IGYCDOPT. If you do not have any statements in IGYCDOPT that specifyIN
orOUT
for compiler phases, then you will not be affected by this change. The use of passing a file-name to a subprogram with the USING phrase of the CALL statement was removed in Enterprise COBOL V6.3, but is restored in Enterprise COBOL V6.3 with PTF for APAR PH20724 installed.
If you are using IBM Enterprise COBOL Value Unit Edition (VUE) for z/OS, V5.2 and later versions, you cannot invoke the compiler multiple times from the same task (for example, invoking the compiler multiple times from the same task by using the MVS LINK macro).