Interactive COBOL Release Notes                 5.60  June-2026

The release notes are organized primarily by revision number, from
newest to oldest for the 5.5x and up releases. For information on all of
the 5.xx releases and additional notes on how the latest version is
built, see readic.txt.

Within each revision number section, there are up to three subsections:
"Bug Fixes", "Changes and New Features", and "Known Problems".

**********************************************************
NOTICE: Previous ICOBOL 5 Beta versions should be
        uninstalled before installing a final ICOBOL 5.
**********************************************************

Changes and New features in 5.60
--------------------------------

1.  The 5.60 product is 64-bit only and contains no 32-bit
    components on either Windows or Linux.  The Windows
    installer and Linux install scripts will give an error
    if run on a 32-bit OS installation, even if the underlying
    hardware is 64-bit.
2.  Support for Parallel, USB, and serial port hardware
    protection devices has been removed from ICPERMIT due
    to the fact that we no longer have access to the vendor's
    current driver and API software. The only supported
    license protection is MAC address.
3.  In conjunction with #2, the Windows installer no longer
    contains the Sentinel device driver installer or the
    options to install it.  Similarly, the Linux control
    scripts for ICPERMIT no longer make provision for the
    presence of a serial port protection device.
4.  The indexed API library that was added back into the release per
    a customer request in 5.52 has been removed again.
5.  The -B 32 and -B 64 options have been removed from ICRUNRC.
    If ICNETD receives a request for a -B 32 connection from a
    pre-5.60 ICRUNRC, it will return an error.
6.  The @icnet32/@icnet64 variations of the @icnet service
    name used in the SQL CONNECT statement are no longer supported
    to select the icqls surrogate.  Use of @icnet32 will return an
    illegal filename error.  Use of @icnet64 will be treated the same
    as using @icnet.
7.  An obscure feature on Linux systems that used a service port
    value of zero to specify an AF_UNIX socket instead of an
    AF_INET (TCP/IP) socket, has been removed.  This feature
    originated at a time when TCP/IP network support was optional,
    which is no longer the case.
8.  The -s option to the service daemons (icpermit, icexec, icnetd) in
    Linux, which indicated the service was running under systemd, is
    now redundant since all of the supported Linux builds expect the
    daemons to run under systemd.
9.  Since everything is now 64-bit, the bit width was dropped from the
    banner line of all the programs.  In Linux, the banner line
    will instead show the build code (ln10, db13, ub24, etc.)
10. The documentation has been updated to reflect the changes through
    version 5.60.


Changes and New features in 5.54.01
-----------------------------------

NOTE: 5.54.01 only applied to Windows

1. This update only affected the Windows setup programs, all of
   the installed programs are 5.54, not 5.54.01.  The setups
   were modified to execute the Microsoft supplied installers to
   install the Visual C redistributable .dll's instead of
   installing them directly into the ICOBOL install folders.
   When the setup first starts, there may be new popup dialogs
   prompting you to install these components.

Bug Fixes in 5.54.01
--------------------

1. Some of the .dlls that were installed into the ICOBOL installation
   folders were an older version than required by our programs,
   causing someprograms to malfunction. Two cases that we know of:
    a) the inability to run the Services Manager applet (icsvsmgr.cpl)
    b) an error about missing vcruntime140_1.dll starting ICEDCFW.


**** Revision 5.54 ****

Changes and New features in 5.54
--------------------------------

1.  In Windows, the services manage aontrol panel application is now built
    so as to be independent of icsyslib[32/64].dll.
2.  A new enhanced logging option called OPS has been added that will
    trace the PC and Opcode being executed.  This option will slow the
    application and produce large log files and we recommend that it be
    used only when requested by ICOBOL Support.  The ALL option does NOT
    include OPS.
3.  A new enhanced logging option called SCRN has been added that will
    trace screen operations and the builtin IC_GET_KEY.  It is included
    in the ALL option.
4.  The enhanced logging feature has been expanded for programs that
    are running in IC2X mode.

Bug Fixes in 5.54
-----------------

1.  When the remote runtime client (icrunrc) would crash, the surrogate
    process could remain indefinitely until icnetd or icpermit was
    restarted, which could use up runtime and sp2 licenses.
2.  There were rare instances where a comparison of alphanumeric items was
    returning the wrong result when running in ICOBOL 2 mode.  This was
    reported in the Linux 9 build running on an AMD EPYC 7262 8-Core
    processor.


**** Revision 5.53 ****

Bug Fixes in 5.53
-----------------

1.  The ODBC driver was not properly processing audit options, which prevented
    using any of the enhanced auditing options.
2.  On some Linux platforms, attempting to run a 32-bit icnetd surrogate with
    on a 64-bit machine sometimes could not resolve a username and would fail
    to start.  Instead of failing, the code was changed to look for the
    LOGNAME environment variable, or user "UnknownUser" as the username.
3.  The ICNETD daemon had a bug in the login code for the ICIOS surrogate in
    the case where ICNETUSESHEARTBEAT was not supplied to the client.  It
    appears this bug was introduced in version 5.40.
4.  ICNETD with the -L option was not passing extended audit options to the
    surrogate.
5.  Some changes were made to the Linux networking code that could have
    resulted in icnetd surrogates crashing with a segmentation violation.
    The changes also seem to have eliminated a problem where the icrunrs
    surrogate was using 100% CPU when idle in the Debian and Ubuntu builds.
    We believe this was an anomaly in the Linux poll() system call on
    those systems.

Changes and New features in 5.53
--------------------------------

1.   Additional enhanced logging messages were added to the login processing
     code in ICNETD.

**** Revision 5.52.01 ****

Bug Fixes in 5.52.01
--------------------

1.  The compiler could get buffer overflow errors and crash on Ubuntu 22 and 24.
    This was caused by incorrect build options in our Ubuntu build, which have been
    corrected.

**** Revision 5.52 ****

Changes and New features in 5.52
--------------------------------

1.  The indexed API library has been added back into the release per a
    customer request. Note, however, that only the 64-bit version has
    been added back.

2.  There are three new (64-bit only) Linux builds:
        db12x64 for Debian 12 and compatible Linux versions
        ub22x64 for Ubuntu 22 and compatible Linux versions
        ub24x64 for Ubuntu 24 and compatible Linux versions

3.  The filename processing algorithm used by the ICOBOL system will
    now allow the @ character in a filename.  In particular, Linux
    systems may compose a home directory from a username and hostname
    similar to an email address or the form used by SSH.
    The documentation has NOT been updated to reflect this change.

4.  There were corrections to some of the messages in the Linux installic script


**** Revision 5.51 ****

Changes and New features in 5.51
--------------------------------

1.  The method for determining the default printer for @PCQ processing in
    Windows has been updated to a newer method that should produce more
    reliable results.


**** Revision 5.50 ****

Changes and New features in 5.50
--------------------------------

1.  LINUX NOTICE: The Linux 6 builds (ln6xxx) are no longer being released
    since the build platform (CentOS 6) is past its End-of-Life date.
    Customers who still run that version of Linux should upgrade.
2.  LINUX NOTICE: As time goes on it is becoming more and more difficult to
    obtain the 32-bit add-on packages to support the 32-bit components.
    The only reason we continue to release them is for 32-bit thin-clients
    (icrunrc) that require a 32-bit surrogate (icrunrs). Please consider
    the 32-bit components to be deprecated and they are being phased out
    as of the new Linux 9 build, which is 64-bit only.
3.  ICLOG NOTICE: The file logging features provided by ICLOG and ICLOGS
    that were removed from the product in 5.40 have been permanently removed
    since no customers have requested it in the past 4 years.
4.  ICRUNCGI NOTICE: The icruncgi version of the runtime executable has been
    removed from the release.  That includes its readme and any example
    files.  This was licensed separately in ICOBOL 4 and before, and after
    polling the few customers that had purchased it, it was apparent that
    no one uses it any more. There are other preferred methods for building
    web applications.
5.  The toolsets and build platforms used to build ICOBOL have been updated.
    NOTE: All builds are run on 64-bit platforms with cross compilation
    for the 32-bit components.
    * The Windows builds now use Visual Studio 2022 instead of 2017 using
      Windows Server 2022 instead of 2016. This results in a newer set of
      Microsoft DLLs for the C runtime and Microsoft Foundation Classes.
    * The Linux 7 build is still run on CentOS 7.7 (gcc 4.8.5-39).
    * Since CentOS 8 moved from a stable release model to a rolling
      stream model (that previews upcoming releases), we have moved away from
      CentOS to Rocky Linux for Linux 8 and up.
    * The Linux 8 build is now run on Rocky Linux 8 (Red Hat gcc 8.5.0-10).
    * (NEW) The Linux 9 build is run on Rocky Linux 9 (Red Hat gcc 11.2.1-9)
      and is 64-bit ONLY (see item #2)
6.  The SP2 and FormPrint components have all been updated. These components
    had not undergone a significant update in quite some time, so we recommend
    that you re-test your application after upgrading.  See the readsp2.txt
    readme file for more details.
7.  The Linux installations no longer install the SP2/QPR related examples
    (fpdemo, pcqutil, qprdemo, and sp2logon). They are installed as components
    of the SP2 Development installation on Windows and can be copied from
    there if desired.
8.  Several open source libraries have been updated to newer versions:
        zlib has been updated to 1.2.12
        openssl has been updated to 1.1.1w.

Bug Fixes in 5.50
-----------------

1.  The Linux runtime system could hang when receiving frequent interrupts
    for pending screen messages (which uses SIGUSR2) while writing a print
    file to lp via a pipe. One result of this happening is messages in the
    ICEXEC log like the following:
    icexec: Info:    Wakeup signal (#10) sent from pid 1649075 to pid 2658693
    icexec: Warning: Wakeup signal (#10) from pid 1649075 to pid 2658693 not
                        sent: interrupt busy with (4)
    The system was modified to defer SIGUSR1 and SIGUSR2 processing for
    the duration of each pipe write.

2.  The runtime system would sometimes crash or get an invalid operation
    error when processing intrinsic functions with arguments that were
    expressions that included additional functions and the nested functions
    detected an error in its arguments.
    An example is:
      MOVE FUNCTION DATE-OF-INTEGER(FUNCTION INTEGER-OF-DATE(HOLD-FULL-YMD)
        + WS-ADJUST-DAY) TO HOLD-FULL-YMD.
    where HOLD-FULL-YMD was out of range.


**** Revision 5.49.02 ****

Bug Fixes in 5.49.02
--------------------

1.  The icpermit and icnetd were limited to 1016 socket connections
    causing them to be unable to service licenses with user counts
    greater than that number. The icpermit log would show the error:
    "There are no more license server connections available: Reserving
    slot in connection database". The limit was in place because of an
    inherent limitation in certain system calls used in Linux.  The
    system was modified to use different OS system calls and the internal
    limit was raised to 2048, which is the largest user count we
    support in our licensing and in icconfig.

**** Revision 5.49.01 ****

Bug Fixes in 5.49.01
--------------------

1.  When icfixup was invoked with a wildcard template and a file was
    found that required fixup, the remaining files were also fixed
    whether they needed it or not.  This was not harmful, but could
    extend the processing time significantly.


**** Revision 5.49 ****

Bug Fixes in 5.49
-----------------

1.  The fix of the logon semaphore documented under 5.47 missed an
    occurrence of the problem.
2.  ICPERMIT could sometimes give spurious errors for connections that
    did not complete properly (it is a multi-step process).
3.  Fixed a problem in IC_SEND_MAIL where BCC recipients were visible
    in the received email.
4.  The 64-bit sp2.dll was updated to version 5.3.76 to fix a problem
    where playing a .wav file woould cause the runtime to crash.


**** Revision 5.48 ****

Bug Fixes in 5.48
-----------------

1.  Fixes were made to the PDF generator to fix a problem where very
    large output files were corrupt.


**** Revision 5.47 ****

Bug Fixes in 5.47
-----------------

1.  Fixes were made to the icrun terminal assignment code to fix a case
    that could result in a corruption of the logon/logoff semaphore.
    This could occur when the runtime was started with the -N b (no reassign)
    option and there were no more reassignable consoles or a requested
    console was already in use.

    The corrupted semaphore could lead to more than one process being
    assigned to use the shared area data structures that are meant to be
    unique per per process, causing them to over-write each other - often
    leading to process crashes and possibly unexplained file i/o errors.
    This bug has been present at least since ICOBOL 4.00.

**** Revision 5.46 ****

Bug Fixes in 5.46
-----------------

1.  Fixes were made to the buffer manager due to reports of application
    crashes during termination that were a result of corrupted buffer
    cache control structures.
2.  Fixed icpermit, which could become unable to process license requests
    when connection counts reached or exceeded 1020.


**** Revision 5.45 ****

Bug Fixes in 5.45
-----------------

1.  Fixes were made to the icwhohas utility to correct program crashes
    that could occur on very busy systems.


**** Revision 5.44 ****

Changes and New features in 5.44
--------------------------------

1.  The Language Reference & Developer's Guide was updated with changes
    made since 5.40 and to update the Exception Status tables in the
    appendices.

Bug Fixes in 5.44
-----------------

1.  A change was made in 5.42 to log unprintable characters using octal
    notation (\nnn); however, it had the unintended effect of converting
    the carriage control characters delimiting lines of text.  This was
    corrected.
2.  The intrinsic function IC-MSG-TEXT would fail to compile in the case
    where no argument was supplied.
3.  ICRUNRS would sometimes crash with a memory violation while sending
    the network heartbeat.
4.  The SlientInstall feature of the Windows installer was returning the
    error "Silent Install settings that were loaded appear to be corrupt."

**** Revision 5.43 ****

Changes and New features in 5.43
--------------------------------

1.  The intrinsic functions SQL-ADD-ESCAPES and SQL-REMOVE-ESCAPES were
    enhanced to also escape and remove the single-quote character (').
    When building queries. It is sometimes more convenient to imbed a
    single-quoted string as an argument rather than supplying it
    dynamically using the ? placeholder. If the imbedded string itself
    has single-quotes in its content, those quotes must be escaped.

**** Revision 5.42 ****

Changes and New features in 5.42
--------------------------------

1.  Several customers informed us that they regularly used the icdump
    utility, which had been dropped from the Windows install, so it has
    been added back.
2.  The log tracing for the PGM option has been enhanced to trace the
    arguments passed to CALL and CALL PROGRAM (up to 40 characters).

Bug Fixes in 5.42
-----------------

1.  The icrev and icrevup utilities would give an error that the file
    size was too large when querying a file that was greater than 4GB.
2.  When computing the difference between a DATE and a DAY-TIME INTERVAL,
    the runtime was adding instead of subtracting.
3.  The compiler would give an "Unimplemented Feature" error when using the
    SQL-ADD-ESCAPES or SQL-REMOVE-ESCAPES intrinsic functions.


**** Revision 5.41 ****

Changes and New features in 5.41
--------------------------------

1.  The composed name for "anonymous" print jobs was changed to drop
    the occurrences of the '@' character from @PCQ and @CON.  It
    appears this may have caused problems with some printer drivers.
    So, instead of "icrun - logon to @PCQ1 from @CON0" it will now
    be "icrun - logon to PCQ1 from CON0"

Bug Fixes in 5.41
-----------------

1.  A PCQ job with a disposition of Delete (from the configuration)
    or with the extended open option ",d=d" could cause the runtime
    system to crash with a memory segmentation fault.  The bug was
    introduced in 5.40.06.


**** Revision 5.40 ****

Changes and New features in 5.40
--------------------------------

1.  The toolset used to build ICOBOL has been updated.  The Windows
    builds use Visual Studio 2017 instead of 2012.  This results in
    a newer set of Microsoft DLLs for the C runtime and Microsoft
    Foundation Classes. The Linux 6 builds are run on CentOS 6.10
    (Community version of Red Hat Enterprise Linux) using gcc 4.4.7
    for Linux kernels 2.6.32 and up. The Linux 7 build is run on
    CentOS 7.7 (gcc 4.8.5-39) and the Linux 8 build is run on
    CentOS 8 (gcc 8.3.1-4). The builds are run on 64-bit platforms
    with cross compilation for the 32-bit components.
2.  Windows Vista and Windows Server 2008 are no longer supported.
    The minimum support Windows versions are Windows 7 and
    Windows Server 2008 R2. Similarly, we no longer release a
    build for RHEL 5 (ln5x32.xxx and ln5x64.xxx).
3.  The file logging features provided by ICLOG and ICLOGS have
    been removed from the product due to lack of customer interest
    and a negative impact on performance for certain common file
    operations.  If this is a system requirement contact Sales
    to order a special build that still includes the features.
4.  Several open source libraries have been updated to newer
    versions: zlib has been updated from 1.2.3 to 1.2.11 and
    openssl has been updated from 1.0.1g to 1.1.1c.
5.  The names for the openssl libraries have changed
    from icssleay32/64 to iclibssl32/64 and
    from iclibeay32/64 to iclibcrypto32/64.
6.  The compiler and IDE support a new source format called xcard
    (extended card) which is a hybrid of card format and free form
    format.  It has a sequence area and indicator column like card
    format, but effectively has no right margin or comment area
    like free format. The new xcard format will be inferred from
    source files with the extension .xco.
7.  ICIDE has undergone a major rewrite to have its own editor
    and windows controls based directly on MFC 10 rather than
    using 3rd party libraries.  Thus you may see some changes
    in the appearance of the windows and tabs and other controls,
    although the overall structure and function remains the same.
    There are some handy visual enhancements like indent guides
    and modified-line indicators.
8.  A new environoment variable called ICPROMPTCHAR is processed
    by the runtime system. The value is a single character.
    This will change the default padding character in screen input
    fields from underscore to the specified character.
9.  The compiler listing file now contains the options that were
    used to create the listing.  This was added to help ICIDE to
    color code the source code part of the listing.
10. A new option argument was added to ICNETD to specify the audit
    log for the various surrogate processes started by ICNETD. The
    option uses -L and has the same format as the -A option for
    auditing ICNETD itself. It only applies at ICNETD statup.
    When specified it over-rides the -S a:{on|off} option.
11. The default surrogate logging option used by -S {a|t}:{on|off}
    has been changed from ':p' (use PID) to ':t' (timestamp). The
    :p option was problematic in Windows, which reuses PID values
    much more quickly than Linux systems.
12. A new option argument (-T) was added to ICNETD to specify how
    long an ICRUNRS surrogate process will wait for a reconnection
    attempt before terminating itself and releasing its license.
13. Additonal tracing has been added for FILE, IND, and REL.
14. The old AOS compatibility builtins have been removed, along
    with the COPY file "cobsysid.in".  The interfaces of these
    routines were inherently 32-bit and no longer work on 64-bit
    systems and most calls have alternative, supported replacements.
    If you need help with substitutes, please contact Support.
15. The install scripts for RHEL 7 and 8 now install the ICOBOL service
    daemons as native SYSTEMD daemons instead of running them under the
    old /etc/init.d system.  The RHEL 6 install still uses the old system.
    The RHEL 6 build is available in both 32-bit and 64-bit versions,
    whereas the RHEL 7 and 8 builds are only available in 64-bit
    (with certain 32-bit components).
16. We have added three new scripts in for RHEL 7 and 8 that use
    use systemctl to start, stop, and show the status of the ICOBOL
    services.  The scripts are named icstart, icstop, and icstatus.
    The scripts read /etc/opt/icobol/services.conf (created in installic)
    to control which services are managed.
17. The semaphore status functions that were in icinfo on Windows
    and in the tell_sem program on Linux systems have been moved
    into icsmview using icsmview -G s. The semaphore speed test that
    was in the tell_sem program has been abandoned as irrelevant
    given the performance of today's systems (a typical 3+ Ghz system
    is capable of around 1 million semaphore operations a second).
18. The DELETE FILE operation for Indexed and Relative files has
    been revised to perform its open file check differently and
    more efficiently.
19. The termi utility was dropped from the Linux builds. If you really
    need it because you are still using a nonstard terminal through
    terminfo, and you have a support contract, we will build it for you.

5.40.02
20. The system has been modified to reduce the number of calls to
    FlushFileBuffers (Windows) or fsync (Linux) for INDEXED and RELATIVE
    files.  The calls were being made after every operation that modified
    the file.  The change is that these calls are now only made when
    the file is closed by a process (even if the process has it open
    multiple times) UNLESS the global system parameter to enable
    Buffer Write-through is set in the .cfi file.  It is our observation
    that most applications regularly open and close files as they move
    from one sub-program to another;, but, this change does
    slightly increase the risk of files not being up to date on the
    disk in the case of an operating system crash or sudden loss of
    power. (you do use battery backup and make regular backups, don't you?)
21. A change was made in the startup code of icpermit and icnetd to
    try to eliminate the problem where a service restart reports that
    the service port is still in use and one had to wait a couple of
    minutes to try again.

5.40.04
22. Two new tracing options were added to the system: IO and PCQ.  The
    IO option traces i/o operations at the statement level and shows
    each i/o statement that is executed along with file status and
    exception status information.  The individual SEQ, IND, and REL
    options mainly show opens and closes with a summary of the number
    of each type of i/o statement. The PCQ option traces the detailed
    steps for each print operation.  Its purpose is to assist with
    finding why jobs sometimes do not print in Windows.  An example
    of IO tracing would be: icrun -a::IO logon.cx.

5.40.05
23. The GCC compiler tuning option used for the ln7 build was changed to
    match the ln8 build.
24. ICPERMIT (with -i) was changed to log the license serial number and
    number of authorized users.

5.40.06
25. There were minor updates to detailed logging for IND and FILE.

Bug Fixes in 5.40
-----------------

1.  ICSORT sometimes merged records incorrectly when using a TAG sort.
2.  Depending on the authentication methods in use on Linux systems,
    process startup sometimes report a failure of the routine getpwuid.
    A call to an alternate routine was added as a fallback when this
    error occurs.  If both routines fail, an error is reported on both.

(5.40.02)
3.  There were several race conditions on the status bits for
    INDEXED, RELATIVE, and lower level FILE objects where the
    status bits became corrupted. This usually manifested in a File
    Status 30, Exception Status 001 or 149 error on the file and
    only on extremely busy Linux servers with a high CPU core count
    (it was observed on a 900 user, 32 processor system).
    It is possible that it could lead to a file corruption, or a
    corruption of the reliability flag status.  The fixes caused
    a change in the revision level of the global shared area (6 to 7).

(5.40.03)
4.  In Linux, DELETE FILE of an INDEXED or RELATIVE file where the
    file did not exist was returning an error instead of succeeding.

(5.40.04)
5.  The runtime system was not handling the setting of an INDICATOR
    variable when the INDICATOR was a variable set to NULL.  The
    debugger would also display the value incorrectly.
6.  Fixes to iccheck and icfixup.  There were cases where icixup
    did not update values in the file headers and the fixed file
    would fail iccheck consistency checks. Similarly, iccheck sometimes
    missed an inconsistency that should have been reported.

(5.40.06)
7.  The runtime system SORT module and the ICSORT utility could close
    its temp file twice using the same internal id.  If that id had
    been claimed by another process between those two closes, it could
    lead to file inconsistency errors (e.g., mismatched nx/xd = EXC 149)
    in other processes and ultimately could lead to file corruptions.
    This was only observed on a very fast, 32-core system with 700+ users,
    because the window between closes was just a few milliseconds.
8.  (ln7/ln8) The default icnetd.conf was enabling an unsupported option.

End of Release Notes
