Interactive COBOL Readme 5.60                June-2026

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

Introduction
------------

This readme describes the ICOBOL 5 releases.

Unless stated differently:
    Windows will be used to refer to all supported versions of
        Windows 10 64-bit and up (desktop versions) and Windows
        Server 2016 and up.
    Linux will will be used to refer to Red Hat Enterprise Linux
        or its equivalent, such as Rocky Linux, as well as Debian
        and Ubuntu.
    All releases are now 64-bit only! No 32-bit components are
    included.

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.


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.41)
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.


**** Revision 5.36 ****

Changes and New features in 5.36
--------------------------------

1.  ICPERMIT has been enhanced to allow an ICOBOL 5 license to
    authorize ICOBOL 3 as well as ICOBOL 4.
2.  ICREVUP has a new option argument '-N r' that suppresses the
    attempt to convert version 5 files with a two byte key at the
    beginning of the record as RELATIVE files.
3.  ICODBCDR has been enhanced so that the SQLGetInfo call with the
    SQL_DBMS_NAME option will now return ICISAM32 or ICISAM64 instead
    of just ICISAM to indicate which driver is running.

Bug Fixes in 5.36
-----------------

1.  The ODBC driver had a bug where it would return the error:
    "Invalid attribute identifier." for the SQLGetStmtAttr call with
    the SQL_ROWSET_SIZE option.

**** Revision 5.35 ****

Bug Fixes in 5.35[.01][.02]
-----------------

1.  In a situation where icfixup had to recreate the .nx portion of
    a version 8 ICISAM file, it was incorrectly setting the file type
    in the the header to be .xd instead of .nx.

2.  When icrevup encountered errors during the conversion process,
    it was failing to report the error that was encountered so there
    was no indication of an error.

3.  Version 5.09 files that had a single, 2-byte key at the start of the
    were assumed to be RELATIVE files. If they were actually INDEXED
    files, the conversion would fail (silently).  A heuristic has been
    add that if the conversion fails with assumed RELATIVE, it will retry
    as INDEXED.

4.  [.01] When icfixup recreated a rev8 .nx file, it was failing to set
    a field in the file header that would result in an error at runtime
    that the .nx was corrupt. If was also failing to detect this error
    to fix it automatically.

5.  [.01] iccheck was failing to detect the missing field that would
    result in an error at runtime that the .nx was corrupt.

6.  [.02] iccheck was failing to detect inconsistencies with the
    version 8 file unique identifer (UID) and icfixup was failing
    to detect and fix the inconsistency. This would also
    result in an error at runtime that the .nx was corrupt.

**** Revision 5.34 ****

Changes and New features in 5.34
--------------------------------

1.  The network login username, password, and domain have all been
    increased from 15 to 31 characters in length.  This increase
    in length appplies ONLY to network login credentials.  This
    also caused a changed in the format of the information stored
    in the system when the credentials are saved.


**** Revision 5.33 ****

Bug Fixes in 5.33
-----------------

    1.  In the COMPUTE statement, the ON SIZE condition was not
        being processed when it was caused during the evaluation
        of the arithmetic or date/time/interval expression to the
        right of the = sign (e.g., by a divide by zero).
        This bug has been present in the runtime since version 3.40.

**** Revision 5.32 ****

Bug Fixes in 5.32
-----------------

1.  Opening a sequential file with the pdf option could potentially
    overwrite internal file handle information of another file leading
    to a runtime crash or unexplained i/o errors.  The problem is more
    likely to occur in the 64-bit builds, but is also dependent on
    the exact order of operations.  The problem has been present since
    version 5.00.

2.  When selecting certain paper sizes on the PDF tab of a configuration
    file (.cfi) in ICEDCFW, part of the summary size display could be
    truncated. The size of the display area was increased to fix this.


Changes and New features in 5.32
--------------------------------

1.  The enhanced auditing for IND, REL, and SEQ (or when using ALL)
    now logs OPENs that fail.


**** Revision 5.31 ****

Bug Fixes in 5.31
-----------------

1.  The configuration utilities (ICCONFIG and ICEDCFW) were not saving
    the character map table in a .pti file in the proper format, and
    so it would appear to be unchanged when it was reloaded and it
    would not work correctly at run time.


**** Revision 5.30 ****

Bug Fixes in 5.30
-----------------

1.  The base64 encoding routine used by IC_SEND_MAIL for encoding
    attachments would generate an encoded line that exceeded the
    limit of 76 characters when the attachment size MOD 57 was
    equal to 1 or 2.  Some SMTP engines do not handle the long
    line and delivered an attachment with no content.

2.  When SQL SMALLINT and INTEGER data types were used to specify
    column data types, the runtime system was improperly limiting
    the range of values that could be used to set the column value
    to 4 digits and 9 digits respectively.

3.  The filename processing routine could return exception 133
    (The parameter string is not valid for this object) for filename
    strings that were all spaces.  This was observed for blank
    attachment names being passed to IC_SEND_MAIL.

4.  The AUTH CRAM-MD5 method in IC_SEND_MAIL was sending the response
    in an incorrect format and it was calculating the response hash
    incorrectly - resulting in AUTH CRAM-MD5 always failing to
    authenticate.

Changes and New features in 5.30
--------------------------------

1.  Envyr Corporation is no longer an authorized reseller of the
    U/FOS data management suite that was used by the VX/COBOL
    dialect to support the INFOS data manager.  As a result, the
    runtime system no longer includes runtime support for this
    product.  A VX/COBOL program that uses these features will
    receive an exception 230 "The requested feature is not available".
    The VX/COBOL dialect can still be  used with standard INDEXED
    data files.

2.  Since the VX/COBOL dialect can no longer support INFOS data
    management at runtime, all such statements will now generate
    a warning at compile time unless -R 6 or earlier is specified.

3.  Several new exception codes were added to the runtime system to
    enhance the error reporting from IC_SEND_MAIL:
        2133 - The authorization mechanism is too weak
        2134 - The SMTP command failed with a 400 level error
        2135 - The SMTP command had a 300 level status
        2136 - The SMTP command had a 200 level status
        2137 - The SMTP command had an unknown error
    Previously IC_SEND_MAIL returned exception 511 - Unexpected operating
    system error.

4.  IC_SEND_MAIL was changed to always prefer more secure AUTH methods
    over less secure methods, whether or not TLS or SSL is being used.
    The priority is AUTH CRAM-MD5, AUTH LOGIN, and AUTH PLAIN.

5.  The compiler was enhanced to support the SQL BIGINT type.  It is
    equivalent to an 8 byte signed COMP-5. Due to limitations of our
    implementation, the range of values is limited to 16 decimal digits.
    This feature may not work correctly on runtime versions prior to
    5.30.




**** Revision 5.26 ****

Bug Fixes in 5.26
-----------------

1.  The runtime was incorrectly computing the destination size
    when processing a STRING statement with the POINTER clause,
    which could result in overwriting the next item in memory.

Changes and New features in 5.27
--------------------------------

None.


**** Revision 5.25 ****

Bug Fixes in 5.25
-----------------

1.  The compiler was generating bad code for a MOVE of a date-time
    data-item to multiple TO items.

2.  The Language Reference Manual was corrected to add a specification
    of the storage format for (ISQL) USAGE NUMERIC.

3.  The Language Reference Manual had incorrect entries for the
    default values of DATE, TIME, and TIMESTAMP items under the
    specification of the INITIALIZE statement.

4.  A TIME or TIMESTAMP item with fractional digits could be
    displayed incorrectly in the screen section or in the debugger.
    The display could omit the decimal point and/or truncate
    the number of fraction digits.

5.  When specifying a VALUE clause for a date-time item, the compiler
    could give an Internal Error instead of reporting the incompatible
    VALUE clause for a literal that was not of the same date-time type.

6.  In ICIDE, the property sheet for data and screen items was not
    displaying the Usage property for ISQL usages.

7.  The INITIALIZE statement for date, time, timestamp, and interval
    data items being initialized to the default value was not being
    handled by the runtime system and would result in a fatal internal
    error.

8.  The debugger was not properly displaying the value of ISQL NUMERIC
    data items in the TYPE and DUMP commands.  It typically displayed +0
    even when the value was not zero.

9.  The debugger TYPE command was displaying random values for
    unitialized storage for DATE, TIME, TIMESTAMP, and INTERVAL
    data items.

10. The compiler was not correctly enforcing the rules found in
    "TABLE 25. Legality of Types of MOVE Statements" in the Language
    Reference Manual, resulting in some cases where bad code was
    generated or the runtime system did not handle the invalid
    move.  The same was true for the MOVE command in the debugger.
    This table is now enforced.

11. The compiler was not handling several ambiguous cases involving
    the reserved word TO when specifying an INTERVAL literal.
    For example, the following MOVE statement is correct:
        MOVE INTERVAL "2000" YEAR TO WS-YM-INTVL
    but it gave an error at WS-YM-INTVL that the beginning or end of an
    interval range was expected there. The compiler assumed the TO was
    part of a range specification (YEAR TO MONTH) instead of recognizing
    that the it was the TO that precedes the destination operands in the
    MOVE.  The compiler now resolves the ambiguity by looking ahead for
    a valid end of range reserved word and if it does not find one, the
    interval is assumed to have a single field.

Changes and New features in 5.25
--------------------------------

1.  DATE, TIME, TIMESTAMP, and INTERVAL literals are now supported as
    the source operand in the MOVE command in the debugger.

2.  The range of values used by debugger messages in runerr.h has changed.
    For those who may be using custom translations of the messages, the
    translation input will need to be adjusted and system.ms will need
    to be rebuilt.


**** Revision 5.24 ****

Bug Fixes in 5.24
-----------------

1.  The compiler was not correctly handling MOVE of date-time and
    interval data items when there were multiple TO arguments.
    Sometimes this would result in an unexpected error and
    sometimes it was generating bad code.

2.  The Language Reference Manual was corrected with respect to
    the  type resulting rom the difference of two DATE values
    in an expression - the correct type is a date-time interval
    not a year-month interval.

3.  An OPEN where the filename had lengthy extended open options
    could cause a stack corruption in the runtime system.  At
    times this would result in an unexpected Illegal Filename
    error, but it could lead to a runtime system crash. This
    bug first appeared in 5.20.

Changes and New features in 5.24
--------------------------------

1.  Under Windows, ICINFO has been updated to find both 32 and 64
    bit Flexus SP2 .dlls when using -G f.


**** Revision 5.23 (updated) ****

Bug Fixes in 5.23.01 ODBC Driver
--------------------------------

1.  Some older ODBC calls were inadvertently optimized out of the build
    because they were no longer directly referenced.


Bug Fixes in 5.23
------------------

1.  When using client-server i/o where the client was a
    different bit width than the server (32 -> 64 or 64 -> 32),
    sequential file opens would fail and cause the surrogate
    process to terminate. The fix will allow earlier 5.xx
    clients to work correctly with a 5.23 or later server and
    a 5.23 or later client will operate with an earlier 5.xx
    32-bit server only.

    Compatibility Matrix:

    Server ->        IC4     5.00-5.22  5.00-5.22  5.23    5.23
                     32-bit  32-bit     64-bit     32-bit  64-bit
    Client
    IC4 32-bit        Yes    Yes*       Err*       Yes*    Yes*
    5.00-5.22 32-bit  N/S    Yes        Err        Yes     Yes
    5.00-5.22 64-bit  N/S    Err        Yes        Yes     Yes
    5.23-up 32-bit    N/S    Yes        Err        Yes     Yes
    5.23-up 64-bit    N/S    Yes        Err        Yes     Yes

    N/S - not supported
    Err - will get this error that was fixed

    *NOTE: ic4 must set ICNETUSESHEARTBEAT=1 to force IC4 to use
    a protocol revision that is above the IC5 minimum revision.

2.  A number of ODBC 2 compatible calls that worked pre 5.xx
    were returning an error.  Some applications connecting as
    ODBC 3 applications still used the outdated calls and were
    failing.

3.  Fixed a problem where iccreate was not correctly creating
    version 8 indexed files.

Changes and New features in 5.23
--------------------------------

1.  Under Windows, Flexus SP2 has been updated.

    For more see the readsp2.txt.


**** Revision 5.22 ****

Bug Fixes in 5.22
------------------

1.  When using the compiler or compling in ICIDE, the compiler
    could crash if an undefined identifer was referenced in the
    argument list of a function.

2.  When using the debugger, the runtime could crash due to an
    incorrect memory allocation in the debugger.


Changes and New features in 5.22
--------------------------------

1.  Under Windows, Flexus SP2 and QPR have been updated.

    For more see the readsp2.txt.


**** Revision 5.21 ****

Bug Fixes in 5.21
------------------

1.  Under Linux, the icconfig utility was not properly displaying the
    system parameters page of the .cfi file such the the number
    of PDF formats was not displayed and could not be modified.
    This was broken in 5.20.

2.  The IC_SEND_MAIL built-in would return exception 36 "Filename is
    not valid" when an attachment specification had both a blank
    mime type argument and a blank filename argument.  This was
    broken in 5.20.


Changes and New features in 5.21
--------------------------------

1.  A change was made to some compiler error messages to clarify the
    potential causes for the error.


**** Revision 5.20 ****

Bug Fixes in 5.20
------------------

1.  The IC_DECODE_CSV built-in call could return an exception
    137 when the last field in the input record was quoted.

2.  Under Windows, Flexus SP2 has been updated.
    For more see the readsp2.txt.

3.  The IC_SEND_MAIL builtin would sometimes continue processing after
    getting an error response to an authentication request instead of
    returning the error. This would sometimes lead to additional errors
    in the mail session that could be considered by some SMTP servers
    as behavior typical of spam senders. In particular, it could return
    a "mailbox unavailable" error when the underlying actual error was
    the authentication error.

Changes and New features in 5.20
--------------------------------

1.  A change was made to how the debugger processes numeric literals used
    in debugger commands when debugging programs that use DECIMAL POINT IS
    COMMA.

2.  When configuring the system configuration (.cfi) file, the system page
    in icedcfw and icconfig now has a new option labelled "Create ver. 7
    files".  When this option is checked or set to "Y", the runtime system
    will create version 7 INDEXED and RELATIVE files by default instead of
    version 8 files.  This allows for easier interchange of files for
    those who are supporting a mix of ICOBOL 4 (or before) and ICOBOL 5
    systems.

    It is not necessary to update the .cfi file if you want to continue to
    have version 8 be the default.

    This change updates the version number of the .cfi file from 8.3 to 8.4
    when the .cfi is saved or created and so .cfi files edited with version
    5.20 and up cannot be used on systems with versions below 5.20.

3.  The Windows character-mode keyboard processing was enhanced to allow
    special characters to be entered by holding ALT and entering a numeric
    value on the numeric keypad (NumLk on). This affects ICCONFIG and ICRUN.

    Note that an appropriate code page must be loaded in order for the
    characters to be displayed properly by Windows.  Also, the terminal
    definition file (.tdi) in use must define the code as a regular
    character in the keyboard section and have a mapping in the display
    section.

4.  The special named pipe file used by ICEXEC in Linux was moved from /dev
    to /var/opt/icobol, and the name was changed from ics.69637302 to
    icexec.pipe.69637302.

5.  The Windows runtime system (ICRUN, ICRUNW) now accepts the -C option
    (filename case conversion) like the Linux runtime system. The default
    remains the same - converting to lowercase.

6.  A new builtin call, IC_WHOHAS_LOCKS, was added that enables a program to
    determine the records that are locked in the system. The call requires
    both the "Terminal Status" and "System Information" privileges;
    otherwise, it will return exception status 221 - "This operation is not
    permitted." The builtin call takes a single argument, a group with the
    following structure:
    01 WHOHAS-GROUP.
       02 MAX-COUNT PIC 9(4) COMP-5 VALUE 20. *> #table elements (input)
       02 CUR-COUNT PIC 9(4) COMP-5 VALUE 0.  *> actual count (output) 

       02 INFO-TBL OCCURS 20 TIMES.           *> set occurs count as needed
          03 TERM-NUM PIC 9(4) COMP-5.        *> terminal holding the lock
          03 USERNAME PIC X(16).              *> user  holding the lock
          03 PROGNAME PIC X(30).              *> program  holding the lock
          03 FILENAME PIC X(64).              *> file with the locked record
          03 LOCK-POS PIC 9(9) COMP-5.        *> record position of the lock
          03 PID-NUM  PIC 9(9) COMP-5.        *> PID of locking terminal

    The OCCURS count can be set as needed.  Typically there are only a
    handlful of locked records active at any given time, so usually only
    a small number is needed.  The OCCURS count that is set must also be
    specified in the VALUE clause of the MAX-COUNT field.  The builtin
    uses MAX-COUNT to make sure that it does not exceed the storage
    allocated to the table.  If the number of actual locks exceeds the
    MAX-COUNT limit, an exception 220 - "There are no more entries in
    the table" is returned and the CUR-COUNT field is set to the number
    needed.

7.  A new builtin call, IC_SEND_KEY, was added that enables a program to send
    a single key to another terminal. The call requires both the "Terminal
    Status" and "Watch Other Terminals" privileges; otherwise, it will return
    exception status 221 - "This operation is not permitted."  The call takes
    two arguments: the first is the terminal number to which the key is being
    sent and the second is a KEY-STRUC group with values as described under
    the IC_GET_KEY builtin. The effect of this builtin is similar to the
    full sequence of (a) watch the terminal with control, (b) enter the
    keystroke, (c) cancel the watch.

8.  We have added a new "extended open" option that can be added to a filename
    to fine-tune the filename case mode handling.  By default the runtime
    system in Linux and Windows convert filenames to lower case before
    passing them to the operating system.  This behavior can be changed
    globally with a command line option to the runtime system, but sometimes
    that handling needs to be changed for just particular files - e.g., to
    meet the naming requirements of a third part application.  This is now
    possible on a file by file basis with the new option.

    The new "extended open" string is ",c=l" to convert to lowercase,
    ",c=u" to convert to upper case, and ",c=n" to not convert the case.
    This option will over-ride the global option for the filename it
    is added to.  This option must be the first option in the list
    when multiple options are specified.  In general, the option applies
    in OPEN, DELETE FILE, and where filenames are specified in the
    built-in calls and the # and ## system calls in CALL PROGRAM.

    For example, to rename a sequential file named "output-file" to
    mixed case, one could use:
        MOVE "output-file" to OLD-NAME.
        MOVE "OutputFile,c=n" to NEW-NAME.
        CALL "IC_RENAME" USING OLD-NAME NEW-NAME.


**** Revision 5.12 ****

Bug Fixes in 5.12
------------------

1.  Under Windows, Flexus SP2 and QPR have been updated.
    For more see the readsp2.txt.

Changes and New features in 5.12
--------------------------------

1.  Under Windows, ICINFO should be able to detect Windows 8.1 and
    Windows 10 versions.

2.  An environment variable was added to control the connection timeout in
    the IC_SEND_MAIL builtin and the default timeout was changed from
    "wait forever" to 45 seconds.

    Use
        ICSMTPTIMEOUT=nnn

    where nnn is in 10ths of seconds ranging from 1 to 65535, with 65535
    meaning "wait forever".

3.  The connection algorithm in the IC_SEND_MAIL builtin was changed to
    implement a retry algorithm FOR INSECURE SOCKETS ONLY.  The algorithm
    starts with a short timeout and progressively increases each time it
    fails until the total timeout period has elapsed.

4.  A new environment variable was added in Windows that affects how the
    keyboard handler in ICRUN(W) and ICRUNRC interprets the Del key on
    the numeric keypad when NumLock is on (the key labeled with a period
    above the word 'Del' on a US keyboard).

    By setting the environment variable ICVKDECIMAL to a different character,
    the specified character will be returned instead of a period.
    Command Prompt example:
        > SET ICVKDECIMAL=,
        > icrun
    will now return a comma instead of a period in ICOBOL screens.


**** Revision 5.11 ****

Bug Fixes in 5.11
------------------

1.  The runtime system and ICSORT had a bug that could cause the program
    to "core dump" when performing sorts that required multiple merge
    passes.

2.  The compiler was not correctly reporting cases where indivdual data
    records or the combined size of all data exceeded the system limit
    of 16 MB. This would result in an Internal Error in the compiler
    during the data allocation phase.

3.  When ICLOG was used to enable or diable logging, some parts of the file
    headers were not being updated correctly, resulting in corrupted headers.

4.  The ICLOG utility was not correctly decoding the compressed log
    records when applying them, leading to a corrupt data file

5.  When ICLOG was being used to enable or disable logging and certain
    errors occured during the process, the .xl file was being left "open"
    in the shared area, requiring ICEXEC to be restarted.

6.  When ICCHECK was being used to check a file with logging enabled, it
    was incorrectly reporting some inconsistency errors when in fact the
    file was good.

Changes and New features in 5.11
--------------------------------

1.  Under Windows, the Sentinel Driver has been updated to version 7.5.9.


**** Revision 5.10 ****

Bug Fixes in 5.10
-----------------

1.  Under Windows, ICEDCFW in System Configuration, System paramters
    was not always detecting changes.

2.  The runtime system had a bug when fetching the value of 8-byte COMP-5
    data items, resulting in bad data.  (8-byte items have 10-18 decimal
    digits.)

    The bug affects version 4.80-4.87 and 5.00-5.09.

        Example:     PIC S9(15)V99  COMP-5.

Changes and New features in 5.10
--------------------------------

None.


**** Revision 5.09 ****

Bug Fixes in 5.09
-----------------

1.  Under Windows, ICINFO help had a misspelled word, and
    was incorrectly looking for icrun.dll instead of icrun32.dll.

2.  Under Windows, some SP2 and FormPrint fixes.  See readsp2.txt
    for more information.

Changes and New features in 5.09
--------------------------------

1.  Two new builtin calls were added: IC_LEFT and IC_RIGHT.

    The IC_LEFT builtin trims leading and trailing white space from
    the source argument and stores it left-justified in the
    destination argument, while the IC_RIGHT stores it
    right-justified in the destination argument.

    The syntax is:
        CALL "IC_LEFT" USING source, destination
          or
        CALL "IC_RIGHT" USING source, destination

    Where
        source is a PIC X(n) and holds the string to trimmed and moved.
        destination is a PIC X(n) to receive the trimmed and justifed
        string.

    Use of either builtin requires version 5.09 or greater of the
    runtime.

    Any error will result in a non-zero exception status and the ON
    EXCEPTION clause, if present, to be executed.


**** Revision 5.08 ****

Bug Fixes in 5.08
-----------------

1.  The Windows runtime system would sometimes fail to start and return:

      Error: Access to the file or device is denied (oserr=5): Signal Event

Changes and New features in 5.08
--------------------------------

1.  The Windows installer was changed to not install ICEXEC and ICSVCMGR
    when just the ODBC driver is installed.


**** Revision 5.07 ****

Bug Fixes in 5.07
-----------------

1.  ICPERMIT was not correctly returning license options for
    ICOBOL 4 client requests.  This could be adversely effecting
    ICODBC.


Changes and New features in 5.07
--------------------------------

None.


**** Revision 5.06 ****

Bug Fixes in 5.06
-----------------

1.  On 64-bit systems, the runtime was not properly resolving EXTERNAL
    data items with the result that changes to an external item were
    not reflected in all the programs that referenced the item.

2.  The ICPCQDIR environment variable was not being processed correctly
    with the result that print files were being created in the current
    working directory rather than the directory specified by ICPCQDIR.

Changes and New features in 5.06
--------------------------------

None.


**** Revision 5.05 ****

Bug Fixes in 5.05
-----------------

1.  Under Windows, ICPERMIT could not authorize via a parallel
    port device.  Would get Device not found, errnum=0.

2.  ICCREATE was setting the Relative flag on an Indexed create
    resulting in an unusable file.

3.  ISQL with EXECUTE USING could use the wrong data length when
    setting column values.

4.  ICODBCDR could cause a memory fault or crash when setting
    data into columns, e.g., with an INSERT that used parameters.
    This bug was introduced in 4.80 and 5.00.

5.  Under Linux, ICRUNRS was not correctly cleaning up its device
    resources in the shared area, which could eventually lead to
    an inability to start new runtimes.

Changes and New features in 5.05
--------------------------------

None.


**** Revision 5.04 ****

Bug Fixes in 5.04
-----------------

1.  When using an ICOBOL 2 .cx files loading a 3-byte signed COMP
    value was not working.

    PIC S9(5) COMP, PIC S9(6) COMP

2.  Fixes to ICREORG for some conversions from and to rev 5 and 6
    files.

Changes and New features in 5.04
--------------------------------

1.  ICREVUP has been enhanced to support converting ICISAM files
    version 5 and 6 to revision 7 or 8.  (8 is the default).

    When provided an argument with a .xd extension, icrevup will
    first look to see if the file is a rev 5 or 6 file, then rename
    the file with a .bu extension as name.bu.xd/.nx.  Then the
    file will be converted to a rev 7 or 8 file with the original
    name.  Finally the .bu files will be renaned to .xd5/.nx5 or
    .xd6/.nx6.

    Linux hard links will be broken.

    Syntax:

    icrevup [option]...  argument...

         -a[:aflag]        Audit to icrevup.lg
         -A path[:aflag]   Audit to path, or path\icrevup.lg if path is a
                           directory
         -h | -?           Display help text
         -q                Quiet operation
         -r                Always replace existing files (.cfi, .tdi, .pti files)
         -M cffile         Use Master Console information from cf file when
                           processing .td files
         -V 7|8            Target version for Indexed and Relative ISAM files
                           default is version 8)
         arg               Pathname (with extension) to the file to convert.
                           Wildcards are allowed.

   Example:

       icrevup -V 7 *.xd

    would convert all rev5 and rev6 ICISAM files in the current directory
    to rev7 files and leave the old files as name.xd5/nx5 or name.xd6/nx6.


**** Revision 5.03 ****

Bug Fixes in 5.03
-----------------

1.  Minor updates in the Windows installer including handling
    upgrades from ICOBOL 2 and 3 properly.

2.  Under Windows, ICINFO was not printing out disk space
    correctly for >1TB drives.

3.  The sample Logon program was not showing disk space
    correctly for >1TB drives.

4.  The runtime system was not correctly handling the EXTEND
    option for disk files associated with a PCQ.

Changes and New features in 5.03
--------------------------------

1.  The IC_SEND_MAIL builtin has been enhanced to support email
    addresses as "Sample Name <sample@neworg.com>".


**** Revision 5.02 ****

Bug Fixes in 5.02
-----------------

1.  The documentation for ICSDMODE was showing "drawlines" as an
    option instead of "linedraw".

2.  Various fixes in ICCREATE, ICCHECK, and ICFIXUP for creating,
    detecting, and fixing isam files.

Changes and New features in 5.02
--------------------------------

None.


**** Revision 5.01 ****

Bug Fixes in 5.01
-----------------

1.  ICCHECK could erroneously report "Node entry count is too big"
    on the .nx file and mark the file as unreliable.


Changes and New features in 5.01
--------------------------------

None.


**** Revision 5.00 ****

Bug Fixes in 5.00
-----------------

1.  Fixed ICSTAT display information.

2.  Under Windows, ICPERMIT could not always recognize a valid
    USB protection device.

3.  The compiler was crashing when it saw a SET id
    without the UP, DOWN, TO syntax.

4.  ICPERMIT was not always correctly showing connect
    time when the -O v -V t option was used.

5.  When compiling a program with a large set of initial
    values an error "Insufficient Memory: Init Space"
    could have been given.

6.  When displaying the values of EXTERNAL variables in the debugger,
    the value of the wrong item was sometimes displayed.

Changes and New features in 5.00
--------------------------------

1.  The 64-bit Linux installic script checks that it is on
    a 64-bit os.

2.  There is no 64-bit ICSP2 or ICQPRW.  Use the 32-bit
    versions.  Panels can be moved between 32-bit and
    64-bit versions.

3.  The ACCEPT FROM ENVIRONMENT has additional systems codes:

    01 ENV-STRUCTURE.
        02 SYSTEM-CODE PIC 99.
            88 IC-AOSVS             VALUE IS 01.
            88 IC-AOSVSII           VALUE IS 04.
            88 IC-MSDOS             VALUE IS 30.
            88 IC-386UNIX           VALUE IS 31.
            88 IC-DGUX-88K          VALUE IS 34.
            88 IC-AIX-RS            VALUE IS 39.
            88 IC-SUN-SPARC         VALUE IS 40.
            88 IC-HPUX-PA-RISC      VALUE IS 41.
            88 IC-MOTOROLA-88K      VALUE IS 43.
            88 IC-STRATUS-860       VALUE IS 44.
            88 IC-LINUX-INTEL32     VALUE IS 45.  (old IC-LINUX-INTEL)
            88 IC-DGUX-INTEL        VALUE IS 47.
            88 IC-SCO-UNIX-INTEL    VALUE IS 48.
            88 IC-UNIXWARE-INTEL    VALUE IS 49.
            88 IC-MACOSX            VALUE IS 51.
|           88 IC-LINUX-INTEL64     VALUE IS 52.
            88 IC-WINDOWS-9X        VALUE IS 60.
            88 IC-WINDOWS-32        VALUE IS 61.  (old IC-WINDOWS-NT-INTEL)
|           88 IC-WINDOWS-64        VALUE IS 62.
        ...

4.  Logon has been upgraded to support the new ENVIRONMENT codes.

5.  Executables have a Windows (32-bit), Windows (64-bit),
    Linux (32-bit), or Linux (64-bit) headers.

6.  The shared libraries (.so's/.dll's will have a 32 or 64 in them
    except for icodbc.  Under Windows there will still be icodbcsu and
    icodbc32 for both versions.

7.  On Linux, when ICNETD starts a surrogate it will be the same
    flavor (32 or 64-bit) as itself as the default.

    Both ICRUNRC and starting isqls have options to start in either
    flavor.  Please see further down items 21 and 22.

8.  There is no 64-bit Windows ICIDE, the 32-bit version will be
    installed.

9.  Revision 8 ICISAM is implemented for INDEXED and RELATIVE files.

    Revision 8 files are limited to 4 giga-records instead of
    by the byte size of the file.

    Revision 8 files are NOT transportable back to previous ICOBOL
    versions.

    All ISAM utilities support revision 8 files.

    Revision 8 ICISAM is the default for newly created ICISAM files.

    ICREORG can be used to convert older files to revision 8 files
    and vice versa.  (ICREVUP in 5.04 and up also.)

10. Newly created Revision 7 files will be 7.10.

    These are transportable back to ICOBOL 4.

11. Revision 5 and 6 ISAM files are ONLY supported by
    ICREORG (and ICREVUP in 5.04 and up).

12. ICCHECK and ICFIXUP have been overhauled.

13. Updated Linux ICINFO and TELL_SEM to show 32-bit or
    64-bit in the header line.

    Under Windows, ICINFO now has a new option:

        -F exefile

    Shows the binary file type of the executable exefile.

    (Either Windows 32 bit or 64 bit.)

    The option is mutually exclusive with the -G and -N
    options.

14. The Indexed API has been renamed from icuser to icapi and
    is available as an option from Envyr.

    This library is either 32-bit or 64-bit in accordance with
    the bit width of the release that is installed.

15. The Linux install scripts have been overhauled.  The new default
    directory layout attempts to follow current Linux conventions
    for component placement.  The init.d script has also been
    designed to work with the "service" utility that is found in
    many Linux distributions.  The scripts also create additional
    separation between the installed components that change from
    revision to revision and user-modified components (such as the
    configuration file) that should carry forward from revision to
    revision.

16. ICSORT and the internal sort/merge facilities can now handle
    sequential files > 4GB.

    For ICSORT, the -M memory size allows much larger sizes.

17. Sequential disk files can now be larger than 4GB.

18. Enhanced the create PDF capability.

    In the pdf config, when you enable a background form (i.e. you
    enter a value for Background Form) there are a couple of new
    entries that appear.

    UseOnce: Y/N

        Y=use the background form one time
            (i.e., like a cover page - even though it can be
             a multiple page form)

        N=old behavior (MultiPart field appears) (Default)

        When UseOnce is Y, the ReuseLastPage field appears and the
        MultiPart field is hidden or greyed out.

    ReuseLastPage: Y/N

         Y=once the form has been used, reuse the last
             page of the form for all the remaining
             pages.  When used with a 1-page form,
             the effect is the same as UseOnce=N.
         N=once the form is used, print remaining pages
             with no form.

         ReuseLastPage is useful to have a unique first page.

         Example: a 2 page form where the first page has company info
                  at the top then the lines to create a table with
                  columns for printing order entries.  The second
                  page (and any following pages) just has the table
                  outline.

    Note that the print subdirectory under ICROOT is no longer used
    to find .pdf forms files.  Either ICCONFIGDIR or the working
    directory is used.

    All .pdf form examples can now be found in the examples/print
    directory.

19. The ICWEBMSG utility is now part of the standard installation.

    Under Linux, ICWEBMSG does not use the icsys shared object, so it
    can be run on a system without a full ICOBOL installation.

    Under Windows, ICWEBMSG does require icsysNN.dll, iclibeayNN.dll,
    and icssleayNN.dll, where NN is 32 or 64 depending on the system.

20. IC_SEND_MAIL has been enhanced to support SSL connections.

    Set the ICSMTPSSLPORT environment entry to the mail server's
    SSL port to enable this feature.  If the SSL port cannot be opened
    it will try using the standard port as set by ICSMTPPORT.

    Additional errors:

     2127    The secure mail server port was not valid (ICSMTPSSLPORT
               environment variable)
     2128    The STARTTLS command failed because TSL was temporarily
               unavailable
     2129    The smtp/pop3 server connection could not be secured
               with SLL or TLS
     2130    SMTP Authorization doesn't support the available methods

    If you get an error 2129 and you are using the ICSMTPSSLPORT entry
    try removing that entry and using the standard ICSMTPPORT entry
    as the SMTP port may be using STARTTLS to switch into SSL/TLS mode.

21. ICRUNRC has been enhanced to allow for a specifc 32 or 64-bit
    surrogate when connecting to a capable icnetd.

    The -B 32 or -B 64 switch can be used.

22. For an isqls connection use @icnet32 or @icnet64 to access the
    appropriate version of the isql surrogate.

23. Updated Windows and Utilities documentation.

24. Under Windows, using the /r (Record) switch to the Installer
    will start the installer in Record mode.  This works like a
    fresh (new) install and steps thru the install screens.  At the
    end it prompts for a location to save the recorded steps.  The
    defaults are the current users Documents folder.  The default names
    are:  MasterSettings.ini, RuntimeSettings.ini, or
    ThinClientSettings.ini.

    Using the command line /S:<path> will execute the installer
    silently with the provided recorded steps.

    Use of the Start /wait will cause  a command prompt to wait
    for the installer to finish.

25. Implemented password-protected PDFs using extended open options:

        filename  [,x=pdf[,f=<form#>][,p=userpw[|ownerpw]]

    When the password option is specified, resulting pdf file
    is marked as a secure pdf and and encrypted.

    A password must be used to open the .pdf file.

    When only the user password is supplied, it is also used for the
    owner password, so when the pdf is opened, the user will have
    total access.

    When both passwords are supplied, the rights are controlled by
    which password is used.  The owner password has all rights,
    which includes the ability to change the passwords.

    When a password is given Document Security is set in the .PDF
    with Security Method set to Password Security.

        Security Method:                    Password Security

    The user password has the following set of rights:

                Printing:                           Yes
                Changing the Document:              No
                Document Assembly:                  No
                Content Copying:                    Yes
                Content Copying for Accessibility:  Yes
                Page Extraction:                    No
                Commenting:                         Yes
                Filling Form Fields:                Yes
                Signing:                            Yes
                Creation of Template Pages:         No

    The maximum password is 32 bytes and the minimum password is
    5 bytes, otherwise a exception 133 "The parameter string is
    not valid for this object" will be given".

26. Licensing changes for ICOBOL 5 licenses.

    All licenses will be ANYWHERE licenses, licenses can be used
    across environments.  (no cross option)

    All runtimes support pdf/icsql.
    (no pdf option bit, no separate icsql license)

    All client/server conections (ICNET) require a Network
    Server license.
    (no separate iclogs, icsqls, icrunrs licenses)

    icruncgi requires only an icrun license.
    (no icruncgi license)

27. Compiler (ICOBOL) now has a -R 7 option to generate
    ICOBOL 5 .cx files.

    USAGE IS POINTER now is an 8-byte entry when the -R 7
    or greater switch is given.

    Previous USAGE IS POINTER variables will work when
    running in 32-bit mode but will fail when running
    on a 64-bit runtime.

    Revision 7 .cx files require ICOBOL 5.xx to run.

28. The IC_PDF_PRINT builtin has been enhanced with an optional
    third argument that can be used to specify the passwords
    to be used to protect the content of the file.

    See 25 above for more on password-protected pdf.

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


Enhanced Auditing
-----------------

All runtime executables and some others (ICNETD) support the following
Enhanced Audting capabilities.   (Added in 4.41 and updated in subsequent
releases)

1.  Complete Enhanced Auditing syntax.

    Enhanced auditing supports the following options:

    Syntax is:

     -a[:[aflag][:tflag][,tflag]...]        Audit to <program>.lg
     -A path[:[aflag][:tflag][,tflag]...]   Audit to path, or
                                              path/<program>.lg
                                              if path is a directory

    aflag is a|b|d|da|db|p|pa|pb|t|ta|tb|u|ua|ub
        a=append, b=backup, d=datestamp, p=process-id,
        t=timestamp, u=username

    tflag is ALL|ICNETD|IND|MPX|NET|PDF|PGM|REL|SEQ|SP2|SQL|SYSERRS|WEB

    ALL enables all sub-system enhanced tracing options.

    FILE provides statistics and tracing for lower level file
        operations (this is very verbose and mostly only useful
        when requested by Support)
    ICNETD provides enhanced tracing for ICNETD
    IND provides Indexed i/o statistics and open/close tracing
    MPX provides enhanced tracing when using network multiplex i/o
        from the runtime, iclogs, icrunrc, icodbcdr (any program
        that uses the network)
    NET provides for enhanced network tracing for any network
        traffic
    PDF provides enhanced tracing when using the PDF facility from
        the runtime
    PGM provides CALL/EXIT/CANCEL tracing, (including builtins)
    REL provides relative i/o statistics and open/close tracing
    SEQ provides sequential i/o statistics and open/close tracing
    SP2 provides enhanced tracing when using SP2 or QPR from the
        runtime or icrunrc
    SQL provides enhanced tracing when using ISQL from the runtime
    SYSERRS provides enhanced tracing for System errors
    WEB provides enhanced tracing when using any internet type
        facility like email from the runtime

    These trace flags for enhanced auditing should be used when
    requested by support or to track down a real problem as
    the logs can be very verbose.


End of Readic5
