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 READ
s) or the D-ISAM Extfh driver (on WRITE
s) 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.
Legal Notice
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.