Table of contents
With new ways to engage users through web, cloud, and mobile technologies, COBOL developers are expected to deliver new functions and features faster with higher quality and performance. As modern hardware architectures become more complex, it's becoming increasingly difficult for application developers to simultaneously handle business logic and performance issues in the applications they're working on. They need advanced compilation technology to handle the performance aspects so that they can focus on the business logic.
IBM® Enterprise COBOL for z/OS® 6 has been redesigned specifically to meet this need. It has a new optimization framework and a new runtime library infrastructure (first introduced with COBOL 5) designed to increase the performance of business-critical COBOL applications.
Enterprise COBOL for z/OS 6 provides advanced COBOL-specific optimizations and fully implements IBM® z/Architecture® (z10 through z16). According to internal IBM test results and early customer feedback, many well-structured, CPU-intensive batch applications have seen performance increases greater than 10 percent. Increasing the performance of COBOL applications provides savings in CPU utilization and enhances the ability to meet service-level agreements. In addition, improved performance can reduce the MSUs consumed by your business, resulting in reduced costs for your company!
Although Enterprise COBOL is both source- and binary-compatible with older releases of COBOL compilers on IBM Z®, here are a few things you need to know about upgrading to Enterprise COBOL 6 because of recent changes to the infrastructure.
Partitioned data set extended (PDSE) load library data sets
Enterprise COBOL 6 executables are program objects that can only reside in PDSE data sets. This is not an entirely new requirement. Enterprise COBOL 4 used program objects and PDSE for long names, COBOL/Java interoperability, and DLL support.
If you are currently using PDS data sets for load libraries, you need to move to PDSE data set load libraries before running COBOL 6 programs. Otherwise, when you try to bind a COBOL 6 object program into a PDS dataset, the operation will fail with this error message:
IEW2606S 4B39 MODULE INCORPORATES VERSION 3 PROGRAM OBJECT FEATURES AND CANNOT BE SAVED IN LOAD MODULE FORMAT.
Although the process of moving COBOL load libraries to PDSE is fairly straightforward, you need to do some advanced planning and resource coordination.
Deploy with confidence
Consistently deliver high-quality software faster using DevOps services on IBM Cloud. Sign up for a free IBM Cloud Trial, and get started.
To run Enterprise COBOL for z/OS 6, you must have the following prerequisite hardware, software, and PTFs installed.
IBM Z hardware
Enterprise COBOL for z/OS 6 has a minimum hardware requirement of z10. Programs compiled with the new COBOL 6 compiler will not run on machines with processor architectures earlier than z10. They will fail with an operation exception ABEND 0C1.
For Enterprise COBOL for z/OS 6, you must use SMP/E MISSINGFIX with FIXCAT to identify all required service PTFs needed by the new COBOL compiler. Required PTFs are not listed in the Enterprise COBOL for z/OS Migration Guide (6.3/6.2/6.1) or PSP buckets.
SMP/E FIXCATs help you to obtain the most accurate, up-to-date information about required PTFs for Enterprise COBOL for z/OS. They are also the easiest and the most expedient way to determine whether you have installed all prerequisite PTFs for Enterprise COBOL 6. See the COBOL Program Directory for the list of FIXCAT keywords to use in the SMP/E MISSINGFIX command.
Enterprise COBOL 6 requires SMP/E V3R5 or later support for FIXCAT HOLDDATA for target system PTF verification.
Data sets and memory
Enterprise COBOL for z/OS 6 requires more data sets and more memory at compile time because it enables more aggressive optimizations to increase the performance of COBOL programs.
In addition to the work data sets SYSUT1-SYSUT7 used by earlier COBOL compilers, Enterprise COBOL 6 requires SYSUT8-SYSUT15 and SYSMDECK. The recommended region size is 200MB.
Enterprise COBOL 6 can automatically generate SMF89 records, which can be used by the Sub-capacity Reporting Tool (SCRT) V21.2.0. With Enterprise COBOL 6, you no longer need to manually track usage of the COBOL compiler.
Language Environment (LE) migration
If you have not already done so, you need to complete your migration to LE to use Enterprise COBOL for z/OS 6. Check for the following issues:
- The Language Environment data set SCEERUN is installed in LNKLST or LPALST.
- LINKLST or LPALST contains no instances of COBLIB, VSCLLIB, or COB2LIB.
- JCL STEPLIB or JOBLIB statements in batch jobs or in CICS startup JCL contain no instances of COBLIB, VSCLLIB, or COB2LIB in JCL STEPLIB or JOBLIB statements in batch jobs or in CICS startup JCL.
- All statically bound runtime library routines (for programs compiled with NORES) have been replaced (using the REPLACE linkage editor control statement) with routines from Language Environment.
- All VS COBOL II bootstrap modules IGZEBST have PN74000 applied or have been replaced with the LE version.
OS/VS COBOL programs
You cannot mix OS/VS COBOL programs with programs compiled with Enterprise COBOL 6. You must migrate them to Enterprise COBOL. Use one of the following methods to determine whether you still have OS/VS COBOL programs:
- Use the File Manager View Load Module tool (the formerly recommended Load Module Analyzer is deprecated) included in IBM File Manager for z/OS to scan load libraries.
- Use an object scanner to scan load libraries.
- Install the fix for APAR PM86742 to z/OS Language Environment to receive the following warning messages whenever OS/VS COBOL programs are run:
- IGZ0268W An invocation was made of OS/VS COBOL program program-name
- IGZ0269W program-lang version program-version program program-name made a call to OS/VS COBOL program program-name
VS COBOL II programs
If you still have VS COBOL II NORES programs, you need to recompile them with Enterprise COBOL so that they can work with Enterprise COBOL 6.
You might get different results with Enterprise COBOL 6 compared to previous compilers if your programs have 'invalid COBOL data' or 'invalid COBOL programs', where data values or programs do not conform to the rules in the Enterprise COBOL Language Reference manual. The recommended way is to compile each application (group of programs) with COBOL 6 using the INITCHECK, NUMCHECK, PARMCHECK, and SSRANGE compiler options, and regression test the application alongside the same application in its current form (that is, compiled with Enterprise COBOL 4 or earlier compilers). If you do not get any INITCHECK, NUMCHECK, PARMCHECK, or SSRANGE errors, and you are sure that you get the same results with the new compiler as with the earlier compilers, recompile with NOINITCHECK, NONUMCHECK, NOPARMCHECK, and NOSSRANGE, and move the application into production.
After a while, if you have not found any INITCHECK, NUMCHECK, PARMCHECK, or SSRANGE errors, then you might consider skipping this step for future migrations. You might not have any invalid data usage. In addition, this step is only recommended for the first time that a program is compiled with 6. Once you have compiled with 6, you do not have to worry about migration problems for that program.
Enterprise COBOL Developer Trial
To help you plan and assess the value your applications gain from upgrading to Enterprise COBOL 6, try the generally available developer trial. Enterprise COBOL Developer Trial for z/OS 6 has the same functions as the full product, and comes with a 90-day, no-charge evaluation license that does not initiate single-version charging (SVC). The trial has no restrictions in function or performance. The only difference is that the trial version can be used only in non-production environments, and code compiled with it cannot be used in production.
Enterprise COBOL 6 Migration Webinar and Performance Tuning Webinar Recordings
The Enterprise COBOL 6 Migration Webinar and Performance Tuning Webinar were hosted regularly via webcasts at NO charge, and the final live ones were conducted in April 2022. You can watch the recorded videos for both COBOL 6 Migration Webinar and Performance Tuning Webinar to learn the latest IBM recommendations and best practices to help with your migration to Enterprise COBOL 6, and understand how to take advantage of advanced optimization technology with Enterprise COBOL 6. In addition, you can connect with IBM COBOL experts by filling out a questionnaire.
Team up: Enterprise COBOL and Automatic Binary Optimizer
IBM Automatic Binary Optimizer for z/OS (ABO) uses advanced optimization technology to generate code targeting the latest IBM Z mainframes and reduces the CPU usage of your COBOL applications to lower operating costs, while maintaining strict compatible functionality of the original modules. ABO and Enterprise COBOL serve different but complementary purposes - use the latest version of COBOL compilers for new development, modernization, and maintenance, and use ABO to optimize your COBOL modules without a recompilation plan.
So why not try using the free ABO Cloud Trial to get the power of ABO right away simply with an IBMid login?
To discover more about ABO and its benefits, see its product page.
With the new optimization framework in Enterprise COBOL for z/OS 6, users of COBOL on IBM Z can take advantage of significant performance improvements, new modernization features, and problem determination capabilities.
The optimization framework provides a solid foundation for delivering a release-to-release performance improvement. Stay current with latest COBOL technology after upgrading to Enterprise COBOL 6, to make full use of these improvements.Related blogs: