Interactive COBOL Release Notes 5.44 Aug-2021 The release notes are organized primarily by revision number, from newest to oldest for the 5.2x 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. ********************************************************** **** 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. **** 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) was 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. **** 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 our build because they were o 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 32-bit N/S Yes Err Yes Yes 5.23 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 he 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 10. *> #table elements (input) 02 CUR-COUNT PIC 9(4) COMP-5 VALUE 0. *> actual count (output) 02 INFO-TBL OCCURS 10 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. End of Release Notes