action.skip

Compiler Suite Release Notes Version 4.11.1

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.

Introduction

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

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

Older supported releases:

Version Description
4.2 This is the previous release on the current branch. The latest hotfix is 4.2.7.
3.11 This is the previous release on the maintained branch. The latest hotfix is 3.11.1.

4.0

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: Version 4

4.11.1

Windows Installations

For this release, the MSI installers have been limited to the Visual Studio 2022 versions.

cobol-it-4.11.1-32-x86-vc2022-windows-enterprise-setup.msi
cobol-it-4.11.1-64-x64-vc2022-windows-enterprise-setup.msi

4.11

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

Feature Description
Embedded SQL The 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 2022 COBOL-IT now supports Visual Studio 2022.
DISAM Performance Improvements 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 Improvements EXCLUSIVE 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 Installation The 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

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’

New: Version 3

3.21

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

Feature Description
Embedded SQL The 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 2022 COBOL-IT now supports Visual Studio 2022.
Windows Installation The 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

Fixes: Version 4

4.11.1

This release corrects the following issues.

Issue Description
406167 Do not attempt flush files opened for INPUT with fsync(). This operation results in an internal error state that is subsequently ignored. Also correct the documentation to state that CLOSE UNIT and CLOSE REEL follow the COBOL standard and do not actually close the file.
515040 Updated the COBOL language parser to handle the EVALUATE statement correctly: a WHEN clause after WHEN OTHER now generates this error: Error: syntax error, unexpected WHEN.
A compilation error is also generated if a nested EVALUATE does not terminate with an END-EVALUATE. This decision ensures consistency across COBOL dialects and promotes code readability.
543001 Make the SORT-RETURN special register available to program that calls a user defined sort module: on error. The SORT-RETURN register is now available in both the COBOL program that contains the SORT statement and also in the COBOL program that contains the CALL "EXTSM" statement. This handles the case where an EXTSM module is specified on the command line or in configuration.
544017 The compiler now correctly diagnoses un-subscripted array references in all of the SCREEN section clauses except for the USING clause, where it is supported. Furthermore, if a SCREEN definition specifies the OCCURS clause, the compiler also correctly diagnoses if the LINE and COLUMN clauses are not relative.
544099 Add an option to leave programs open after the STOP RUN statement. This makes COBOL-IT termination work like 3.10.35 and earlier, and specifically allows Oracle Tuxedo ART programs to call shutdown functions like ART_BATCH_EXIT in the C runtime exit() routine after STOP RUN. To leave the programs open, set COB_SKIP_CLOSE_ALL_HANDLES=Y in the program environment.
628019 Validity checks on reference modification of data items within condition statements (specifically IF, PERFORM, and EVALUATE) are now properly generated such that they are not evaluated if a previous test precludes the data item from being evaluated, that is via a short-circuit evaluation. Such as:

01 REF-MOD PIC X(4).
MOVE 5 TO I.
IF I < 5 AND REF-MOD(I:1) = SPACE

If this conditional expression is fully evaluated and reference checking was enabled, the COBOL program would fault, even though the IF statement is already checking the bounds. Since I < 5 is already FALSE, the entire condition is already FALSE no matter the result of the REF-MOD(I:1) = SPACE expression. The COBOL program was already properly performing the short-circuit evaluation but the reference check was not part of that generated code.
652135 The cobcdb program now enables the -y and the --tty options. The documentation was also updated to indicate the other alternative flags for the cobcdb options and enabled both the short and long options for cobcdb.
653114 Corrected an issue with the implementation of the -Os size optimization flag when dealing with calls using fields declared in the linkage section.
653150 Updated the COBOL-IT Debugger Guide to document the parameters of the List command in the "Debugger Commands" section.
663042 Updated the COBOL-IT Debugger's Users Guide's Debugger Commands section to include undocumented commands. Some of these commands are for internal use, but all are documented for completion sake.

4.11

This release corrects the following issues.

Issue Description
420025 When 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 508053 Don'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.
417001 When a file is closed, the file handler now sets the pointer to the file handle structure that is visible in the FCD to NULL.
414084 Fixed a problem where STOP RUN was failing to close open files.
446035 The FILE STATUS was not being set if an internal SORT phrase fails with an I/O error.
382071 Allow 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.
448072 Fixed issue with -g COBOL debug mode that did not free memory.
103174 Documentation: the description of SET Format 4 repeats Format 3 text.
105132 Fixed issue with 78 level data item if incorrectly given a typedef type.
110100 Fixed a runtime exception that could occur when calling a subprogram with a name that starts with a digit.
138288 A COBOL program using a SORT verb can now properly located the CIT_EXTSM module.
170046 The 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.
173052 The 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.
175040 Issue with $SET CONSTANT "..." where the string contained a space has been resolved.
176041 Fixed a bug when calling a COBOL program whose ID started with a digit.
181090 Fixed 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.
183077 Fixed 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.
193030 Problematic RSE Git feature deprecated and removed from Developer Studio in favor of Eclipse-provided Git.
193091 Fixed issue with the allocation of memory for the key containing multiple parts that caused a segmentation fault.
202074 If 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.
204032 The reference manuals now document how to use the $SET statement to configure the compiler within the COBOL source.
204124 Fixed 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.
204195 The COBOL-IT compiler no longer crashes when compiling a COBOL program with an END PROGRAM clause without a program name.
244111 Fix 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.
259006 Updated libexpat version 2.1.0 to 2.4.9 for security fixes.
286070 Fixed 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.
363224 The 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.
380024 The COBOL-IT Getting Started Guide now describes how to use the install.sh script.
384009 The ISAM file header now includes the creation date when creating a variable length record file.

4.2.7

Issue Description
543001 Make the SORT-RETURN special register available to program that calls a user defined sort module: on error. The SORT-RETURN register is now available in both the COBOL program that contains the SORT statement and also in the COBOL program that contains the CALL "EXTSM" statement. This handles the case where an EXTSM module is specified on the command line or in configuration.

4.2.6

Issue Description
448072 Fixed an issue with -g COBOL debug mode that did not free memory.
446035 The FILE STATUS was not being set if an internal SORT phrase fails with an I/O error.
510042 508053 Don'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.

4.2.5

Issue Description
420025 When 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.
417001 When a file is closed, the file handler now sets the pointer to the file handle structure that is visible in the FCD to NULL.
414084 Fixed a problem where STOP RUN was failing to close open files.

4.2.4

Issue Description
402177 Fixed 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 407124 Reconfigured 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.
408027 Corrected a problem in SORT that prevented a SORT DEFINITION (SD) from being used for more than one consecutive SORT operation.

4.2.3

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

4.2.2

Issue Description
306127 Corrected 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.
313036 The 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.
318054 Issue concerning out of range OCCURS DEPENDING ON has been resolved.
344031 The 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.
384035 Fixed the file creation date in header of variable length indexed file.
375044 Corrected 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.

4.2.1

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

4.2.0

This major release corrects a number of issues.

Issue Description
113015 The 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.
121057 The 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.
181038 Fixed 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.
198057 Added the initialization of key buffer array in generated C code. The absence of this initialization was causing failures on AIX under some circumstances.
118049 Starting 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.

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.


Fixes: Version 3

3.22

This release corrects the following issue.

Issue Description
544099 Add an option to leave programs open after the STOP RUN statement. This makes COBOL-IT termination work like 3.10.35 and earlier, and specifically allows Oracle Tuxedo ART programs to call shutdown functions like ART_BATCH_EXIT in the C runtime exit() routine after STOP RUN. To leave the programs open, set COB_SKIP_CLOSE_ALL_HANDLES=Y in the program environment.

3.21.1

This release corrects the following issue.

Issue Description
544099 Add an option to leave programs open after the STOP RUN statement. This makes COBOL-IT termination work like 3.10.35 and earlier, and specifically allows Oracle Tuxedo ART programs to call shutdown functions like ART_BATCH_EXIT in the C runtime exit() routine after STOP RUN. To leave the programs open, set COB_SKIP_CLOSE_ALL_HANDLES=Y in the program environment.

3.21

This release corrects the following issues.

Issue Description
382071 Allow 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.
526090 On 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.
306127 Corrected 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.
313036 The 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.
318054 Issue concerning out of range OCCURS DEPENDING ON has been resolved.
375044 Corrected 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.
384034 Fixed the file creation date in header of variable length indexed file.
105132 Fixed issue with 78 level data item if incorrectly given a typedef type.
170046 The 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.
173052 The 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.
202074 If 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.
204124 Fixed 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.
204195 The COBOL-IT compiler no longer crashes when compiling a COBOL program with an END PROGRAM clause without a program name.
259006 Updated libexpat version 2.1.0 to 2.4.9 for security fixes.
363224 The 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.
384009 The ISAM file header now includes the creation date when creating a variable length record file.
204007 An intermittent problem in the v3 64-bit cobc compiler that caused a failure when compiling a program with a REPORT section has been corrected.
374018 Issue 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.

3.11.1

Issue Description
203142 CITSORT will now properly sort a line sequential file with empty lines into a binary sequential file.
207015 A problem with converting VMS data into a numeric edited field was fixed if the undocumented displayalphanumeric-vms:yes option is set.
231017 COBOL-IT now correctly computes the scale when an integer literal is added to PIC S9(11)v9(7) COMP field.
259114 The 64-bit COBOL-IT Windows installations now contain a 64-bit Report Writer. Previously, they contained a 32-bit Report Writer.
244111 Fix 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.

3.11.0

Issue Description
113015 The 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.

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 2024 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.