COBOL-IT Release Notes

Copyright (C) 2008-2023 COBOL-IT.

Table of Contents

Introduction

There are two versions of COBOL-IT in active release.

VersionDescription
4.11This is the current COBOL-IT release. All new features will be based on this release.
3.21This is the maintained COBOL-IT release. Only critical issues will be fixed in this release.

Older supported releases:

VersionDescription
4.2This is the previous release on the current branch. The latest hotfix is 4.2.6.
3.11This is the previous release on the maintained branch. The latest hotfix is 3.11.1.

The current Developer Studio release:

VersionDescription
2.2Updated to JDK 11 and Eclipse 2022-03.

Version 4 Releases

Version 4 is the current version of COBOL-IT.

Version 4.11

This major release contains new features and corrects a number of issues.

FeatureDescription
Embedded SQLThe existing SQL separate product CitSQL has been replaced by a new SQL component as an integral part of the standard COBOL-IT distribution.

This addition aims to ensure seamless compatibility with the latest platforms and databases while bringing forth several enhancements over the current implementation.

Existing SQL functionality CitSQL is now End of Life.
Visual Studio 2022This addition aims to ensure seamless compatibility with the latest platforms and databases while bringing forth several enhancements over the current implementation. COBOL-IT now supports Visual Studio 2022.
DISAM Performance ImprovementsExisting SQL functionality CitSQL is now End of Life.DISAM file read performance is now 21% faster, write performance is 31% faster, and rewrite performance is 86% faster than version 4.2 when using the default LOCK MODE.

Some antivirus utilities affect DISAM write and rewrite performance. If you are seeing very slow DISAM write and rewrite times, please try disabling your virus scanner before repeating the test.
Record and File Locking ImprovementsEXCLUSIVE LOCK MODE: Previously, this lock mode would unnecessarily lock each record on a rewrite/update operation, and would fail to release the unnecessary lock. This has been corrected.

AUTOMATIC LOCK MODE: Without the MULTIPLE modifier, AUTOMATIC LOCK MODE should hold only a single lock at a time. The locks were not being released. The previous locks are now released when a new lock is initiated.

READ WITH WAIT: The wait was being ignored. This has been corrected.

LOCK ON MULTIPLE RECORDS: The MULTIPLE modifier was being ignored. It is now parsed correctly and represented in the open mode flag for the file.
Windows InstallationThe Windows installers have been upgraded. Previously, there was a single executable installer for 32-bit and 64-bit that contained separate installers for each Visual Studio version.

Beginning with this release, there are separate MSI installers for each combination of version number, 32 or 64-bit, and supported Visual Studio version.

The installation programs have been renamed to make it easy to install the desired version:

cobol-it-4.11-32-x86-vc2015-windows-enterprise-328422-setup.msi
cobol-it-4.11-32-x86-vc2017-windows-enterprise-328422-setup.msi
cobol-it-4.11-32-x86-vc2019-windows-enterprise-328422-setup.msi
cobol-it-4.11-32-x86-vc2022-windows-enterprise-328422-setup.msi
cobol-it-4.11-64-x64-vc2015-windows-enterprise-328422-setup.msi
cobol-it-4.11-64-x64-vc2017-windows-enterprise-328422-setup.msi
cobol-it-4.11-64-x64-vc2019-windows-enterprise-328422-setup.msi
cobol-it-4.11-64-x64-vc2022-windows-enterprise-328422-setup.msi

This release corrects the following issues.

IssueDescription
420025When a SORT operation fails because of insufficient disk space, the SORT-RETURN register is now set to 16. Previously, the SORT-RETURN register was not being set.
510042 508053Don't throw an exception If the SORT input file is missing or cannot be opened if the SELECT contains FILE STATUS. This allows the SORT-RETURN register to be examined, but note that FILE STATUS is still not set. A work-around is to provide DECLARATIVES for the file, or check to see if the file is missing before invoking SORT. This emulates the version 3 behavior which also does not set FILE STATUS but uses the presence/absence of this phrase to determine if an exception should be issued. This, along with 420025 fixes issue 508053.
417001When a file is closed, the file handler now sets the pointer to the file handle structure that is visible in the FCD to NULL.
414084Fixed a problem where STOP RUN was failing to close open files.
446035The FILE STATUS was not being set if an internal SORT phrase fails with an I/O error.
382071Allow the COB_EXTFH environment variable and other environment variables exist but be set to an empty value. If empty, they will be treated as if they did not exist and the defaults will be used. This fixes an issue where the value of the environment variable would be set to an empty or blank string and generate an error that the "" library could not be found.
448072Fixed issue with -g COBOL debug mode that did not free memory.
103174Documentation: the description of SET Format 4 repeats Format 3 text.
105132Fixed issue with 78 level data item if incorrectly given a typedef type.
110100Fixed a runtime exception that could occur when calling a subprogram with a name that starts with a digit.
138288A COBOL program using a SORT verb can now properly located the CIT_EXTSM module.
170046The Add/Remove Programs or Programs and Features Windows applications now shows all simultaneously installed versions of COBOL-IT, instead of just the last installation. COBOL-IT can be uninstalled from within this window and the specific installation to be removed can be chosen. Automated removal is also possible using WMIC or other Windows tooling. As a consequence, an UNINSTALL.EXE is no longer created in the installation directory.
173052The COBOL-IT Start Menu folders have been reorganized for clarity and to reduce clutter. Right-clicking on a start menu entry offers the usual options and the Uninstall option.
175040Issue with $SET CONSTANT "..." where the string contained a space has been resolved.
176041Fixed a bug when calling a COBOL program whose ID started with a digit.
181090Fixed a code generation problem on the AIX platform where the xlc C compiler optimizer decided that a move from a comp type to a formatted field was unnecessary. This was caused by a union that was confusing the optimizer.
183077Fixed a bug in CBL_GET_CURRENT_DIR that resulted in an error because of an incorrect value passed as the length of the directory name.
193030Problematic RSE Git feature deprecated and removed from Developer Studio in favor of Eclipse-provided Git.
193091Fixed issue with the allocation of memory for the key containing multiple parts that caused a segmentation fault.
202074If multiple versions of Visual Studio or the Microsoft Visual C tools are installed, the setenv_cobolit.bat script, referenced by the desktop icon, would choose the most recent version but always the same as or higher than the version of COBOL-IT that was being installed. The script will now set up the proper version of Visual Studio or the Visual C tools, and only choose the next-highest version if the version that matches the COBOL-IT installation is missing.
204032The reference manuals now document how to use the $SET statement to configure the compiler within the COBOL source.
204124Fixed issue in 3.x source that was assigning sysout file to the cob_file_error during a display. A subsequent check in the code would cause the program to terminate because the cob_file_error was not specified in a select statement. The solution was to guard against setting the cob_file_error in this case.
204195The COBOL-IT compiler no longer crashes when compiling a COBOL program with an END PROGRAM clause without a program name.
244111Fix for external SORT statement input procedure. If an external sort routine is used and the input procedure overrides the file assigned in the giving clause, the program will recognize this modification and adjust the output file accordingly.
259006Updated libexpat version 2.1.0 to 2.4.9 for security fixes.
286070Fixed a problem in cobcdb, with thread race conditions during program termination that either caused all output not to be written, or could sometimes cause the debugger to hang.
363224The filename-mapping flag was being overridden and the external-mapping flag was not being passed appropriately when files were marked external.
Both of these were fixed and now the behavior matches what we see in the 4.x code which we decided was behaving appropriately.
380024The COBOL-IT Getting Started Guide now describes how to use the install.sh script.
384009The ISAM file header now includes the creation date when creating a variable length record file.

Version 4.2

This major release contains a number of corrected issues.

Version 4.2.6

IssueDescription
448072Fixed an issue with -g COBOL debug mode that did not free memory.
446035The FILE STATUS was not being set if an internal SORT phrase fails with an I/O error.
510042 508053Don't throw an exception If the SORT input file is missing or cannot be opened if the SELECT contains FILE STATUS. This allows the SORT-RETURN register to be examined, but note that FILE STATUS is still not set. A work-around is to provide DECLARATIVES for the file, or check to see if the file is missing before invoking SORT. This emulates the version 3 behavior which also does not set FILE STATUS but uses the presence/absence of this phrase to determine if an exception should be issued. This, along with 420025 fixes issue 508053.

Version 4.2.5

IssueDescription
420025When a SORT operation fails because of insufficient disk space, the SORT-RETURN register is now set to 16. Previously, the SORT-RETURN register was not being set.
417001When a file is closed, the file handler now sets the pointer to the file handle structure that is visible in the FCD to NULL.
414084Fixed a problem where STOP RUN was failing to close open files.

Version 4.2.4

IssueDescription
402177Fixed a memory leak in the COBOL-IT SORT statement, where memory was being allocated during the SORT comparison but was not being freed on all paths out of the function. This caused large amounts of memory to be allocated and not freed until the run-unit terminated.
405148 407124Reconfigured the test for a over/underflow in a write statement to be detected by the file handler instead of the bit of code that calls the file handle.
408027Corrected a problem in SORT that prevented a SORT DEFINITION (SD) from being used for more than one consecutive SORT operation.

Version 4.2.3

IssueDescription
384034Fixed the file creation date in header of variable-length indexed files.

Version 4.2.2

IssueDescription
306127Corrected a problem where, when a COBOL source file contains two COBOL programs and one calls the other, and when the source file is compiled with the -fnull-param and -fstatic-call options, the generated C program has a syntax error on Linux.
313036The COBOL-IT compiler now properly emits the initialization of Numeric Display fields, when the parent group has been initialized using binary zeros (LOW-VALUES). For most of the numeric types, a field of binary zeros is indeed a zero, and when optimization is enabled during the compilation of the source module, the compiler will skip the initialization of field with a VALUE of 0 because the group was initialized to binary zeros already. However, this is not the case for Numeric Display fields, as a zero is the character 0.
318054Issue concerning out of range OCCURS DEPENDING ON has been resolved.
344031The compiler option -frefcheck-prior-statement from 3.1.072 and later is now available in 4.10. This option allows reference and boundary checks to be disabled before statement execution by setting this option to 0.
384035Fixed the file creation date in header of variable length indexed file.
375044Corrected a problem where a VBISAM indexed file with duplicate prime keys, and the last two record in the file's prime key are duplicate, when the current record position is the last record, a READ NEXT will not detect the EOF condition, but will instead return the last record again.

Version 4.2.1

IssueDescription
138288A COBOL program using a SORT verb can now properly located the CIT_EXTSM module.
203142CITSORT will now properly sort a line sequential file with empty lines into a binary sequential file.
207015A problem with converting VMS data into a numeric edited field was fixed if the undocumented displayalphanumeric-vms:yes option is set.
231017COBOL-IT now correctly computes the scale when an integer literal is added to PIC S9(11)v9(7) COMP field.
259114The 64-bit COBOL-IT Windows installations now contain a 64-bit Report Writer. Previously, they contained a 32-bit Report Writer.

Version 4.2.0

IssueDescription
113015The setenv_cobolit.bat files in the installation directories have been completely rewritten. The script now finds the specified Visual Studio installation in the proper way, rather than using the default installation locations.
The previous scripts contained a PAUSE that prevented Developer Studio from using the script. A PAUSE is no longer required because the new batch files leave the console window open, and return an errorlevel on failure, along with displaying the cause of the error.
121057The cobc compiler will now recognize and compile .cpp files on the command line by passing the names to the underlying C/C++ compiler. Previously, .cpp files were processed as if they were COBOL source files.
181038Fixed issue with ROLLBACK of transaction. This appeared to be failing on 32 bit Linux tests only, but that it was passing on other systems was really just luck or a quirk in how the pointer values are assigned.
198057Added the initialization of key buffer array in generated C code. The absence of this initialization was causing failures on AIX under some circumstances.
118049Starting in the Microsoft C version delivered with Visual Studio 2015, direct calls from COBOL to printf() fail because the Microsoft C compiler generates calls to printf() inline instead of using an imported library function. In addition, there is no longer a printf() entry point in the Microsoft C libraries. To work around this, we are now providing a library, winstdio_dll.dll that implements the missing entry points.

There are two solutions:

1. At the start of the COBOL program, before the first DISPLAY or stdio call, insert this call:
CALL "WINSTDIO_DLL.DLL". This loads the DLL that provides the definitions for printf() and other standard IO functions.
2. Add WINSTDIO_DLL to the COB_PRE_LOAD environment variable. This must be set before the COBOL program is launched.
Once WINSTDIO_DLL.DLL is loaded, the entry points like printf() will be available to the COBOL program.

 

Version 3 Releases

Version 3 is the "maintained" version of COBOL-IT. After version 3.21, version 3 will only receive fixes for critical issues. All version 3 users should migrate to version 4 as soon as feasible.

Version 3.21

This major release contains new features and corrects a number of issues.

FeatureDescription
Embedded SQLThe existing SQL separate product CitSQL has been replaced by a new SQL component as an integral part of the standard COBOL-IT distribution.

This addition aims to ensure seamless compatibility with the latest platforms and databases while bringing forth several enhancements over the current implementation.

Existing SQL functionality CitSQL is now End of Life.
Visual Studio 2022COBOL-IT now supports Visual Studio 2022.
Windows InstallationThe Windows installers have been upgraded. Previously, there was a single executable installer for 32-bit and 64-bit that contained separate installers for each Visual Studio version.

Beginning with this release, there are separate MSI installers for each combination of version number, 32 or 64-bit, and supported Visual Studio version.

The installation programs have been renamed to make it easy to install the desired version:

cobol-it-3.21-32-x86-vc2015-windows-enterprise-328540-setup.msi
cobol-it-3.21-32-x86-vc2017-windows-enterprise-328540-setup.msi
cobol-it-3.21-32-x86-vc2019-windows-enterprise-328540-setup.msi
cobol-it-3.21-32-x86-vc2022-windows-enterprise-328540-setup.msi
cobol-it-3.21-64-x64-vc2015-windows-enterprise-328540-setup.msi
cobol-it-3.21-64-x64-vc2017-windows-enterprise-328540-setup.msi
cobol-it-3.21-64-x64-vc2019-windows-enterprise-328540-setup.msi
cobol-it-3.21-64-x64-vc2022-windows-enterprise-328540-setup.msi

This release corrects the following issues.

IssueDescription
382071Allow the COB_EXTFH environment variable and other environment variables exist but be set to an empty value. If empty, they will be treated as if they did not exist and the defaults will be used. This fixes an issue where the value of the environment variable would be set to an empty or blank string and generate an error that the "" library could not be found.
526090On Windows, link EXTSM (the SORT access method) into libcobit_dll.dll. This makes it possible to CALL "EXTSM" using opcode, fcd in a COBOL program, providing direct acess to SORT. Note that version 4 already has this functionality, as does version 3 on UNIX.
306127Corrected a problem where, when a COBOL source file contains two COBOL programs and one calls the other, and when the source file is compiled with the -fnull-param and -fstatic-call options, the generated C program has a syntax error on Linux.
313036The COBOL-IT compiler now properly emits the initialization of Numeric Display fields, when the parent group has been initialized using binary zeros (LOW-VALUES). For most of the numeric types, a field of binary zeros is indeed a zero, and when optimization is enabled during the compilation of the source module, the compiler will skip the initialization of field with a VALUE of 0 because the group was initialized to binary zeros already. However, this is not the case for Numeric Display fields, as a zero is the character 0.
318054Issue concerning out of range OCCURS DEPENDING ON has been resolved.
375044Corrected a problem where a VBISAM indexed file with duplicate prime keys, and the last two record in the file's prime key are duplicate, when the current record position is the last record, a READ NEXT will not detect the EOF condition, but will instead return the last record again.
384034Fixed the file creation date in header of variable length indexed file.
105132Fixed issue with 78 level data item if incorrectly given a typedef type.
170046The Add/Remove Programs or Programs and Features Windows applications now shows all simultaneously installed versions of COBOL-IT, instead of just the last installation. COBOL-IT can be uninstalled from within this window and the specific installation to be removed can be chosen. Automated removal is also possible using WMIC or other Windows tooling. As a consequence, an UNINSTALL.EXE is no longer created in the installation directory.
173052The COBOL-IT Start Menu folders have been reorganized for clarity and to reduce clutter. Right-clicking on a start menu entry offers the usual options and the Uninstall option.
202074If multiple versions of Visual Studio or the Microsoft Visual C tools are installed, the setenv_cobolit.bat script, referenced by the desktop icon, would choose the most recent version but always the same as or higher than the version of COBOL-IT that was being installed. The script will now set up the proper version of Visual Studio or the Visual C tools, and only choose the next-highest version if the version that matches the COBOL-IT installation is missing.
204124Fixed issue in 3.x source that was assigning sysout file to the cob_file_error during a display. A subsequent check in the code would cause the program to terminate because the cob_file_error was not specified in a select statement. The solution was to guard against setting the cob_file_error in this case.
204195The COBOL-IT compiler no longer crashes when compiling a COBOL program with an END PROGRAM clause without a program name.
259006Updated libexpat version 2.1.0 to 2.4.9 for security fixes.
363224The filename-mapping flag was being overridden and the external-mapping flag was not being passed appropriately when files were marked external.
Both of these were fixed and now the behavior matches what we see in the 4.x code which we decided was behaving appropriately.
384009The ISAM file header now includes the creation date when creating a variable length record file.
204007An intermittent problem in the v3 64-bit cobc compiler that caused a failure when compiling a program with a REPORT section has been corrected.
374018Issue preventing the successful processing of a SORT using file when using an external sort module was corrected. The previous error would have resulted in a null fill output/giving file from the sort.

Version 3.11

Issues corrected in version 3.11:

Version 3.11.1

IssueDescription
203142CITSORT will now properly sort a line sequential file with empty lines into a binary sequential file.
207015A problem with converting VMS data into a numeric edited field was fixed if the undocumented displayalphanumeric-vms:yes option is set.
231017COBOL-IT now correctly computes the scale when an integer literal is added to PIC S9(11)v9(7) COMP field.
259114The 64-bit COBOL-IT Windows installations now contain a 64-bit Report Writer. Previously, they contained a 32-bit Report Writer.
244111Fix for external SORT statement input procedure. If an external sort routine is used and the input procedure overrides the file assigned in the giving clause, the program will recognize this modification and adjust the output file accordingly.

Version 3.11.0

IssueDescription
113015The setenv_cobolit.bat files in the installation directories have been completely rewritten. The script now finds the specified Visual Studio installation in the proper way, rather than using the default installation locations.
The previous scripts contained a PAUSE that prevented Developer Studio from using the script. A PAUSE is no longer required because the new batch files leave the console window open, and return an errorlevel on failure, along with displaying the cause of the error.

 

Developer Studio Releases

Version 2.2

Updated to JDK 11 and Eclipse 2022-03.