**** Revision 3.52 **** Bug fixes in 3.52 ----------------- 1. Under Windows, in the ICIDE, there was an error "File was not found: Checking Files" for COPY files that could not be found and would not go away. This was typically caused by renaming or deleting a COPY file outside of the ICIDE. To clean this up, do a Rebuild All from the Build menu. The set of COPY sources will be rebuilt, thus removing any unfound files. 2. ICCHECK, when checking files, if the file had been opened read-only and the file was reliable, the file was not being counted as a reliable file. 3. In the compiler, the MOVE statement will now check to disallow moves to/from CHARACTER [VARYING] and the various date-time and interval types. The old behavior would have resulted in an Internal compiler error at code-gen time instead of an Illegal-move error at syntax time. Also in the MOVE statement where the source operand is CHARACTER [VARYING] and it has multiple destination operands, the compiler failed to emit the main opcode in this case and this resulted in a corrupted code file. If a metacode listing was being generated, this could also cause the compiler to crash. A work-around in previous compilers is to split the move up into multiple MOVE statements, each with a single destination operand. 4. In ICCONFIG under Configure System Configurations, Configure Consoles, the device name would always be shown in lower case. The device name should stay just as entered. Changes and New features in 3.52 -------------------------------- 1. Under Windows, Flexus qpr, sp2, and ThinClient (gui) code have been updated. See the readsp2.txt file for more information. 2. Under Windows, ICINFO has been updated to detect AMD processors and provide appropriate processor information. 3. Under UNIX, the startic and installic scripts have been updated to try to detect the appropriate revision number. In addition, the installic script will try to find the executable release directory. 4. The sample program, logon.sr, has been updated to include a test section. Currently this test section will test screen attributes, function keys, and compress mode. 5. In the Printer Control Menu, Compress mode can now be toggled on and off (via F1) to allow reports with long lines to more easily be viewed. (Requires that the terminal support compressed mode.) **** Revision 3.51 **** Bug fixes in 3.51 ----------------- 1. Under Windows, if ICEDCFW was already running, clicking on an associated file (.cfi, .tdi, .pti) would be ignored. Also starting an ICEDCFW with an argument when an ICEDCFW was already running was not passing the file to be opened to the running ICEDCFW. 2. Under UNIX, if ICEXEC has to clean up files that have been left open by a process that dies unexpectedly, then the shared area could be corrupt, such that strange errors would result. (Broke in 3.40). Changes and New features in 3.51 -------------------------------- 1. The two ThinClient clients, ICRUNRC and ICTHINC, have a new switch: [-u] | [-U username] Specifies to prompt for username (-u) or use the specified username instead of the current one. 2. Under Windows, ICEDCFW with Terminal Descriptions will now show the base format under Parameters - General. **** Revision 3.50 **** Bug fixes in 3.50 ----------------- 1. Under Windows, ICINFO would report a LanmanWorkstation setting instead of a LanmanServer setting. (Fixed in 3.48.01) 2. At times, when doing an IC_SEND_MSG builtin with line and col, the positioning of the cursor would noticeably move. (Fixed in 3.48.02) 3. In certain cases, the IC_DECODE_URL and IC_ENCODE_URL builtins could be returning incorrect data. (Broke in 3.44.) (Fixed in 3.48.05) 4. Under AIX, the sample icbltn.so module in the link_kit directory could not be loaded. (Fixed in 3.48.05). 5. Under Windows, the ICIDE could not pass files to an already open ICIDE. (Broke in 3.40) 6. Under UNIX, in the link kit, no sample for creating the shared library file was given. 7. Under Windows, ICEDCFW when working with .tdi files could allow a smaller value for the compressed columns than the normal columns. The file would then be written out but not allowed to be read back in without a manual fix in an editor. 8. Under UNIX, at times unexpected errors could be returned when opening PCQ devices and other opens that would use a UNIX device. 9. In ICCONFIG, under Terminal Description, when trying to change Display Characters the changed values were not being written to the .tdi file. (Broke in 3.30) (ICEDCFW worked correctly.) Changes and New features in 3.50 -------------------------------- 1. The compiler has been updated to support up to 255 operands in an ISQL FETCH statement. This will now allow 255 columns to be fetched. The previous limit was 100. This change causes a revision upgrade to the .cx file. The new code revision is 4, and will be the default. To compile to a previous code revision use the -R switch with the appropriate setting. 2. Under Windows, Flexus qpr and sp2 code has been updated. See the readsp2.txt file for more information. 3. Note on ICISAM information. The ordering of alternate keys that ALLOW DUPLICATES can be slightly different between version 5 and 6 ICISAM files and a version 7 ICISAM file. This order is used for sequential access (READ NEXT and READ PREVIOUS) when using that alternate key path. In ICISAM versions 5 and 6, the order of alternate keys with the same key is the order in which the record itself is positioned in the .XD portion of the file. This is generally the order in which the record was "first" written to the file. In ICISAM version 7, the order of alternate keys with the same key is the order in which the key-itself was written to the file. It has nothing to do with the order in which the record physically resides in the data portion of the file. The order for both version 5/6 and version 7 will be the same for records that have been written to the file for the first time. The order may be different if REWRITE's are done to the record CHANGING the particular alternate key value. Version 7 will position this changed value at the end of the duplicate key path for that alternate. ICREORG's on any ICISAM file has the possibility to CHANGE the order that alternate keys with the same value will be positioned in the alternate key path since the record and the key will have been rewritten in the order specified by the ICREORG. (Default is primary key order which is not necessarily the original order.) Example ------- Record-A (primary=1 alternate=dave) Record-B (primary=3 alternate=mary) Record-C (primary=5 alternate=dave) Record-D (primary=7 alternate=albert) Record-E (primary=9 alternate=mary) ** EXAMPLE 1 ** Write records A, B, C, D, E (to an empty file) Read next on alternate (version 6): records D, A, C, B, E Read next on alternate (version 7): records D, A, C, B, E Rewrite record D changing alternate to mary Read next on alternate (version 6): records A, C, B, D, E Read next on alternate (version 7): records A, C, B, E, D ICREORG the above version 7 file to a new version 7 file using just the defaults will re-order the alternate to the version 6 way. icreorg filea fileb Read next on alternate (version 6): records A, C, B, D, E (using fileb) Read next on alternate (version 7): records A, C, B, D, E (using fileb) ** EXAMPLE 2 ** Write records C, A, B, D, E (to an empty file) Read next on alternate (version 6): records D, C, A, B, E Read next on alternate (version 7): records D, C, A, B, E Rewrite record D changing alternate to mary Read next on alternate (version 6): records C, A, B, D, E Read next on alternate (version 7): records C, A, B, E, D ICREORG the above version 7 file to a new version 7 file using just the defaults will re-order the alternate to the version 6 way. icreorg filea fileb Read next on alternate (version 6): records A, C, B, D, E (using fileb) Read next on alternate (version 7): records A, C, B, D, E (using fileb) In ICOBOL 3, to create a version 5 or 6 file the extended open option of ",v=5" or ",v=6" must be added to the filename at OPEN. 4. Under Windows, ICINFO can now detect if Intel® Extended Memory 64 Technology extensions are available on the cpu. 5. A new builtin has been added, IC_SEND_MAIL allowing a COBOL program to send email directly from within COBOL using a standard SMTP server. The syntax is: CALL "IC_SEND_MAIL" USING to-list, from-addr, cc-list, bcc-list, subject, message [, att-type, attachment] Where the parameters are strings that hold: to-list address [, address]... (comma-separated list) from-addr address cc-list [address [, address]... ] (comma-separated list) bcc-list [address [, address]... ] (comma-separated list) subject subect-line message text-body-of-message (use to split lines) att_type mime type of file attached (optional) attachment filename of file to attach (req'd if att_type specified) All strings are trimmed of trailing blanks and a LOW_VALUE will terminate the string. The number of parameters are checked, at least one valid to-address is required, the from-address can not be blank and should be a valid address. cc-list and bcc-list can be empty, subject cannot be blank, message can be blank and must use to split lines. If att_type is specified, attachment must be specified. Some valid mime-types are text, video, ... attachment must specify a valid file. Notes: For Mime Types see: http://www.iana.org/assignments/media%2Dtypes/index.htm Environment variables: ICSMTPSERVER (no default) required to tell where the SMTP server is located ICSMTPPORT (default is 25) specifies the port for the SMTP server (defaults to 25) Some errors in runerrs have been replaced to support the IC_SEND_MAIL builtin. The replaced messages were used in previous version of ICOBOL under MS-DOS. These messages are: 1301 A mail recipient must be specified (To: field) 1302 A mail sender must be specified (From: field) 1303 A message subject must be specified (Subject: field) 1304 No mail server was specified (ICSMTPSERVER environment variable) 1305 The mail server port was not valid (ICSMTPPORT environment variable) 1306 SMTP System or Help message 1307 The SMTP service is ready 1308 The SMTP service is closing 1309 The SMTP action completed OK 1310 The recipient is nonlocal, message is being forwarded 1311 The recipient was not verified but message was accepted 1312 Start message input and end with . 1313 The SMTP service is not available - closing connection 1314 The command failed because the user's mailbox was unavailable 1315 The command failed because of a server error 1316 The command failed because of insufficient server storage 1318 The SMTP command failed with a 500 level error 1319 The SMTP command failed because mailbox was unavailable A sample ICOBOL source that provides an interface to the new IC_SEND_MAIL builtin is available as sendmail.sr. In the example program, sendmail.sr, the environment variable ICSMTPSERVER is read and can be set. A message can be composed and sent to people with both CC and BC addresses. An attachment can also be added. 6. Under AIX, shared objects are now used to access common code. These shared objects are icrun.so. and icsys.so.. See more under #11 in Changes and New Features in 3.40 below. 7. Under UNIX, when using @PCQ devices, if an error is given then more information can be obtained by running with an audit log. 8. A new utility has been added on certain platforms. The ICOBOL WEB Message utility (ICWEBMSG) facilitates the sending of an HTTP or HTTPS request and receiving the response into a file from a command-line utility. The intention is that ICOBOL programs can use the CALL facility to execute this utility to implement various forms of web communication. The default is to send an XML request file and receive a response. ICWEBMSG acts as a very simple client. ICWEBMSG is currently available for Windows, Linux2, Linux4, and SCO OpenServer. Please see the readwmsg.txt readme for more information. 9. ICIDE non-interactive startup commands. icide /p filename print filename to the default printer icide /pt filename printer print filename to the specified printer Note: These are not new and have always been there and are there for many Windows executables.