Skip to content

Compiler Suite Release Notes Version 4.10

Note

Upgrading to a Major Release (2.0, 3.0, 4.0, etc…) requires recompilation of all programs. Minor Releases (3.x, 4.x, etc…) document recently added features in maintenance releases (3.x.x, 4.x.x, etc…). In exceptional cases, a minor release may contain updates that may require recompilation of all programs. Where this is the case, an Important note will be highlighted in the Release Notes.

4.10

What's New

Added the COBOL-IT OpenESQL (CitOESQL) embedded SQL (ESQL) preprocessor to COBOL-IT. CitOESQL reads COBOL source code and writes amended source code where EXEC SQL statements are replaced with calls to a runtime library that accesses ODBC data sources. COBOL-IT OpenESQL can be used as a stand-alone preprocessor that is executed separately and before the COBOL-IT compiler, or in conjunction with COBOL-IT’s -preprocess= option, in which case it is invoked by the COBOL compiler.

When used stand-alone, the preprocessor provides conditional compilation and copybook expansion. These tasks may be performed by the COBOL compiler when used with the -preprocess option.

The debugger will show the code generated by CitOESQL rather than the original EXEC SQL statements. When used with the compiler’s -preprocess option, debugging of the original source code is available.

Resolved Issues

  • The below program no longer fails "stops producing the trace and aborts" while producing a producing a ready trace output.

  • The use of -fnull-param together with -fstatic-call was added.

  • The usage of O2 compiler option no longer causes an incorrect value in Pic 9 usage display field with value of zero.

  • The issue with the SEARCH instruction has been resolved.

  • The compiler option -frefcheck-prior-statement was added to 4.2.x product.

  • The file creation date is now correct in the file header for variable length record sequential and relative files.

  • LIBEXPAT.LIB on Windows and libexpat.so on UNIX have been updated to address a security vulnerability.

  • The CIT 3.x file handler now honors the filename_mapping flag when routed through the external sort module.

  • The COBOL-IT External Sort module using statement now correctly reads and transfers files to SD.

  • When VBISAM file handler is used with a primary key that allows duplicates, a READ NEXT’s AT now works properly.

  • The compiler no longer truncates $SET constants at the first space.

  • Programs with an END PROGRAM without a program-name no longer crash the compiler.

  • Added support for controlling the text-column configuration parameter with a $SET statement in the source.

4.1

Note

Version 4.0 is a major release. Upgrading to a major release requires recompilation of all programs. Users upgrading to version 4.0 from a previous release are required to recompile and advised to test their complete system prior to implementing in production.

New

4.1.9

Support of MS Visual Studio 2017/2019

ID: 1150219381

Version 4.1.9 of the COBOL-IT Compiler Suite includes VS 2017 in Windows installation and support. This enhancement has also been applied to Version 3.10.70.

Support of Linux Red-Hat 8.x

ID : 1150236325

Version 4.1.9 of the COBOL-IT Compiler Suite supports Linux Redhat 8.x.

4.1.5

Internal and Default Entry Point for EXTSM changed to CIT_EXTSM

ID : 1150242699

With the release of Version 4, the use-extsm compiler flag was deprecated, as EXTSM is used by default. With this change, the compiler would report -use-extsm no longer supported, and the ability to indicate your own external sort module handler was lost.

Both of these conditions have been corrected.

In version 4.1.5, the -use-extsm <EXTSM entry name> compiler flag is again supported.

In version 4.1.5, the internal and default entry point has been renamed CIT_EXTSM.

You may link an external lib containing "EXTSM" and use the compiler flag -use-extsm=EXTSM to use the external library.

4.1.1

-fstrict-compare-low compiler flag

ID: 1150223735

-fstrict-compare-low determines how display numeric variables with low values compare to other values. Combining it with the move-picx-to-pic9:raw setting simulates the behaviour of the VAX/VMS compiler.

Note

The behavior of the VAX/VMS compiler is that the comparison of display-numeric with low-values against anything that is not low-values fails.

As an example:

       Configuration
       -------------
       move-picx-to-pic9: raw
       strict-compare-low: yes
       -------------

Consider the following case:

       01 REC.
              03 Lz_TEMP1 PIC XX.
              03 Lz_TEMP2 PIC 99.
       01 Lz_TEMP3 PIC S9(2) COMP VALUE 0.
       -------------
       MOVE LOW-VALUES TO REC
       IF Lz_TEMP2 = LOW-VALUES THEN DISPLAY "Lz_TEMP2 equals LOW-VALUES.".
       IF Lz_TEMP2 = SPACES THEN DISPLAY "Lz_TEMP2 equals SPACES.".
       IF Lz_TEMP2 = ZEROES THEN DISPLAY "Lz_TEMP2 equals ZEROES.".
       IF Lz_TEMP2 = Lz_TEMP3 THEN DISPLAY "Lz_TEMP2 equals TEMP3.".

Using the configuration above, this code mimics the behavior of the VAX/VMS compiler, returning:
Lz_TEMP2 equals LOW-VALUES.

By default, the behavior of the COBOL-IT compiler returns:

       Lz_TEMP2 equals LOW-VALUES.
       Lz_TEMP2 equals ZEROES.
       Lz_TEMP2 equals TEMP3.

Trace log update for extfh

ID: 1150218973

The format of the trace log for extfh has been modified slightly. When the file status is “0”, the word “error” is no longer included in the log file. Instead of:
XXX: libcob: opening {file_name_ error status = 0

the message now reads:
XXX: libcob: opening {file_name} status = 0

4.1.0

Recompilation of all source files required

COBOL-IT Version 4.0 is a major release of the COBOL-IT Compiler Suite. As a result, the adoption of COBOL-IT Version 4.0 requires that all source files in the Customer’s application be recompiled. Most critical among the new features is the replacement of the VBISAM indexed file system engine with the D-ISAM indexed file engine. For more details, please see Introduction to DISAM, including Migration Guidelines.

D-ISAM Support

The VBISAM engine has been deprecated and replaced by the D-ISAM indexed file engine. The D-ISAM engine is more stable and more widely used than the VBISAM engine and is fully compatible with IBM C-ISAM 7.2.

Unfortunately, VBISAM files are not readable by D-ISAM and will require conversion. Conversion can be done using CitSORT, or by writing a program that uses the COB_EXTFH environment variable to direct the runtime to use the VBISAM Extfh driver (on READs) or the D-ISAM Extfh driver (on WRITEs) in your conversion.

Note

The runtime will use the same EXTFH setting throughout a single runtime session. Recommended practice to convert a file from VBISAM to DISAM is to create two separate processes. The first process should be designed to READ the existing VBISAM file and WRITE each record into SEQUENTIAL file format. The second process should be designed to READ the resulting SEQUENTIAL file, and WRITE each record into DISAM file format. Please see Introduction to DISAM, including Migration Guidelines for more details.

-fvbisam

The -fvbisam compiler flag forces use of the VBISAM Extfh indexed file engine.

vbisam: [yes/no]

Default is: vb isam : no no.

The vbisam compiler configuration flag when set to yes, forces use of the VBISAM Extfh indexed file engine.

-fdisam

The -disam compiler is no longer required. The DISAM Extfh indexed file engine is used by default.

disam: [yes/no]

Default is:
disam : yesyes.

The default for the disamcompiler configuration flag has been changed to yes.

Changes to licensing

COBOL-IT has made changes to licensing to all products, effective with the the release of COBOL-IT Compiler Suite version 4.0 (and later). With the release of COBOL-IT Compiler Suite version 4.0, separate license files are required for each product/platform pairing. As a consequence, users can no longer use the same license for multiple products, on multiple platforms; users deploying multiple products require multiple license files.

Default location:
The default location for COBOL-IT product license files in %COBOLITDIR% (Windows) and $DEFAULT_CITDIR (Linux). For COBOL-IT Compiler Suite version 4, the default installation directory is /opt/cobol-it4-64 (Linux).

Default naming convention:

License files located in the default location named citlicense.xml, or with names prefixed by cit-license- and with the .xml extension will be validated by COBOL-IT products.

Using COBOLIT_LICENSE to reference single or multiple license files:

For cases where different naming conventions are used, or where license files are not stored in the default installation directory, the user should use the COBOLIT_LICENSE environment variable to indicate the full path(es) and name(s) of their license file(s).

Note that when indicating multiple license files, the semicolon “ ; ” separator is used. In Linux, the list of license files is started and finished with single-quote marks “ ‘ “. The single-quote is located on the same key as the double-quote on most keyboards.

As examples (Linux):
>export COBOLIT_LICENSE=/opt/cobol-it4-64/compilerlic.xml

>export COBOLIT_LICENSE=’/opt/cobol-it4-64/compilerlic.xml;/opt/cobol-it4-64/citsqllic.xml’

Fixes

4.1.8

Using little-endian byte order for variable-length record size

ID: 1150248981

When working with sequential files with variable format records, the representation of the small record size (< 4096 bytes) used a big-endian byte ordering, but the representation of the large record size (>=4096 bytes) used the little-endian ordering. This could cause problems in some situations.

This has been corrected.

4.1.6

Offset of [PIC S9(9) COMP Field] out of bounds anomaly

ID: 1150242407

It was possible for a reference modification reference to the first byte of a PIC S9(9) COMP field to be incorrectly interpreted in an OR clause contained within a PERFORM VARYING clause, causing an Offset out of bounds error to be reported. This error did not occur un version 3.10.60.

This has been corrected.

4.1.2

Debugger does not work in DECLARATIVES SECTION

ID: 1150234527

The Debugger would automatically stop when entering the DECLARATIVES SECTION of a program.

This has been corrected.

4.1.1

REPLACE statement causes debugger to lose position in source

ID: 1150223049

When using a REPLACE statement to replace content in a copy book, or in the Procedure Division, and when another copy book is placed after the REPLACE statement, the COBOL-IT Debugger could miscalculate the line number on which it was executing.

This has been corrected.

out of bounds error with Optimize -O/-O2 option

ID: 1150222119

When using the -O compiler flag in conjunction with -g and EC-BOUND-REF-MOD:yes, it was possible to have an indexed out of bounds error returned.

This has been corrected.


For information about legal notices, trademarks, disclaimers, warranties, export and other use restrictions, U.S. Government rights, patent policy, and FIPS compliance, see https://www.microfocus.com/about/legal/.

© Copyright 2023 Micro Focus or one of its affiliates.

The only warranties for products and services of Micro Focus and its affiliates and licensors ("Micro Focus") are set forth in the express warranty statements accompanying such products and services. Nothing herein should be construed as constituting an additional warranty. Micro Focus shall not be liable for technical or editorial errors or omissions contained herein. The information contained herein is subject to change without notice.

This documentation is derived from COBOL-IT Source code, parts of which are derived from OpenCOBOL.

Copyright (C) 2002-2007 Keisuke Nishida

Copyright (C) 2007 Roger While

Third-Party Notices

Additional third-party notices, including copyrights and software license texts, can be found in a 'Third-Party-License-File' file in the root directory of the software.

Back to top