Compiler upgrade checklist

To upgrade your programs to Enterprise COBOL, use the following checklist.

Do these tasks:

  1. Start of changeIf your COBOL executables (load modules or program objects) are in PDS data sets (also known as load libraries), copy the members to PDSE data sets and use PDSE data sets for your load libraries. IBM® recommends that you allocate your PDSE load library data sets with RECFM=U, DSNTYPE=LIBRARY, and VERSION=2, and leave all the other attributes blank, like this in ISPF:
    Record format . . . . U        
    Record length . . . .          
    Block size  . . . . .        
    Data set name type    LIBRARY  
    Data set version  . : 2        
    End of change
  2. Complete your runtime migration, which means:
    • The Language Environment® data set SCEERUN is installed in LNKLST or LPALST.
    • There are no instances of COBLIB, VSCLLIB, or COB2LIB in LNKLST or LPALST.
    • There are no instances of COBLIB, VSCLLIB, or COB2LIB in JCL STEPLIB or JOBLIB statements or in CICS® startup JCL.
    • All statically bound runtime library routines for programs that are compiled with NORES have been REPLACEd with routines from Language Environment.
    • IGZEBST bootstrap modules for VS COBOL II programs that are compiled with RES were either linked with the VS COBOL II runtime version of IGZEBST that has APAR PN74000 applied, or IGZEBST was REPLACEd with IGZEBST from Language Environment.

    When running a mixture of VS COBOL II programs and Enterprise COBOL 5 or 6 programs:

    • A current version of IGZEBST is required:
      • For statically CALLed programs in CICS, you will need to replace IGZEBST in applications with VS COBOL II programs with the IGZEBST from LE with the PTFs for APAR PI33330 installed.
        Note: IGZEBST from LE with the PTFs for APAR PI33330 installed can also be used with any COBOL programs VS COBOL II and later without COBOL 5 or 6 programs.
      • For dynamically CALLed CICS programs, you just need to install the PTFs for APAR PI25079 on SCEERUN.
        Note: For statically CALLed programs in non-CICS, performance will be better if you replace IGZEBST in applications with VS COBOL II programs with the IGZEBST from LE with the PTFs for APAR PI33330 installed. It is not required. There is no issue with IGZEBST for dynamically called programs in non-CICS for calling VS COBOL II programs from COBOL 5 or 6 programs.
    • A current version of CEEBETBL, the Language Environment externals table, is required. If you are including object code bound some time ago with your new COBOL 5 or 6 object code, you might be indirectly including an old version of CEEBETBL.

      If the length of CEEBETBL you bind is less than x'28' (or the length of the CEEBETBL in the current SCEELKED library), it is old and needs to be replaced, or you will encounter runtime abends or a terminating runtime message.

      If you rebind older object code with COBOL 5 or 6 as part of your migration, it is recommended that you specifically INCLUDE a current copy of CEEBETBL prior to INCLUDEs of the older object code, taking care that you do not inadvertently make CEEBETBL the entry point.

  3. Ensure that all software and hardware prerequisites as defined in IBM Software Product Compatibility Reports are satisfied.
  4. Install prerequisite PTFs for the Language Environment runtime library on all systems where COBOL programs might be compiled or run, including on all production systems. To find the required PTFs for COBOL 5 and 6, use the FIXCAT feature of SMP/E. See Prerequisite software and service for Enterprise COBOL 5 and 6.
  5. Ensure that all systems on which COBOL will run, and all software that needs to work with COBOL (for example z/OS®, Debug Tool, Fault Analyzer, and Db2®), are ready for programs compiled with the new COBOL compiler. For CICS, to make CSD setup and DFHRPL setup changes, see CICS conversion considerations. For a list of APARs, see Prerequisite software and service for Enterprise COBOL 5 and 6.
  6. Save the old COBOL compiler for emergency use.
  7. Purchase and install the new Enterprise COBOL compiler.
  8. Set up the default compiler options and your library control system options for the new compiler to be compatible with the old compiler. For future reuse, document any customization or set up that you do.
  9. Depending on which COBOL compiler you are migrating from, you might need to make COBOL source-code changes. For details, see the topic in the Upgrading programs section of this information which applies to your current compiler.
  10. The recommended migration strategy for Enterprise COBOL 6 is to compile each application (group of programs) with COBOL 6 using SSRANGE, NUMCHECK, PARMCHECK, INITCHECK, and OPT(0), 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 SSRANGE, NUMCHECK, PARMCHECK, or INITCHECK errors, and you are sure that you get the same results with the new compiler as with the earlier compilers, recompile with NOSSRANGE, NONUMCHECK, NOPARMCHECK, and OPT(2); then run a final test and move the application into production. The reason for testing with SSRANGE, NUMCHECK, and PARMCHECK is that some customers have found that they have invalid COBOL data that gets different results with COBOL 6. INITCHECK can find (at compile time) cases of uninitialized data which could also cause migration problems.

    If, after a while, you have not found any SSRANGE, NUMCHECK, PARMCHECK, or INITCHECK 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 a program with COBOL 6, you can skip regression testing with SSRANGE, NUMCHECK, PARMCHECK, or INITCHECK for future compiles.

  11. After all programs have been compiled with the new compiler, uninstall the old compiler.