Interactive COBOL Runtime/Development Readme 3.67 12-Feb-2009 Introduction ------------ This readme file provides additional information for this release of the Interactive COBOL product. Please take the time to read through the file for information that may apply to your installation environment and that will help you have a smooth and successful installation. Readme files may include (depending on components installed): read1st.txt Getting started under Windows (Windows only) readcgi.txt Installation and usage information for cgiCOBOL readdoc.txt Documentation list & last-minute documentation changes readic.txt This readme readinst.txt Installation procedures, tips, and notes readlink.txt Installation and usage information for the link kit readodbc.txt Installation and usage information for the ICODBC driver readsp2.txt SP2 and FormPrint information (Windows only) readuser.txt Installation and usage information for the user library (api) readwmsg.txt Documentation for the Web Message utility (ICWEBMSG) examples/fromicobol2.txt Development differences between ICOBOL 2 and ICOBOL 3. **** Under Windows, the read1st.txt helps explain a very simple install and getting started for the first time user/developer. **** Product updates and documentation can be downloaded through our Web site at http://www.icobol.com or from the ftp site at ftp.icobol.com. To log on to the ftp site use "anonymous" for the username and "your email address" for the password. Sections in this README include: Introduction Revision specific items Bug Fixes Changes and New Features Support Information Revision information General Information under UNIX under Windows Known Problems (if any) Notes and Warnings under UNIX under Windows Helpful Hints under UNIX under Windows Installation Planning under Windows Frequently asked questions under Windows Previous Revision (3.0x) Information <-- UPGRADING FROM 2.x? READ THIS! Revision 3.0x Changes and New Features Revision 3.0x Bug Fixes Support Form (mail or FAX) Definitions: Unless stated differently: Windows will be used to refer to all supported versions of Windows which include all editions of Windows 2000, Windows XP, Windows 2003, Windows Vista. x64 Editions will be used to refer to the 64-bit editions of Windows XP Pro, Windows Server 2003, Windows Vista. NOTE: Windows 9X and Windows NT4 are no longer supported platforms for ICOBOL 3. Windows XP SP2 Note ------------------- After installing Windows XP ServicePack2, if some network function stops working then please note that with the release of ServicePack2 Microsoft's default firewall policy is to block inbound connections. Therefore, after installing Service Pack2, ports 7333 (used to connect with ICNETD for client/server) and 7334 (used to connect with ICPERMIT for licensing) might get blocked and therefore this is the trouble. So, whenever this is the case, open the particular port in the advanced option of the IP firewall. Revision Information -------------------- **** Revision 3.67 **** Bug fixes in 3.67 ----------------- 1. ICQPRW fix. **** Revision 3.66 **** Bug fixes in 3.66 ----------------- Changes and New features in 3.66 -------------------------------- 1. Under Windows, SP2/QPR runtime has been updated. Please see the READSP2.TXT file for more information. **** Revision 3.65 **** Bug fixes in 3.65 ----------------- 1. In the compiler, Screen Section attributes were not being properly inherited for empty items or group entries. ** Please re-compile. ** 2. In the runtime, when using colors in the Screen Section certain refresh operations were repainting incorrectly. (Ctrl-U) 3. ICCONFIG, when using the pcwindow or pcwindowmono base terminal selection, was not dumping the color attribute settings. ** Please re-save .tdi files based on those selections. ** 4. Under Windows, in the Installation. If a ThinClient is being installed, the Remote ThinClient Machine selection screen has been changed. It is now called the ThinClient Setup screen and has two additional fields for client argument(s) and surrogate argument(s). These arguments will be used in the shortcut(s) for the ThinClient(s). No arguments are required. 5. At times when Controlling a terminal, keystrokes were not being echo'ed immediately at the watchee. 6. When using IC_SEND_MAIL and providing 8 arguments, sometimes a username/password string of random characters would still be sent. ** Workaround in previous revisions is to have a username/password argument but make it all blanks. 7. IC_SEND_MAIL was not properly handling a leading dot '.' in the message body. ** Workaround is not to have a leading dot. ** Changes and New features in 3.65 -------------------------------- 1. Updated Language Reference Manual (3.60), Utilities manual (3.60), Unix Installation Manual (3.64), and Windows Installation Manual (3.64). 2. Under Windows, the GUI runtime (icrunw) and icrunrc now have a PrtScrn Edit selection. 3. ICCONFIG has been updated, when using the pcwindow or pcwindowmono base terminal definition, to only allow a single foreground and background color to be set. ICEDCFW will also only dump a single color combination. To use different color combinations, use the pcwindowcolor base terminal definition. **** Revision 3.64 **** Bug fixes in 3.64 ----------------- 1. ICRUNRC/ICRUNRS were not properly handling null characters in DISPLAY statements causing a slow down. Changes and New features in 3.64 -------------------------------- 1. Under Windows, ICINFO has been updated to better detect Vista editions and Server 2008. 2. Under Windows, SP2 runtime has been updated. Please see the READSP2.TXT file for more information. **** Revision 3.63 **** Bug fixes in 3.63 ----------------- 1. When using ICRUNRC or ICTHINC, the -u|-U switches were not working correctly. These have been removed and the -p switch added. See below. Changes and New features in 3.63 -------------------------------- 1. ICRUN, ICRUNRC, and ICTHINC have a new switch to always prompt for a network username/password. The -p switch has been added. When using this switch, the Save option is ignored in the username/password screen. For thin clients, the prompt is done immediately. For thick clients, the prompt is done when a connect to a network resource via ICNETD is made. 2. Under Windows, ICRUNW has a new switch. When communicating with a Windows ICRUNRC, ICRUNRS supports the new switch. The -M mode switch can be used to start the process in a particular window mode. The valid values for mode are the values for the IC_WINDOWS_SHOW_CONSOLE builtin plus 0. 0 does nothing, 1 is Hide, 2 is Maximize, 3 is Minimize, etc. When communicating with a UNIX ICRUNRC the Mode option is ignored. **** Revision 3.62 **** Bug fixes in 3.62 ----------------- 1. When using variable length Indexed files, if the last record in the file was not the maximum size the runtime and the ISAM utilities, ICCHECK, ICFIXUP, ICSTAT, and ICREORG would get confused when trying to open the file. 2. Under Windows, at times an IC_KILL_TERM to a process running SP2 would not take effect. (Fixed for icrunw). 3. Under Windows, the console runtime, icrun.exe was not allowing IC_WINDOWS_SHOW_CONSOLE and IC_WINDOW_TITLE builtins to run when on the master console. (Update 2) Changes and New features in 3.62 -------------------------------- None. **** Revision 3.61 **** Bug fixes in 3.61 ----------------- 1. Update to ICSQL to handle columns whose type was SQL_BIT. These will now be returned correctly as a 1 byte numeric or a VARYING CHAR if more than 1 byte. 2. When using an ICTERM setting that uses ansi color sequences, the Reverse attribute could bleed thru and certain Erase operations were not using the correct color values. Changes and New features in 3.61 -------------------------------- 1. Under Windows, update to FormPrint. See readsp2.txt **** Revision 3.60 **** Bug fixes in 3.60 ----------------- 1. If the runtime terminated due to a user-invoked exit, the shared area for the console table could be left in an undetermined state. 2. In the runtime when detecting a problem with ICCOLUMNS, the error message could have incorrectly listed ICLINES as the culprit. 3. Under Windows, when maximized and blink attributes were on the screen other portions of the screen could be refreshing in a manner that looked like blinking. 4. Under Windows, when maximized the marked area could have gone outside of the screen area. 5. When running in the debugger, certain SP2 calls could have been returning different results. In addition, programs should run slightly faster in the debugger than previously. 6. When using numeric functions, at times the values MOVE'd to a numeric could be incorrect. Please re-compile. 7. Under Windows Vista, ICNETD could crash when attempting to start surrogate processes. 8. Under Windows, when setting a font from the system menu and bold was selected that option was not being handled correctly. 9. Under UNIX, when using IC_DIR_LIST, certain entries could loop or hang the runtime. 10. Under UNIX, at times a Watch of a thinclient (char) was not working. 11. Under UNIX, at times ICNETD surrogates would show as in a ps. (Update 01) 12. Under Windows, ICINFO was not showing Vista Business. It was showing as Vista Professional. (Update 01) 13. Under UNIX, when watching using a thinclient, the screen could get confused. (Update 01) 14. Under Windows, when installing the ThinClient (GUI) an additional file (sp2tvw32.dll) will be installed. (Update 03) Changes and New features in 3.60 -------------------------------- 1. Under UNIX, the IC_WINDOWS_SHOW_CONSOLE and IC_WINDOW_TITLE builtins are now allowed when communicating with a ThinClient client running under Windows. The ThinClient client window or title will be set respectively. In addition, by default, the ICRUNRC title will now be set to the default "%P - %C" just as under the normal runtime. (For example: icrunrs - logon) When these builtins are NOT available in the Thinclient case, an error 231 - "Unsupported feature for the current terminal type" will be given. 2. Under UNIX, the IC_WINDOWS_MSG_BOX builtin is now allowed when communicating with a ThinClient client running under Windows. 3. Under Windows, the Sentinel Driver has been updated to 7.4.0 for 32-bit and 64-bit Windows. 4. Under Windows, ICINFO has been updated for detecting additional Intel and AMD chip attributes. 5. ICSCROPT=full is now the default for all screen handlers. (icrunrc, icrun, icrunw, icrunrs) 6. Under Windows, SP2 runtime has been updated. Please see the READSP2.TXT file for more information. 7. The environment variable ICCOLUMNS can now be set to max:min values for columns to imply starting in compressed (i.e., max) mode. 8. Under UNIX, the startic script has been updated to show setting certain environment variables if thinclients are to be used with ICNETD. These include: ICCODEPATH ICSMTPSERVER ICSMTPPORT ICNETD_MAIL ICRUNDIR 9. ThinClient (icrunrc) output performance has been enhanced. 3.60 ThinClient clients should be used with 3.60 servers. 10. ICCONFIG - Consoles now shows a help for device selection. **** Revision 3.57 **** Bug fixes in 3.57 ----------------- 1. In ICSORT, when using line-sequential files, if the last record in an input file did not have a terminator then it would be ignored. 2. Under Windows, when using PTSMODE=paint with ICRUNW or ICRUNRC prints using printer pass thru (@PTS) could be double-spaced. 3. When using the ThinClient clients, ICRUNRC and ICTHINC, and connecting to yourself with your machine-name, the thinclients where incorrectly detecting it as a localhost connection. Althought very similar, linking to yourself is slightly different than localhost. To use localhost either do NOT specify a remote machine or use the local host name. 4. In the Debugger, when trying to TYPE or DUMP a variable that has multiple subscripts, i.e. ARRAY-DATA (5 5), use only a space to delimit the subscripts. Using a comma will cause a syntax error. Changes and New features in 3.57 -------------------------------- 1. Under Windows, ICRUNW and ICRUNRC have been enhanced to support Copy and Paste. The left mouse bottom can be held down to select text to be copied/printed. As the mouse is moved the selected text will be highlighted. In addition, the Shift-arrow keys can also be used to select text. Clicking the right mouse bottom will give a popup with selections of Copy/Print/Paste/Select all. Copy and Print are only available when data is currently selected. An Edit menu has been added with the same above menu selections as the right mouse bottom off the System Menu. When selected, Copy copies the selected area to the clipboard. When selected, Print prints the currently selected area. When selected, Paste copies the current clipboard data into the input buffer. When selected, Select all, selects the whole screen area. 2. When ICNETD starts a ThinClient surrogate (either ICRUNRS or ICTHINS), it will now pass the client's host name as an environment variable called ICREMOTEHOST. (Basically a "-E ICREMOTEHOST=xxxx" on the command line.) This can then be queried from COBOL by using the IC_GET_ENV builtin after determining that a ThinClient is running by doing an IC_TERM_STAT builtin and looking at the two ThinClient flags. The sample logon program has been updated to show this information in the upper left corner of the main screen, if available. The remote machine name will over ride the remote ip-address. 3. The IC_SEND_MAIL builtin has been enhanced to support SMTP servers that require a validated username/password. An additional parameter has been added that allows for the username/password to be specified in a comma separated list. The new syntax is: CALL "IC_SEND_MAIL" USING to-list, from-addr, cc-list, bcc-list, subject, message [[, att-type, attachment] [, uname-pass]] 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) uname-pass a username-password to pass as authorization to the SMTP server. password should be separated by a comma from username. All strings are trimmed of trailing blanks. A LOW_VALUE will terminate a string. The number of parameters are checked along with at least one valid to-address is required, the from-address can not be blank and should be a valid address, cc-list, bcc-list, att-type, attachment, and uname-pass can be blank, subject cannot be blank, message can use to split lines and can be blank. If an att_type is specified, an attachment must be specified. If no att-type is specified, no attachment can be specified. Some valid mime-types are text, video, ... attachment must specify a valid file. The following additional messages have also been added. Addition messages for SMTP support: SMTP Authorization successful SMTP Authorization in progress SMTP Authorization required (A username/password is required) SMTP Authorization failed To debug use the Audit and Information switches to the Runtime. Then additional log messages are written to the Audit log. icrun -ai 4. The use of the ThinClients, ICRUNRC and ICTHINC, has been enhanced with the ability to set console numbers via the clients host ip-address or machine-name. In the configuration of consoles you can now enter an ip-address, as "n.n.n.n" or a machine-name as the device. Then at runtime startup of the thinclient surrogate, either ICRUNRS or ICTHINS, it will first check to see if a matching console entry with the client's machine-name is available, and next the client's ip-address before continuing with the current lookup. Note: On UNIX, the machine-name is sought in a case-sensitive fashion and Windows machines pass an uppercase machine-name while UNIX machines pass a lowercase machine-name. 5. Under UNIX, the runtime and the character thinclient now support the PTS environment variable. When set, the PTS environment variable will be read whenever a Print-Pass-Thru operation is to be performed. Data will be directed to that particular device or file. This interception is done BEFORE the data is sent to the terminal device. For example: PTS=/dev/lp export PTS will cause any print-pass thru data to be sent to the printer at /dev/lp. 6. ICSP2 and ICQPR have been updated. Please see the READSP2.TXT file for more information. **** Revision 3.56 **** Bug fixes in 3.56 ----------------- 1. When using the IC_SEND_MAIL builtin and having the info switch set, the runtime could core dump. 2. ICREORG, when using line-sequential input files was ignoring the last line if no terminator was provided. Changes and New features in 3.56 -------------------------------- 1. Filenames can now contain the "(" and ")" characters. (required to support x64 Editions correctly) 2. Under Windows, ICINFO has been updated to detect Intel multi-core processors. Use the -G z flag. ICINFO has also been updated to detect the registry setting "EnableOpLockForceClose". When set to 1, this flag seems to cause file corruption of ISAM files. 3. Update to ThinClient (gui) and ICSP2 including an updated SP2 Manual (4.1.127). See readsp2.txt for more information. 4. Under Windows, the Sentinel Driver has been updated to 7.3.2 for 32-bit Windows. For Windows x64 Editions, a 64-bit Sentinel Driver (7.2.2) is provided. 5. Under Windows, the installer will detect Windows x64 Editions and attempt to handle the Microsoft installation redirections. 6. The IC_WINDOWS_SETFONT builtin has been enhanced: No parameters can be specified, allowing the Windows ChooseFont Dialog box to be shown. The user can select font, style, and size from the list shown. 7. Under Windows, ICRUNW and ICRUNRC have an enhanced System menu (i.e., right-clicking while in the Title bar) New selections include: Font, Compress, Select printer, Printer font, and About. - - - - - Font brings up the ChooseFont dialog box to allow the screen font, style, and size to be changed. Compress toggles between compressed and non-compressed mode if available, otherwise it will be grayed out. In compress mode, a check-mark will be displayed. Select printer, provides the ability to select the Windows printer used for printer pass thru (@PTS). Printer font selects the font, style, and size for the printer selected above. It implies paint mode. About shows the current revision of ICRUN or ICRUNRC along with currently selected printer, font, and size. The Close selection will not be displayed if the No close switch (-N x) was specified. With these new printer selections, Select printer and Printer font, it now makes sense to set PTSMODE to paint and leave the remaining variables (PTS, PTSFONT, PTSFONTSIZE) unset. This allows the user to change all the settings. **** Revision 3.55 **** Bug fixes in 3.55 ----------------- 1. The compiler, when generating code for a MOVE with certain reference modification situations, could cause following areas in memory to be trashed. I.E., with two 100 byte strings A and B. MOVE A TO B(98:) would cause the 97 bytes after B to be overwritten with 97 bytes from A. If A's length did not match B's length or if there were multiple receiving entries this would not happen. Please re-compile. 2. When generating ICODBC definition files from the compiler (-M) some entries could be misnamed. 3. When using ICNETD to access line-sequential files with records longer than what is being read, reads could be returned with no data. 4. Under UNIX, in addition to the fix in 3.54.01 if files are deleted from the operating system while COBOL has the file open and the runtime crashes another copy of that inode could be incorrectly inserted into the shared area. 5. The compiler could be giving an internal compiler error: IntErr: Internal Compiler Error: pad_init_xseg when using External. (3.55.02) 6. The compiler could be generating incorrect code for an INITIALIZE statement of numeric-edited. Please re-compile. 7. ICREORG was not properly handling MS-DOS line-sequential files on input. The was not being stripped from the record. (3.55.03) Changes and New features in 3.55 -------------------------------- 1. Under Windows, ICINFO will detect Vista and x64 Editions. 2. Under Windows, Flexus sp2 and qpr code have been updated. See the readsp2.txt file for more information. **** Revision 3.54 **** Bug fixes in 3.54 ----------------- 1. Under Windows, the environment variables PTS, PTSMODE, PTSFONT, and PTSFONTSIZE added in 3.47 were not being properly handled at OPEN time. These environment variables will be read at OPEN of the printer so they can be changed using IC_SET_ENV builtin while running. In addition, PTSFONTSIZE can now specify decipoints by adding 1000 to the decipoint size. For PTSFONTSIZE (only used when in paint mode) --------------- a valid pointsize from 2 to 99 can be specified. a valid decipoint size from 20 to 999 using the values 1020 - 1999. 2. When using a terminal type that uses the ANSI color sequence and running with ICCOLOR set to process, the default colors were not being handled correctly at times in an erase. 3. Under Windows, if an access denied error is received on a file that is already open somewhere else on the same system, then the shared area could be inconsistent. 4. Under Windows, at times on a reinstall or upgrade the services could loose some of their configuration selections. 5. Fix case on an empty ISAM file, some WRITEs are done and then a READ NEXT is performed. Should be an EOF. (Broke in 3.36). 6. Under UNIX, if a print file that is open by a COBOL program is deleted from the operating system and the file is in the pcq subsystem, the runtime may core dump. (Fixed in 3.54.01 icexec). (Work around. Do not delete open files from the command line or via other non-COBOL programs.) 7. Under AIX, when using terminfo terminal types, icconfig and the runtimes could core dump. Workaround is to not use terminfo. Changes and New features in 3.54 -------------------------------- 1. Under Windows, if the installer detects an upgrade problem the message should be more descriptive. 2. Under Windows, the Sentinel driver has been updated from 5.41 to the 7.2.1 version. (Used for parallel or USB licenses.) If needed, newer versions of the driver can be found at: www.safenet-inc.com/support/tech/sentinel.asp The .bat files included in the sentinel sub-directory can be used to select the correct options. About Sentinel Driver --------------------- Verifying the Presence of Sentinel Driver Given below are ways to verify the Sentinel driver's presence on a system: Verifying Sentinel System Driver (USB Port) on Windows 2000/XP/Server 2003 ---------------------------------------------- From the Start menu, point to Settings and click Control Panel. Double-click Administrative Tools. Double-click Computer Management. Select Device Manager. A list of the various devices is shown on the right-side pane. Expand the Universal Serial Bus controllers parent item. If a Sentinel USB key is plugged-in, SafeNet USB SuperPro/UltraPro will be shown. Verifying Sentinel System Driver (Parallel Port) on Windows 2000/XP/Server 2003 ---------------------------------------------------- From the Start menu, point to Settings and click Control Panel. Double-click Administrative Tools. Double-click Computer Management. Click on Device Manager. Click View on the menu bar. Enable the Show hidden devices option. The Non-Plug and Play Drivers item will appear on the right-side pane. Expand the Non-Plug and Play Drivers. A "Sentinel" should be shown. Double-click Sentinel. The Sentinel Properties dialog box appears. Click the Driver tab. Here you can verify the current status of the Sentinel System Driver (parallel port). 3. There is a special SCO release that is available that will work with later versions of U/FOS (>=2.4.2046) for SCO, using UDK's, to run on SCO. (Available upon request.) (UDK support must be enabled under SCO OpenServer by loading the OSRcompat module for that release.) (Licenses will be upgraded as needed. Please contact Sales.) (No >2GB files.) 4. Under Windows, Flexus qpr and sp2 code have been updated. See the readsp2.txt file for more information. 5. Under UNIX, ICPERMIT has a new option. The -u option instructs ICPERMIT to use the os-flavor detected in the license file as the os-flavor to license. For example, this will allow ICPERMIT to be run on a Linux machine using an AIX serial-dongle based license and license AIX machines. **** Revision 3.53 **** Bug fixes in 3.53 ----------------- 1. In the 3.40 Developer's Guide, the size of the new IC_SYS_INFO buffer was wrong. It should be 136 bytes with a filler of two bytes being added at the start of the NEWBUFFERS structure. This has been updated in readdoc.txt 2. When using a terminal type that uses the ANSI color sequence and running with ICCOLOR set to process, the default colors were not being handled correctly at times. 3. At times, a file that was in the printer control utility and then removed, could not be added back in without an ICEXEC restart. Changes and New features in 3.53 -------------------------------- 1. Change #5 from 3.52 did not make it into 3.52. 2. Under Windows, a new default terminal definition (.tdi) is available. pcwindowmono provides a White-on-Black terminal with all the attributes being handled as attributes with no color mapping. Since the master console emulator under icrunw supports all the attributes properly, this tdi file provides a closer match to a real terminal. To have a different color other than White-on-Black --------------------------------------------------- A different color combination can easily be chosen by simply replacing the particular color that you wish to change in the tdi file. For example, if you want green on black just go into the Configure Color/Attribute Map and change the "White" selections to "Green" leaving everything else the same. Save to the same or a separate name like "pcwindowgreen". This .tdi file can be moved back to previous revisions if needed. 3. Another new default terminal definition is available. VT220pc provides a vt220 emulation assuming a standard pc-101 key keyboard. (The original vt220 emulation assumes a vt keyboard). The difference is that the standard function keys f1-f12 are mapped correctly for this keyboard. This selection should also be used when using the MicroSoft telnet client that comes with Windows XP. This selection more closely matches that client. This selection also seems to match later Xterm implementations on Linux machines This .tdi file can be moved back to previous revisions if needed. 4. The default pcwindow, pcwindowmono, vt220, vt220pc, wyse, and ibm terminal descriptions have been updated to support compressed mode by default. This does not mean that compressed mode has to be used but that it is available. It can be totally disabled by changing the terminal description file(s) under Configure Parameters. 5. Under Windows, ICINFO has been updated to show drive information for the current drive. (Added -G d option and matching -N d) Under Windows, ICINFO has been updated to show if Windows x64 Editions are being used. 6. Under Windows, when doing an install from a CDROM or other distributation media other than self-extracting .exe's, (like a CDROM/Flash/Zip) a CDROM install mode is now available if you wish to use the installation media for the files instead of copying the files to your hard drive. NOTE: This selection is NOT available for self-extracting .exe's. 7. Under SCO OpenServer 6, the master console keyboard mapping has been changed. The closest ICTERM setting is now ICTERM=at386 for the F1- F12, Shift-F1 - Shift-F12 keys. The Ctrl and Ctrl-Shift states must be set with the mapkey utility. **** 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. (REMOVED in 3.63 and replaced with the -p option.) 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. The IC_SEND_MAIL builtin allows 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 examples directory. 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. **** Revision 3.48 **** Bug fixes in 3.48 ----------------- 1. Under DG/UX (Intel), the user library (icuser.so) was not allowing applications built with 2.68 to run. 2. Under Windows, when doing a ThinClient (gui) client install, if a remote working directory is specified, (Although this is not recommended), an error could be given that the remote working directory could not be created when trying to install the sp2tc.ini file. The problem is that the administrative user on the current machine does not have the correct privileges to access the given directory on the server machine. This will now be a warning although you may want to try to change the permissions. If needed, the sp2tc.ini file must be created manually. 3. Under UNIX, when using ICNETD to perform client-server io and auditing was enabled, there could be an Exit code 4, exception 504 from the icios surrogate. This is because the icios surrogate was trying to open its audit log in the system root and it probably did not have access to that directory. (Broke in 3.45.) All ICNETD surrogates (icios, icthins, icrunrs) will use the users HOME directory to write log files when requested. 4. In the Screen Section, with a FROM spaces TO PIC 9... the compiler was not properly handling the spaces when displayed and accepted. Spaces should be displayed initially not Zeros. Please re-compile. 5. In the audit file handling, if the Backup flag had been specified and a .lg file did NOT exist to be renamed, an existing .lgb file would still have been deleted. 6. Under Windows, when using the ICOBOL Services Manager with the ICEXEC Service Settings screen. Selecting "Enable Terminal Numbers" with 2048 as the maximum would cause the ICEXEC Service to give an exit code 4 when it tried to start. The maximum value is 2047. 7. (Update 01) Under Windows, the Flexus code did not get updated to 4.1.75. Changes and New features in 3.48 -------------------------------- 1. Under Windows, the Windows runtime (icrunw) and ThinClient (char) client (icrunrc) now support the blink attribute by blinking. At this point all attributes (dim, bright, underline, blink, and reverse) are correctly emulated so setting colors to replace attributes is no longer required. 2. Under UNIX, the startic script has been slighly modified to better handle remote licensing. 3. Under Windows, two new installers are now available. Win348c will only install a ThinClient (char) client. Win348g will only install a ThinClient (gui) client. 4. Under Windows, all the installers have been updated. The background splash screen will now show which installer is currently running. Under Windows, services will be given more descriptive names. 5. In the audit switch handling, the Backup flag (b) can now be specified with the Date, PID, Time, or Username flags. I.E., db, pb, tb, and ub are now valid aflag options. One use of this new flexibility is to consistently use -a:ub for example and then there would be at least two audit logs for each user to review if needed. In all the help's the audit flag option is now: 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 6. Under Windows, the GUI ICOBOL Services Manager has been updated to support the above new auditing options and the Auditing file options have been rearranged with "View" at the top and then "Amplify Tracing" and "Mute Tracing" on the next line. With ICNETD - Auditing two additional Auditing file options have been added. "Boost Surrogate" and "Hush Surrogate". The help has also been updated. 7. Under Windows, Flexus qpr and sp2 code has been updated. See the readsp2.txt file for more information. **** Revision 3.47 **** Bug fixes in 3.47 ----------------- 1. Under UNIX, C-ISAM support was not working. Under Windows, Btrieve support was not working. (Broke in 3.40) (Fixed in 3.46.03) 2. When using the IC_QUEUE_LIST builtin and using both the FILE filter and the DIR filter the list could be wrong. (Workaround is to use the DIR filter before the FILE filter.) 3. In the compiler the statement: INITIALIZE xx REPLACING NUMERIC DATA BY ZERO was generating incorrect code. Please re-compile. 4. Various bug fixes for CHARACTER VARYING in the compiler and the runtime. Please re-compile. 5. Under UNIX, when using the IC_DIR_LIST builtin if an entry that is a symbolic link is found and the resolution was not there the runtime could hang. (Broke in 3.34) 6. Under UNIX, when trying to open the console that the runtime is running on, the runtime could core dump or give an error. (Broke in 3.40) (Fixed in 3.46.04) 7. At times, when running ICCHECK on a version 5 or 6 ICISAM file a message could be incorrectly given that "Simple logging was enabled.". This message can be safely ignored, it is fixed in this revision. (Broke in 3.42) 8. When using the batch update facility of ICCONFIG, the resulting file could be the wrong size or even zero. 9. In the runtime, when reading a sequential file with the RECORD DELIMITER IS SIZE clause, an EOF was being generated on the last read when data was being received. Now the READ will be successful with a File Status 04 and the next READ will generate the EOF. Changes and New features in 3.47 -------------------------------- 1. Under Windows, Flexus qpr and sp2 code has been updated. See the readsp2.txt file for more information. 2. Under Windows, ICRUNRC and ICRUNW, will properly handle the Maximize screen function by going full screen. 4. Under Windows, when using the GUI runtime (ICRUNW) or ICRUNRC, the setting for the Print Pass Thru printer can be set separately. (known as @PTS to COBOL). The following environment variables have been added: PTS, PTSMODE, PTSFONT. and PTSFONTSIZE. PTS default | prompt | prn | PTSMODE char | paint PTSFONT prompt | PTSFONTSIZE For PTS ------- prn is only available for ICRUNW and says to use the setting for PRN0. This is how ICRUNW worked in pre-3.47. default says to use the default Windows printer. prompt says to display the Print Dialog to select a particular printer. If the dialog is Canceled or Closed no printer is reselected. says to use the specified Windows printer. For PTSMODE ----------- char specifies that print data is sent directly to the print driver. This is how ICRUNW and ICRUNRC worked in pre-3.47. paint specifies that ICRUNW or ICRUNRC should actually "paint" the print data onto the printer. In this mode, fonts, and fontsizes can be specified. In addition, this mode will work with GDI-printers. For PTSFONT (only used when in paint mode) ----------- prompt says to provide the ChooseFont dialog to select fonts and sizes. selects the specified font. For PTSFONTSIZE (only used when in paint mode) --------------- a valid pointsize from 2 to 99 can be specified. A setting of PTS=prompt, PTSFONT=prompt, and PTSMODE=paint provides for showing the Windows print dialog, allowing font, color, and size to be specified, and the "painting" of data to the printer. Also note that the Local print option from the Printer Control Utility uses Printer Pass Thru (@PTS) For ICRUNRC these settings must be found on the client side, not the server side. Print Screen also supports this enhancement. 5. In the examples directory, pcqutil.sr has been updated to support the above pts support under Windows. (SP2 program) **** Revision 3.46 **** Bug fixes in 3.46 ----------------- 1. When reading the configuration file (.cfi) for PRN's, the .ini loader was NOT reading the FF on OPEN and CLOSE settings. Would have always been set to off. Effects icconfig, icedcfw, and icexec. 2. Under UNIX, ICNETD was not properly keeping the status for remote connections, would show up as empty in a connection dump (icnetd -O p). 3. In ICCONFIG, Configure Terminal Descriptions, #6 Configure Color/Attribute Map could core dump when selected. 4. When using ThinClient (char) and Controlling another terminal session, sometimes a Ctrl-C would not only interrupt the Control session but also the program on the controlling terminal. 5. When using ThinClient (char), re-mapping the "+" and "-" keys on the numeric keypad was not working. 6. The compiler was not handling an INITIALIZE of a table item that had a subordinate table item. Could get an Index out of range at run-time. Please re-compile. Changes and New features in 3.46 -------------------------------- None. **** Revision 3.45 **** Bug fixes in 3.45 ----------------- 1. Under Windows, at times a Watch or Control of a remote console would timeout. 2. Under Windows, in certain cases, a Server install was not copying all the needed executables to the server machine. 3. At times when running the ThinClient (char) and Watching another terminal, the watch could not be interrupted. Changes and New features in 3.45 -------------------------------- 1. Under Windows, both ThinClients (char and gui) can now be installed as a Client install (Network component). (Provides a much smaller footprint on the client and updating the server will cause the client to use the updated code.) (Requires at least a 3.45 Server install on the server machine.) 2. Under Windows, Flexus sp2 code has been updated. See the readsp2.txt file for more information. **** Revision 3.44 **** Bug fixes in 3.44 ----------------- 1. Relative file logging was not working correctly. 2. ICLOG did not implement the -L option. It has been removed. 3. At times, when using ICNETD connections, the client was not disconnecting from a non-responding icios surrogate. The client will now close the connection and retry to start the connection again if there are NO open files using that connection. 4. In the compiler, 01 screen-names must be unique. Only a Warning was being given not an error. Under Windows, in the ICIDE this could cause a crash. 5. Under UNIX, at times the number of UNIX device entries were not being decremented on closes or ICEXEC cleanups. 6. ICCHECK was not detecting another case of a Rev 7 ICISAM file that has alternate keys that allow duplicates where the keys were confused such that a Duplicate Key error would result when adding keys that should work. ICCHECK will now detect this case and set the NX to be unreliable. 7. In the 3.40 "Installing on Windows" Manual note the following changes: On pages 82 and 110 where it discusses COM10 change "../COM10" to "\\.\COM10". 8. Under UNIX, another attempt at fixing a File Status 30, exception 80 when a slow i/o operation was in progress. 9. In the compiler, when using SYMBOLIC CHARACTERS an error "This value overlaps with previously specified values" could have been incorrectly generated. 10. ICCREATE (since 3.40) has been creating invalid .fa files. The result is that an icfixup -f or an iccreate using the .fa file would generate a error. Please re-create any .fa files created since 3.40. Changes and New features in 3.44 -------------------------------- 1. Under Windows, Flexus qpr (ICQPRW) and sp2 (ICSP2) have been updated. See the readsp2.txt file for more information. 2. Under UNIX, the startic script has been updated to better handle shared library problems and to unset some environment variables when starting ICNETD. (Namely HOME, LOGNAME, SHELL, and MAIL.) It also provides a note for setting ICNETD_MAIL. (see below) 3. When using either ThinClient clients, ICRUNRC or ICTHINC, and connecting to a UNIX machine (thru ICNETD), the basic environment variables normally set by UNIX logon are now set by ICNETD. These are: HOME, LOGNAME, MAIL, and SHELL. The MAIL entry is set only if ICNETD is given the default MAIL path by using the new ICNETD_MAIL environment variable to provide the path to the standard mail directory, to which ICNETD will add the username. So if ICNETD_MAIL is given: /usr/spool/mail/ then when the user "joe" logs on via a ThinClient, then the MAIL environment variable will be set to "/usr/spool/mail/joe". The SHELL entry will only be set if the shell value is provided by the passwd file. 4. Under Windows, ICRUNRC and ICRUNW now have an additional No switch. The -N x switch can be used to disable the ability to hit the X or Close option on the Window. The X will be grey-ed out and Close will not be part of the system menu. The process must be terminated under program control. 5. The runtime (ICRUN, ICRUNW, ICRUNRS, ICTHINS, ICRUNCGI) now supports a new environment variable, ICRUNDIR. After successfully processing the command line and optionally opening the audit log, if ICRUNDIR is available, then the runtime will change the current directory to the directory specified by ICRUNDIR. All subsequent uses of the current directory will use this value. ICRUNDIR may be especially useful when using ThinClients, as the ICRUNDIR entry can be passed via -E from the client to the surrogate to position to the needed directory. If the specified value is NOT a valid directory, an error will be given at startup and the runtime will exit. If the Info switch (-i) is given, a message will be given about processing the ICRUNDIR environment variable. 6. The ICTERM=ansi definition has been enhanced to handle the function key codes for the Microsoft Telnet client that ships with Windows XP and the Windows Services for UNIX 3.50 package. Function keys F1 - F12 in their base state are supported along with the Insert, Home, End, PageUp, and PageDown. This .tdi can be moved back to previous versions of ICOBOL that used .tdi files. Also note that Windows XP ships with a telnetd server that is installed in the default case BUT is disabled. If you wish to allow a telnet connection to your XP machine go to Services and enable the telnet service. To find out more do a System Help on "Telnet". 7. Under Windows, ICINFO has been updated to attempt to detect if it is being running as a telnet session. The information is shown in the System display (-G s) section as: Detected Microsoft Telnet or Detected ATAMAN Telnet or Detected Pragma Telnet or ... 8. Under Windows, detection for the Microsoft Telnet Server has been added. If detected, the runtime will run in "Advanced" mode. If "Stream" mode is required look in the "Helpful Hints under Windows" section of the readme to see how that can be done. **** Revision 3.43 **** Bug fixes in 3.43 ----------------- 1. Under UNIX, console interrupt was not working at times. (Broke in 3.42) 2. Under UNIX, ICINFO was giving the wrong message for the Quit and Intr signals. (reversed) 3. The ICIOS surrogate was reporting the wrong ip address for the client when logging. (Was reporting its own ip address.) 4. When using the debugger, Type of a level 88 was giving incorrect data for the name. 5. When using the debugger, dumping or typing switches could fail. MUST recompile to fix .sy file. 6. Under UNIX, in certain cases a SIGHUP was being ignored. 7. Under UNIX, at times a File Status 30, exception 216 could be received when doing a Send Message. At other times,a hang could result with the Logon semaphore hung by the sender of the message. 8. ICRUNRS surrogates were NOT using consoles with a blank device name if no consoles with "icrunrs" device names were found. (Broke in 3.40) In addition, ICRUNRS surrogates were not allowing messages to be sent to them. (Broke in 3.40) 9. When compiling with COPY REPLACING, certain replacements were not being made if the items did not match because of case. (Broke in 3.40). 10. When compiling with COPY REPLACING and generating a symbol file, the compiler could crash. 11. ICLOG, when showing a listing, was not correctly showing records and/or keys that had non-printable values. Non-printable values (before space and after ~) will be shown as \nnn octal values. A back-slash "\" will be shown as "\\" and the caret "^" will be shown as "\^". For records, only the first 100 characters will be shown in the listing. Changes and New features in 3.43 -------------------------------- None. **** Revision 3.42 **** Bug fixes in 3.42 ----------------- 1. Starting in 3.40, the compiler was not allowing an OPEN INPUT on a file with an ASSIGN TO DISPLAY. (This option is useful for checking for file existence.) 2. Under UNIX, at times ICPERMIT would give a Device Timeout error when querying serial protection devices on fast machines. 3. The IC_GET_DISK_SPACE builtin was not handling a blank first argument. (Broke in 3.40). 4. Under Windows, the ICODBC and the ICAPI products were not prompting for username/password when using ICNETD. (Broke in 3.40). 5. Under UNIX, at times a File Status 30, Exception 80 or 216 could be received when a slow i/o operation was in progress. Changes and New features in 3.42 -------------------------------- 1. Under Windows, when using the GUI runtime (ICRUNW). Fontnames used with ICFONT and with the IC_WINDOWS_SETFONT builtin can now have a " Bold" attached to the fontname. I.E. "Courier New Bold" or "Lucida Console Bold". This will result in the normal font being BOLD and the bold font will be BOLDER if possible. In many cases using a Bold font for the normal case allows for better readability. The IC_WINDOWS_SETFONT builtin will also return a " bold" concated to the fontname when bold has been selected. In addition, if non-fixed fonts are used, the runtime will try to keep the characters aligned within limits. 2. ICCHECK and ICSTAT will now show whether Simple or Transition logging is enabled and for Simple logging will show the generation levels. NOTE: When Logging is enabled for a file, a "File Does Not exist error" can be generated when any of the corresponding .xd, .nx, or .xl files are missing on an OPEN. **** Revision 3.41 **** Bug fixes in 3.41 ----------------- 1. ICWHOHAS was crashing when dumping record locks. 2. ICEXEC could cause the Open/Close semaphore to allow multiple paths thru the code after cleaning up from an unexpected process termination. 3. In the runtime, the data item of ACCEPT FROM DATE YYYYMMDD was being treated an SQL DATE type - thus the result would be wrong with "-" inserted. 4. In the runtime, the computation of the month field for a target of type SQL DATE was incorrect. 5. In the compiler, when the ISQL option is enabled, CURRENT-DATE was not being recognized as a valid FUNCTION name (it is an ISQL reserved word). The same was true of FUNCTION CHAR and FUNCTION INTEGER. 6. Under Windows, the ICIDE was not color coding CHAR and CHARACTER for sort-merge scripts. Changes and New features in 3.41 -------------------------------- 1. ICINFO will handle quit and interrupt better. 2. ICWHOHAS will show valid usernames for non-runtime ICOBOL processes that have files open. When the -C c option is used, and no COBOL program is available, the process type (icios, icodbc32, etc.) will be given. 3. Under Windows, detect GoodTech Systems telnet server. 4. Under Windows, ICINFO has been enhanced to detect SMB Signing information from Workstation and Server parameter lists in the registry. These show up as "EnableSecuritySignature" and "RequireSecuritySignature". A setting of 0 is disabled and a setting of 1 is enabled. If a Warning is shown relating to these settings, especially for "RequireSecuritySignature" AND you are having some "Access denied" problems or "The specified network name is no longer available" connecting over the network or you are receiving some "delayed write failures" over the network then you need to look into the possibility of disabling these settings. For more information on these settings you can go to the MicroSoft site and search for "SMB Signing", "EnableSecuritySignature", or "RequireSecuritySignature". One other note is that having SMB signing enabled, generally has a network performance penalty of from 10 to 15%. 5. The sample logon program, logon.sr/.cx has been enhanced to check an environment variable, LOGON_DIR, at startup. If set, then the program will change the working directory to the one specified assuming it is a valid directory. This is especially useful for ThinClient connections. In addition, the current directory will now be shown on the main screen. 6. Under UNIX, the installic script has been updated to better handle the revision setting. 7. Under Windows, ICINFO will now test for ICOBOL semaphores. (New -G h and -N h switches). **** Revision 3.40 **** Bug fixes in 3.40 ----------------- 1. Under Windows, when installing the License Service and selecting the option that the .lic file will be created later, the installer was incorrectly trying to start the License server. 2. Under Windows, when installing and selecting a Client (network) install, a username/password must be provided to allow access to the server machine when services are configured. The default account of LocalSystem cannot be used as it does not have network access to remote files. 3. Under Windows, when using ICCOLOR=process, the cursor may not be visible at times in a Reverse field on input. 4. When doing a READ NEXT after an OPEN on an empty ICISAM file, a Key Not Found error was being returned instead of an EOF error. (Broke in 3.36). (Fixed in 3.36.01) 5. ICSORT, when merging files, could hang. (Fixed in 3.36.02) 6. READ NEXT, on an alternate with duplicate deleted records, could return the same record when using version 5 or 6 ICISAM. (Broke in 3.36) (Fixed in 3.36.03) 7. When running the debugger from ICRUNRC, no help messages were available. 8. ICCONFIG, under Configure Consoles, was allowing a console number larger than that specifed under System Parameters. 9. When compiling with either the IC or 85 dialect, an ACCEPT screen AT line, col TIMEOUT int was not being allowed. If it was coded without the AT, it would have compiled. 11. Under Windows, at times when using bold, extra pixels could be shown on the master console when erasing/replacing a character. In certain cases, the bold font was slightly skewed up from the baseline versus the normal font. 12. Minor updates to debugger help files. 13. Under UNIX, the icodbc.so driver could core dump. 14. In 3.35/3.36 ICEXEC could cause a hang with the Open/Close semaphore when dealing with the .pq file. Under UNIX, this can be seen with the TELL_SEM program showing the Open/Close semaphore being hung. (Fixed in 3.36.04). 15. The compiler was allowing a FROM and a USING clause in the SCREEN section and generating bad code. At runtime an Invalid operation code would be given. This case should be an error. What is probably meant is to have a FROM and a TO clause which is what the ICOBOL 2 compiler did in this case without producing a warning or error. 16. ICREVUP, ICCONFIG, and ICEDCFW were incorrectly NOT writing out string environment variables if the value itself was empty and the entry was disabled. This could have resulted in multiple string entries with the same value for the default entries. 17. When using ICCREATE to create an indexed file and at the same time create a .fa file, the .fa file would not be valid. When that .fa file was used, various errors would be reported. A work-around in previous versions is to create the .fa file AFTER creating the indexed file. 18. In the runtime, when doing a REWRITE to a varying length binary sequential file, the REWRITE could fail with an Invalid size error. Changes and New features in 3.40 -------------------------------- 1. Integrated SQL (ISQL) support added to the runtime and compiler. ISQL provides a simple way of using popular relational databases directly from within COBOL programs. ISQL provides many embedded SQL features but in an integrated fashion without the added complexity of pre-processors or call-level interface. Most of the SQL data types have been added to the base language set. At runtime, ISQL makes use of standard ODBC calls to access any data manager available to ODBC. ISQL features have impacted numerous areas of the language and allows the COBOL application developer to interact with an SQL database in a nearly seamless fashion. New literal types include: DATE, TIME, TIMESTAMP, and INTERVALS. New data types include: CHARACTER, CHARACTER VARYING, DATE, INDICATOR, INTEGER, INTERVAL, NUMERIC, SMALLINT, TIME, and TIMESTAMP. New statements include: COMMIT, CONNECT, DEALLOCATE, DISCONNECT, EXECUTE, EXECUTE IMMEDIATE, FETCH, GET DIAGNOSTICS, PREPARE, ROLLBACK, and SET CONNECTION. (Forward-only-cursor for FETCH). (These new statements require an additional runtime license called an ICSQL Runtime License). New identifier: SQLSTATE **** If you get an SQLSTATE = "28001" then that is an "Authorization Failure: ICSQL license cannot be found." Enhancements to other statements to support the new literal and data types. To use these new features the compiler requires the -G q switch be used. Under UNIX, the ODBC "glue" logic (Driver Manager) is provided with the unixODBC project. unixODBC is available from www.unixodbc.org and must be installed before using any of the new ISQL statements. UnixODBC is not so much an end user program, but rather an intermediary between a program and one or more databases. It provides the ODBC Driver Manager and Administrator functions. See the readodbc.txt file for more on unixODBC. When using ISQL, especially early on, running with auditing enabled will provided additional messages when errors are encountered between the runtime system and the ODBC Driver Manager. 2. New opcode has been added for Incrementing Unsigned numbers. 3. Because of 1 and 2 above there is a new rev of the code stream. Rev 3 code will be generated by default from the compiler and will require at least a runtime of 3.40 and up to execute. To compile for a previous version, use the Rev switch (-R) set to the needed revision. 4. ICSORT has been updated to support a script file with the following support. Syntax Summary for icsort scripts --------------------------------- The following are used as meta-characters: { } to show a required selection [ ] to show an optional element or selection ... to show a repeated item | to separate alternative selections Intermediate syntactic terms are in lower case. Reserved words are in UPPER CASE. The operators are = <> < <= > >= :=: :<>: The punctuation characters are period and comma. In general, they are optional. script ::= define-section [when-section]... imperative define-section ::= DEFINE {define-stmt}... END-DEFINE define-stmt ::= input-stmt | output-stmt | collating-stmt | * table-stmt | work-stmt input-stmt ::= INPUT [FILE] [identifier] [IS] quoted-string [records-are-clause] [.] output-stmt ::= OUTPUT [FILE] [IS] quoted-string [records-are-clause] [.] collating-stmt ::= COLLATING SEQUENCE identifier FROM quoted-string [.] * table-stmt ::= TABLE identifier FROM quoted-string [.] work-stmt ::= WORK [RECORD] [UP] [TO] integer [CHARACTERS] [.] records-are-clause ::= RECORDS [ARE] { integer [CHARACTERS] | DATA-SENSITIVE [UP] [TO] integer [CHARACTERS] [DELIMITED [BY] string...] | VARIABLE [ASCII | BINARY] [UP] [TO] integer [CHARACTERS] | INDEXED | RELATIVE } when-section ::= WHEN {READ [[OF] identifier] | WRITE} when-section-stmt... END-WHEN when-section-stmt ::= append-stmt | * convert-stmt | delete-area-stmt | delete-stmt | if-stmt | insert-stmt | next-stmt | pad-stmt | reformat-stmt | replace-tabs-stmt | replace-stmt | send-stmt | stop-stmt append-stmt ::= APPEND {[RECORD] COUNT | string} [.] * convert-stmt ::= CONVERT location [[,] location]... USING {identifier | EBCDIC | ASCII | LOWER | UPPER } [.] delete-area-stmt ::= DELETE AREA location [.] delete-stmt ::= DELETE [CHARACTERS] [IN location] [MOVE [REMAINDER] {LEFT | RIGHT} [PAD [WITH] string]] [.] if-stmt ::= IF condition THEN when-section-stmt... [ELSE when-section-stmt...] END-IF insert-stmt ::= INSERT {[RECORD] COUNT | string} BEFORE integer [.] next-stmt ::= NEXT RECORD [.] pad-stmt ::= PAD TO integer [CHARACTERS] [WITH string] [.] reformat-stmt ::= REFORMAT location [[,] location]... [.] replace-tabs-stmt ::= REPLACE TAB [CHARACTERS] [IN location] [WITH string] [AT integer [, integer]... | EVERY integer] [.] replace-stmt ::= REPLACE [FIRST | ANY | ALL] string [IN location] WITH string [.] send-stmt ::= SEND [RECORD] [TO] quoted-string [.] stop-stmt ::= STOP [.] condition ::= and-cond | and-cond OR condition and-cond ::= not-cond | not-cond AND and-cond not-cond ::= rel-cond | NOT rel-cond rel-cond ::= BLANK | cond-lhs rel-op cond-rhs cond-lhs ::= [RECORD] COUNT | [RECORD] LENGTH | string | location cond-rhs ::= string | location | integer rel-op ::= = | <> | < | <= | > | >= | :=: | :<>: location ::= {integer / {integer | LAST}} | {integer : integer} string ::= quoted-string | NUL | LF | FF | CR | ESC | SPACE imperative ::= sort-stmt | merge-stmt | copy-stmt sort-stmt ::= SORT [USE {KEYS [ONLY] | RECORDS}[.]] [{DELETE DUPLICATES | WRITE DUPLICATES [TO] quoted-string} [.]] key-phrase... END-SORT merge-stmt ::= MERGE [{DELETE DUPLICATES | WRITE DUPLICATES [TO] quoted-string} [.]] key-phrase... END-MERGE copy_stmt ::= COPY [.] key-phrase ::= KEY location [[IS] type-clause] [ASCENDING | DESCENDING] [.] type-clause ::= { ALPHANUMERIC [COLLATING SEQUENCE [IS] * {identifier | ASCII | EBCDIC | UPPER | LOWER} ] | NUMERIC [ { USAGE [IS] { BINARY [[WITH] SIGN]] | COMPUTATIONAL-5 [[WITH] SIGN] | PACKED-DECIMAL [[WITH] SIGN] | DISPLAY [SIGN [IS] {LEADING | TRAILING} [SEPARATE]] } } | SIGN [IS] {LEADING | TRAILING} [SEPARATE] ] } Abbreviations: ASC = ASCENDING CHAR = CHARACTER CHARS = CHARACTERS COMP-5 = COMPUTATIONAL-5 DESC = DESCENDING PACKED = PACKED-DECIMAL 5. Under Windows, common code has been placed in a single .dll (icsys.dll) that most of the executables now use. This change makes each .exe file smaller and makes the installation smaller. ICSYS.DLL will be installed in the system32 directory. The ICSYS.DLL is revision checked when loaded to insure that it matches the revision needed. 6. The ICNETD and ICODBC subsystems have been moved to version 3.40 from 2.90 and 1.90 respectively. ************************* IMPORTANT ********************************* What this means in the the License for each of these components must be at the rev 30 level. If you have a license that is at an earler level, please email support with a request to update the license to the 30 level. YOU MUST INCLUDE THE SERIAL NUMBER FOR THE LICENSE YOU WANTED UP-REVED! * ICOBOL Network Server License LIC 02-DEMO-99999999-ICNET-21-A-WIN-00009 Above "21" ^^ should be "30" as below * ICOBOL Network Server License LIC 02-DEMO-99999999-ICNET-30-A-WIN-00009 There is no charge for this up-rev. ********************************************************************* 7. The shared area revision has been incremented. Thus 3.40 executables require the shared area provided by an ICEXEC 3.40 and will not run with a 3.3x shared area and 3.3x executables will not run with a 3.40 shared area. 8. Under UNIX, the startic script has been updated. 9. The ICSMVIEW utility with the -G p -v switches will now display more information for each pid including the process type (icrun, icthins, icrunrs, icios, icreorg, etc.) and username. For runtime processes, the console number and the COBOL program will also be shown. 10. When ICNETD starts a ThinClient surrogate (either ICRUNRS or ICTHINS), it will now pass the client's ip address as an environment variable called ICREMOTEADDRESS. (Basically a "-E ICREMOTEADDRESS=n.n.n.n" on the command line.) This can then be queried from COBOL by using the IC_GET_ENV builtin after determining that a ThinClient is running by doing an IC_TERM_STAT builtin and looking at the two ThinClient flags. The sample logon program has been updated to show this information in the upper left corner of the main screen, if available. 11. Under UNIX, in most environments (not AIX or DG/UX-88K) shared objects are now used to access common code. These shared objects are icrun.so. and icsys.so.. (.sl under HP-UX) When used, these objects rev check themselves for integrity. (AIX support added in 3.50) These shared objects must be made available to the needed executables at program load time. This can be done in one of two ways: METHOD ONE (Recommended for production systems) ---------- Move a copy (or a symbolic link) of the needed shared objects into the default directory used by the system's dynamic linker. This is usually the /usr/lib directory. This can be done automatically by running the installic script available in the examples sub-directory. If this method is used, then the installic script will need to be run each time a new revision of ICOBOL is installed. The installic script is provided in the examples sub-directory. While in the release directory execute: examples/installic METHOD TWO (Recommended for testing and debugging) ---------- Set the system environment variable that is used to find shared objects to include the new ICROOT directory where the shared objects are to be found. In most cases, this is the LD_LIBRARY_PATH environment variable. (SHLIB_PATH under HP-UX) (LIBPATH under AIX) Thus, to add the new ICROOT to the LD_LIBRARY_PATH, you would do: if [ "$LD_LIBRARY_PATH" = "" ]; then LD_LIBRARY_PATH=$ICROOT export LD_LIBRARY_PATH else LD_LIBRARY_PATH=$ICROOT:$LD_LIBRARY_PATH fi This could be done in the script that sets up the PATH and ICROOT for your ICOBOL executables. If this was a separate script before, then just add the above lines. If this was part of the users' startup in .profile, then just add it there. This method should be used when you do not want to change the /usr/lib directory and/or you will be running several versions of ICOBOL for development and/or testing purposes. ERRORS: ------ If you get an error like: error while loading shared libraries: icsys.so.340: cannot open shared object or dynamic linker: icstat: icsys.so.340 is NEEDED but object does not exist. when running an ICOBOL executable, then the system cannot find the indicated shared object. Either METHOD ONE or TWO must be done to allow the file to be found. 12. Under UNIX, installing additional builtins is now much easier as the icbltn module (link_kit directory) is now built as a shared object just as under Windows where it is a .dll. The runtime system will now try to load the shared object, icbltn.so, at system startup and if loaded an information message will be sent to the audit log just as under Windows, and the user-defined code will be accessible to the COBOL program. No re-linking of the runtime(s) will be required. The sample, provided in the link_kit directory, has been updated to work in this fashion. Just move the sample icbltn.so to the needed directory. The installic script from the examples directory can be used to do this by passing the icbltn option. Again if this module is required, then the needed shared object must be available to the runtime at startup thru one of the methods described in the previous item. 13. Debugger support has been added for the new ISQL support. The Info command has been updated to include the SQL option as: Info sqL Displays the current SQLSTATE, message area, and connection information. Some of the Information displayed (not lines starting with ...) SQLState: 00000 SQLText: ...list of active connections... Connection: TESTDSN String: TESTDSN ...list of active statements... Statement: 1 Cols: 0 PREPAREd: Y EXECUTEd: N The Break command has been updated as: Break I-o [sqL] break at an ISQL statement Break Error I-o [sqL] break at an ISQL error 14. In ICCONFIG and ICEDCFW for consoles, new special device names are provided to specifically allow ThinClient connections. "icrunrs" can be used to allow ThinClient (char) connections. "icthins" can be used to allow ThinClient (gui) connections. These will be sought first before looking for the previous console definitions of (blank) and "nul or null" respectively. With these new device names, the console entry can be better tailored for the particular ThinClient environment. 15. Under Windows, the ICRUNRC executable will show the remote machine name in the title after the connection is established. 16. ICSTAT will show if any logging has been enabled on the file. 17. New ISQL data types can be used in the SCREEN Section. 18. Under Windows, Flexus qpr (FormPrint) has been updated. See the readsp2.txt file for more information. 19. A new ISQL statement (GET DIAGNOSTICS) has been added. Format 1: GET DIAGNOSTICS id = {ROW COUNT | NUMBER | COMMAND FUNCTION | DYNAMIC FUNCTION }... [ ON EXCEPTION imperative-statement ] [ NOT ON EXCEPTION imperative-statement ] [ END-GET ] Format 2: GET DIAGNOSTICS EXCEPTION id-lit { id = { SQLSTATE | NATIVE ERROR | MESSAGE TEXT | MESSAGE LENGTH }}... [ ON EXCEPTION imperative-statement ] [ NOT ON EXCEPTION imperative-statement ] [ END-GET ] 20. Added new ISQL statements COMMIT and ROLLBACK to the compiler and runtime. 21. The VXCOBOL dialect will allow CONTINUE, GOBACK, updated SET, reference modification, and intrinsic functions. 22. Special Register LENGTH OF added to the supported COBOL syntax. 23. ICSORT supports converting fields from upper to lower or ASCII to EBCDIC and vice versa. See #4 above on ICSORT. 24. Under Windows, Flexus sp2 has been updated. See the readsp2.txt file for more information. 25. Under Windows, the Flexus Active-X support has been updated. See the readsp2.txt file for more information. Also the card2crt.exe executable has been added to the release to allow converting card format sources to crt format sources. 26. New SP2 and FormPrint manuals (4.1). 27. Reference modification now allowed in the SCREEN SECTION. **** Revision 3.36 **** Bug fixes in 3.36 ----------------- 1. At times, when doing a READ NEXT or READ PREVIOUS on an ICISAM file that had done a Physical Delete, the record returned could have been a record that had been physically deleted. 2. A GO TO DEPENDING ON item, where item was a PIC X could cause an Internal System Error at runtime. 3. Under Windows, when using GUI programs with the help switch: - When used with the audit switches, the help information was not being written to the audit log. - If the screen could not hold all the lines, lines could be lost. The window will now generate a vertical scroll-bar when needed. 4. In ICEDCFW, under CON configuration, the Modem Ctrl and flow control settings could be lost at times. 5. An ACCEPT screen, that had FROM ALL literal, would cause an Internal System Error at runtime. Changes and New features in 3.36 -------------------------------- 1. ICSMVIEW will now show the .pq filename stored in the shared area when listing PCQ job objects (-O j). 2. Under Windows, the runtime will no longer check Windows printers (from PCQ settings) until that device is needed. In addition, the default printer can be a printer that has a larger name than what the configuration file can currently handle. 3. Under Windows, the ThinClient (char) (ICRUNRC) now supports Print Pass Thru by using the default Windows printer at the time the Print Pass Thru On is processed. If no default printer or an error is received, then the data will go to the screen. The Print Screen command is supported in the same fashion. 4. Under Windows, the Sentinel driver has been updated from 5.39.2 to the 5.41 version. 5. The ThinClient (char) components (both ICRUNRC and ICRUNRS) have been updated to support more compression on the downstream leg. This should help performance on slower network connections. 6. Cleanup in ICEDCFW. **** Revision 3.35 **** Bug fixes in 3.35 ----------------- 1. When the configuration file was set to NOT allow Printer Control under System Parameters in some cases the .pq file was still being used. 2. Under UNIX, when starting ICNETD with a Root directory (-R), starting ICIOS processes would fail. (Fixed in 3.34.01) 3. Under Linux, when running on Red Hat 9 the warning message "Incorrectly built binary which accesses errno, h_errno, or _res directly" may be received when starting the runtime. First of all, this is a warning and may be disregarded. Second, if you want to get rid of ths message then you can set the environment variable LD_ASSUME_KERNEL as shown below: LD_ASSUME_KERNEL=2.4.19 This is only a work-around for pre 3.35 versions of the runtime. This is fixed with 3.35 executables. This happens because of a change in the implementation of LinuxThreads with the new glibc that ships with Red Hat 9. 4. The IC_SYS_INFO builtin with the optional parameter was not storing the SER_FILES part of the structure. All zeros would be returned. 5. When using ICTERM=ibm, compressed mode was not working correctly. 6. In ICCONFIG, Configure System Configurations, Configure Consoles and Programs, when trying to set ICBGCOLOR or ICFGCOLOR, the color would get set to black and not change. Changes and New features in 3.35 -------------------------------- 1. The runtime will now map all @LPTn device names to the corresponding @PCQn name, not just 1-9. In the Language Reference and Developer's Guide on page 689, update Table 40. Device Mappings to show: @LPTn @PCQn (where 1 <= n <= 2048) No link file is now necessary for these. 2. A terminal can now Watch a terminal that has more lines and/or columns then the current terminal. Any extra columns are clipped on the right and any extra lines are pegged to the last line (I.E., lines will overwrite the last line). A message will be displayed for 3 seconds when invoking a Watch session in this fashion. The watching screen may appear slightly different than the watched screen due to some wrapping differences. To Control a terminal will still require the Controlling terminal's lines and columns to be greater than or equal to the terminal to be controlled. The message (#126) for too few lines/cols has been changed slightly in the message file. 3. If the runtime detects an SP2-END-SESSION call passed to SP2 it will ignore all future SP2/QPR calls and return an Invalid Operation (exception 1) for those calls. If auditing is enabled, then a message is generated to the audit log giving the actual call value. NOTE: This has been changed from what was specified in 3.23 since a return code of 1 for some SP2/QPR calls is valid. The point is that no call to SP2 or QPR will be allowed after an END-SESSION. 4. The IC_SYS_INFO builtin has been updated to handle the larger buffer structures in 3.30. The rev returned will now be 2. The previous BUFFER section of PIC 9(4) COMP values will be set to zero. A new BUFFER section will be added at the end of the structure and all the sizes will be PIC 9(9) COMP. A 2 byte filler must be added BEFORE the new BUFFER. The new structure will now be 136 bytes long. When passed an old strucuture, the new buffer information will NOT be stored. 5. The compiler has been updated in its reference modification support such that if a literal length argument is given, then it will be range checked against the size of the string and will be used to set the size of the resultant string. 6. When running a terminal with compressed mode ON, if the terminal session terminates cleanly, the terminal will be returned to compress mode off. 7. The Terminal Control Screen will now use the number of lines on the terminal to configure its status screen. 8. ICSMVIEW has been updated to: Allow more verbose support by allowing -V switch with a number which can be greater than 1 (the default value set with -v). Verbose switch is now: -v | -V The -P pid option has been added to search the ICOBOL shared area for the indicated pid and display some condensed info on that pid. Help has been updated with both these new options. 9. Under UNIX, ICINFO has been slightly updated for testing file locking support. **** Revision 3.34 **** Bug fixes in 3.34 ----------------- 1. Terminal status was not showing the "Exclude from being Watched" privilege. 2. The interactive IC_TERM_CTRL builtin was not checking the "Exclude from being Watched" privilege. 3. In certain cases when doing an IC_DIR_LIST builtin (or ##F), the runtime could hang. 4. In the runtime, in certain cases when moving an alphanumeric of more than 60 characters into a numeric, a core dump (segmentation fault) could happen. 5. In the compiler, nonnumeric literals were not allowing the x" " and numeric literals were not allowing the h" " construct. (I.E., lowercase x and h). 6. The ThinClient (char) client, ICRUNRC, was not properly handling ICSCROPT=full. 7. Under UNIX, when using ICTERM=terminfo, if interrupts were disabled thru configuration setting or the -N i switch then interrupts were not really being disabled. 8. Under Windows, when trying to install using one of the self-extracting .exe files, an error may be given of Not enough disk space when really there was more than 60GB of free space. 9. The ICPQUTIL utility would have the .pq file locked when writing screen output. Other processes using the .pq file could hang during this period. 10. When used with the update flag (-u), the ICPQUTIL utility would garbage the .pq file. (Broken in 3.30) 11. In the runtime, in certain cases when dividing a small decimal number (I.E., < 1 ) by 1, the runtime system could crash (core dump). Changes and New features in 3.34 -------------------------------- 1. The IC_WINDOWS_SETFONT builtin has been enhanced: Fontsizes from 1020 to 1999 can now be selected that specify deci-points 20 - 999 for the fontsize. Note that even though deci-points are given not all possible values will change a fontsize due to the hardware display configuration. A Fontsize of 0 is now allowed which will cause the Windows ChooseFont Dialog box to be shown. The user can then select his own font and fontsize from the list shown. 2. Under Windows, the ICRUNW and ICRUNRC executables now try to select appropriate Bold and Underline fonts to match the selected font and allow for the Bold and Underline screen attributes to be more fully implemented. 3. When using an audit log with the runtime: A) If any Error is encountered (like Indexed out of Range, etc.) the message will be written to the audit log along with the pc where the error occurred, the next pc, the exception status register, and the name of the program. B) If an asyncronous event (like a Ctrl-C, Ctrl-Break, a Windows-Close, an Abort or Kill from another console) are encountered, then that message will be written to the audit log along with the pc where the error occurred, the next pc, the exception status register, and the name of the program. The format for the above cases: Error: message OP=nnn1 PC=nnn2 E=nn3 in program-name Where nnn1 is the current pc nnn2 is the next pc that would have been executed nn3 is the current exception status program-name is the current COBOL program. When running in logon-mode, obviously there could be multiple of these type of messages in the audit log as the user would only need to hit newline to continue from these errors. Running with an audit log is always recommended, as it will allow you to look back over events if needed. In general, these runtime audit logs should be small. The Audit option with pid is probably the best type of auditing to use. (icrun -a:p for example) Then you can use the pid number to look up the process in the icpermit and/or icexec logs if needed. 4. ICSMVIEW, when dumping the PID table (-G p), will show if the pid is associated with a COBOL program by showing the type of runtime in use (I.E., icrun, icthins, icrunrs, or icruncgi). If so, then the Program objects table (-O x) can be used to view more about a particular COBOL program. 5. Under Windows, Flexus qpr, sp2, and ThinClient (gui) code has been updated. See the readsp2.txt file for more information. 6. NOTE: Under Windows, the IC_WINDOWS_SHELLEXECUTE builtin is very powerful. ANY association that has been installed on the machine can be accessed via this mechanism. Mail with the mailto association, Adobe Reader with the .pdf file association, a Web browser with the www association, etc. See the IC_WINDOWS_SHELLEXECUTE builtin later in this readme for more info. Or just try it with various settings. 7. The ThinClient (char) surrogate, ICRUNRS, has an additional No switch. The "-N n" switch will cause the socket connection from the surrogate (icrunrs) to the client (icrunrc) to have the TCP Nagle Algorithm NOT be suppressed. In some cases, this may help screen performance over a slower WAN connection. In the default case, the Nagle Algorithm is disabled. This option can be passed to ICRUNRS from ICRUNRC as: icrunrc -M server-mac -- -N n This option should be used with care as it has the tendency to slow down performance on an LAN. If auditing is enabled for the surrogates, an Info message is written to the audit log if info has also be enabled. NOTE: ICSCROPT=full should be enabled for the icrunrc client to provide the best screen buffering options, especially over a slow WAN connection. 8. The ThinClient (char) client, ICRUNRC, has some additional command line options. The help has been updated. These new options are: -E var=value Set the envirnment variable var to value for icrunrc. (Especially useful to pass ICSCROPT=full when started in a shortcut.) -i Enable info messages -N w Disable warning messages Another change is that the trace switch, -t, now requires the audit option. When used with the Tracing switch (-t), the Info switch (-i) causes more trace info to be dumped to the audit log. 9. The ThinClient (char) surrogate, ICRUNRS, now handles full optimization mode better. Network traffic is greatly reduced. 10. A new builtin has been added. The IC_TRIM builtin takes a string and returns the starting position in the string of the first non-blank character and the actual length of the string NOT including trailing spaces. The syntax is: CALL "IC_TRIM" USING string, num-start, num-len Where string is a PIC X(n) that holds the string. num-start is a PIC 9(n) to which is returned the starting position in string for the first non-blank character. num_len is a PIC 9(n) to which is returned the actual length of the string NOT including trailing spaces. NOTE: Num-len and num-start can return 0. Examples: For string " abcd " num-start would return 3 and num-len would return 4. For string " " num-start and num-len would return 0. For string "abc d ", num-start would return 1 and num-len would return 5. 11. Under Windows, the self-extracting installers (doc334.exe, win334.exe, and win334r.exe) have been updated. 12. Under UNIX, some flavors of the ICINFO utility will now show memory information. **** Revision 3.33 **** Bug fixes in 3.33 ----------------- 1. Under Windows, ICINFO was incorrectly returning an exit-code of 1 for a good return. 2. When using ASSIGN TO PRINTER/DISPLAY on the device "@CON", the data was not being directed thru the DG terminal emulator code. 3. When reading a new .cfi file that had ben created with ICREVUP, the error "File's standard header information is bad (ini)" could appear. This was due to the file having the OS set to MS-DOS in the [CreateInfo] section of the .ini file. This has been fixed. A work-around is to edit the .cfi file with an editor and change the OS=MS-DOS to OS=Windows in the [CreateInfo] Section of the file. 4. HotKeys were not being handled correctly in the runtime. A. The Program-type in the ACCEPT FROM ENVIRONMENT structure was not being set to an "H" when in a hotkey. B. A hotkey program when called via its hotkey was not being CANCEL'ed automatically on its exit. 5. Hotkey documentation was dropped from the Language Reference & Developer's Manual. Please see the Readdoc.txt for HotKey documentation. 6. When generating a .xdt file for a file that had a minimum and maximum record size, the compiler was setting the minimum value incorrectly. Changes and New features in 3.33 -------------------------------- 1. Under UNIX, TELL_SEM now supports auditing to an audit file. Usage is: tell_sem [-a|-A file] TELL_SEM will also now show a revision string and an end message string. **** Revision 3.32 **** Bug fixes in 3.32 ----------------- 1. In certain cases the .pq file could be marked as invalid because of an error like "Job is queued, but does not have 'Queued' status". 2. Note the documentation change for the Language Reference & Developer's Guide (rev 3.30) item 2 for the definition of the -G n switch to the compiler on page 644. 3. In certain cases when generating a .cx file, the compiler would not generate a large enough fd entry for a file. This could cause the runtime to crash. This would happen for a variable length file where the maximum record was not specified as part of the FD. Please re-compile. Changes and New features in 3.32 -------------------------------- 1. Under UNIX, the startic script has been updated for Linux use in the rc scripts. 2. Under UNIX, when printing via PCQ's, if the UNIX command to print a file does NOT return a Job-string, the job will be marked as printed immediately. 3. Under UNIX, the ICINFO utility will now show a revision string at startup. The icinfo.c source file is no longer released. **** Revision 3.31 **** Bug fixes in 3.31 ----------------- 1. When trying to Watch a process with compressed columns settings, the screen could be confused at first. Changes and New features in 3.31 -------------------------------- 1. The maximum number of lines that can be compiled in the stand-alone compiler (ICOBOL) has been increased from 40000 to 60000. **** Revision 3.30 **** Bug fixes in 3.30 ----------------- 1. If given an Indexed or Relative input file that did not exist, ICSORT could give an extra error message. 2. When using the debugger, external variables could have been set/used incorrectly. 3. The compiler was not properly handling EVALUATE as an imperative statement. 4. Under Windows, ICEXEC -O c was requiring Administrator privilege. (Check operation). 5. Under Windows, ICNETD would not show the -M :port in its auditing. 6. ICNETD was not properly handling RootDir setting. 7. Under Windows, when using a telnet session in "Advanced" mode under ATAMAN or Pragma Systems, the console could be in-correct. (Workaround in 3.10-3.23, is to unset the REMOTEADDRESS (for Ataman, or PRAGMASYS_MODE environment variable before starting icrun.) 3.30.01/02 8. ICCONFIG and ICEDCFW were not properly building hotkey entries for .tdi files. (and ICREVUP .02). In the .tdi file, hotkeys should have shown as "hotkey-#", I.E., the word "hotkey" followed by a dash "-" and then the hotkey value. Workaround- Any text editor can be used to change current .tdi files that were created incorrectly. 3.30.03 9. When compiling with the VXCOBOL dialect (-D vx) the VXCOBOL Format 1 "ACCEPT id TIME-OUT value" was not generating code with the TIME-OUT parameter. Please re-compile. (Broke in 3.10 and up). Changes and New features in 3.30 -------------------------------- 1. All configuration files (.cf), printer translation files (.pt), and terminal description files (.td), have a new .ini based format. The extensions for these new file types are .cfi, .pti, and .tdi, respectively. The new utility ICREVUP, has been provided to rev-up existing configuration, terminal description, and printer translation files to their new counterpart. ICREVUP Documentation --------------------- The basic syntax for this is: icrevup file.xx Where xx is .cf, .pt, or .td. ICREVUP will open the current file and output a corresponding file using the same PATH specifier as xxi. (I.E., cfi, pti, or tdi). These new files are used in the same places as the old files. The -h option can be used to view all of icrevup's switches. Under Windows, the install program will automatically rev up the specified .cf file when moving from pre-ICOBOL 3.30 to ICOBOL 3.30. NO OTHER FILES WILL BE UP-REVVED AUTOMATICALLY. All other files must be done by hand. One note in particular, the pre-3.30 .cf file had Master Console information that now resides ONLY in the pcwindow.tdi file. This information must be transferred manually. Under UNIX, NO files are rev'ed up automatically. All files must be rev'ed up by hand. The 3.30 ICCONFIG/ICEDCFW will ONLY work with the new .cfi, .pti, and .tdi files. If you wish to support older installations with .cf, .pt, or .td files then an older copy of ICCONFIG/ICEDCFW should be kept around to use for those installations until they are upgraded to 3.30 or greater. ICSHELLX, ICREV, and ICREVW have all been updated to support these files. 2. ICEXEC's shared area revision is different than previous versions of ICEXEC. Only 3.30 and up revision executables can be used with the new ICEXEC. Also this ICEXEC can NOT be moved back to previous versions of ICOBOL. Because of the above, the semaphores and shared area created by ICEXEC have new keys for 3.30. Under UNIX, this will allow running BOTH the new ICEXEC and its executables and an older ICEXEC with its executables at the SAME time. **YOU MUST NOT SHARE FILES BETWEEN THE TWO SYSTEMS!!** Under Windows, you cannot run two ICEXECs as there is only one service entry for ICEXEC. The following executables require the shared area that ICEXEC manages: icios (started by icnetd) icrun (under WinNT and UNIX) icruncgi icrunrs (started by icnetd) icsmview icthins (started by icnetd) icwhohas 3. Configuration file changes: The new configuration file (.cfi) format is .ini based. That is, its a text file with Sections and Settings. These can be changed with an editor but generally ICCONFIG (or ICEDCFW on Windows) should be used. Enhancements include: The maximum number of CONSOLE devices has been increased from 1024 to 2048. The maximum number of PRN, SER, and PCQ devices has been increased from 128 to 2048 each. The maximum size of buffers has been increased from 64MB to 1024MB. The default (and minimum) is now 1MB. NOTE: DO NOT JUST SET THE MAXIMUM NUMBER OF CONSOLES/PRINTERS/ SERIALS/PRINTER QUEUES TO A LARGER NUMBER UNLESS YOU REALLY NEED THEM AS IT WILL TAKE LONGER TO LOAD THE CONFIGURATION FILE WITH BOTH ICCONFIG AND ICEXEC. Changes: ------- The initial screen selection have been changed to: 1. Configure System Configurations (.cfi) 2. Configure Terminal Descriptions (.tdi) 3. Configure Printer Translations (.pti) Selection: _ In the System Configurations menu: 1. Configure System Parameters 2. Configure Environment Strings 3. Configure Consoles and Programs (@CONn) 4. Configure Serial lines (@SERn) 5. Configure Printers (@PRNn) 6. Configure Printer Control Queues (@PCQn) 7. Save Configuration File 8. Retrieve Configuration File 9. Reset Configuration to Defaults 10. Change Target OS Type Retrieved file: ____ Saved file: ____ Target OS Type: ____ In the above screen, item 3 is a combination of Devices-Consoles and Program Environments from the previous ICCONFIG. Items 4, 5, and 6 were under Devices in the previous ICCONFIG. Changes per menu. System Parameters: ----------------- The Buffer Area size has been changed from KB to MB. The new selections: Number of @CON devices Number of @PCQ devices Number of @PRN devices Number of @SER devices Have been added. The maximum value is 2048 for each device type. Also the System String Configuration (for Windows) has also been moved to this screen. This provides a default username/ password for serial lines. Environment Strings: (same) ------------------- Consoles and Programs: (different format-consolidated) --------------------- All the same information as previously found in Console Devices and Program Environments with the addition of the new privilege "Exclude from being Watched" and the ICCOLUMNS can have a min and max value. Serial Lines: (same) ------------ Printers: (same) -------- Printer Control Queues: (same) ---------------------- Terminal Descriptions: --------------------- The base level selections have changed slightly. The Configure Color / Attribute selection was added for the pcwindow type only. In the Keyboard Configuration, a new column (Ext) has been added. This replaces the \z setting in previous terminal description keyboard configuration of allowing "timing-insensitive" keystrokes to be entered. When (Ext) is set to "Y", then the Byte Strings are read in a timing-insensitive manner. In the Parameters Configuration for the pcwindow terminal type, a new section has been added: Windows Console Parameters. This setting replaces the Master Console setting in the configuration file. Valid settings here include: Enable Audio Beep: Cursor type: Font: Fontsize: In addition, the Configure Color Attribute Map has also been moved from the Master Console setting to the Terminal Description menu when pcwindow is the selected terminal type. Printer Translations: (same) -------------------- The Master Console information has been removed from the configuration file and moved to the pcwindow.tdi file. ICCONFIG changes: ICCONFIG 3.30 and up will only read/write .cfi, .pti, and .tdi files. Use ICREVUP to convert previous version files to work with 3.30. Another addition, if you start icconfig with a .cfi file then icconfig will go directly into the System Configuration menu, if you start with a .tdi file it will go directly into the Terminal Description menu, and respectively for a .pti file. 4. Runtime enhancements include support for compressed mode when using terminal types that support a compressed mode setting. Compressed mode support is enabled with the ICCOLUMNS setting. ICCOLUMNS=x[:y] Where x is the normal number of columns on the screen y is the optional compressed number of columns on the screen. (y must be >= x) If x is not specified, the default is 80. If y is not specified, it defaults to the value of x and compress support is disabled. Compressed mode can be enabled by using the DG compress on (\036FK) and compress off (\036FJ) codes or by using the new IC_COMPRESS_ON and IC_COMPRESS_OFF builtins. The entire screen is either in compress mode or NOT in commpress mode. ICCOLUMNS can be set this way as an environment variable, as part of the CONSOLE setting in the configuration file, or as part of the terminal description file (.tdi). The builtin syntax is: CALL "IC_COMPRESS_ON" or CALL "IC_COMPRESS_OFF" to enable or disable compress mode respectively. Errors include "Invalid operation" if compressed mode support is not enabled and "Parameter mismatch" if any parameters are passed. When compressed mode is switched from one mode to the other the screen is completely erased. All information must be re-displayed by the program. The screen buffer is also erased. In addition, the ACCEPT FROM ENVIRONMENT structure has been enhanced with the addition of: * Below added in ICOBOL Rev 3.30: rev 5 * Supports compress mode off/ON 02 SCREEN-COLUMNS-MIN PIC 9(3). 02 SCREEN-COLUMNS-MAX PIC 9(3). The REVISION-CODE entry will be set to 5 with 3.30 and up. When SCREEN-COLUMNS-MAX is greater than SCREEN-COLUMNS-MIN then compressed mode support is enabled. In addition the SCREEN-COLUMNS entry will always have the current number of columns being shown on the screen. The LOGON sample program has been enhanced to show the new ENVIRONMENT structure and to allow compressed mode to be used when listing files. In addition, the terminal description files have been enhanced to allow the ICCOLUMNS setting to have a min and max values in the Parameter Configuration section of the Terminal Description files. The settings are shown as "Normal Columns" and "Compress Columns" under the Screen Size heading. Under Windows, pcwindow terminal session can support compress mode if the Columns settings allow it. Under UNIX, the terminfo terminal session does NOT support compress mode. The following default terminal types do NOT support compress mode: Freedom, Sun, and File. 5. A new privilege option is now available in the configuration file and supported by the runtime. The new privilege is "Exclude from being Watched". The default setting is No. When set to Yes, then no console can Watch or Control this particular console. The ACCEPT FROM ENVIRONMENT structure will now have an X to show this privilege set to Yes. The IC_CHANGE_PRIV and IC_TERM_STAT builtins will also now support this privilige. 6. The .pq file has changed. ICEXEC will automatically rev-up the file on the first open. The old .pq file will be saved as icexec..1.pq. A warning message will be given. 3.30 .pq files CANNOT be shared with previous revisions of ICOBOL. 7. A ThinClient character (here after called ThinClient (char)) ability has been added. On the client machine, the ICRUNRC command will invoke the character version of the thinclient. All screen input and output will be performed by this thinclient. On the server machine, an ICRUNRS surrogate will be started by ICNETD to run COBOL programs for that particular ThinClient character session. The ICRUNRC command takes a "-M machine" option that tells the client which machine to send the request to. ICRUNRC uses all the normal screen environment variables to set up its screen capabilities for the client. These include ICTERM, ICSCROPT, ICLINES, ICCOLUMNS, etc. . NOTE: ICSCROPT=full should be set to the icrunrc client to provide the best screen buffering options, especially over a slow WAN connection. You can think of the ICRUNRC/ICRUNRS combination as a type of telnet session. The TCP/IP connection between the ThinClient (char) client (icrunrc) and the ThinClient (char) surrogate (icrunrs) is encrypted. ICRUNRS surrogates do require a NEW license, called the Remote Runtime Client license (ICRUNRC) in addition to an standard Runtime license. The ICRUNRS surrogate will run under control of ICNETD under both UNIX and Windows. When using ThinClient (char), the environment for ICNETD is very important as it is what is passed to the ICRUNRS startup. Especially important is ICCODEPATH, etc. Under Windows, the ICRUNRC client install is a separate install question with both the runtime and full installers. When ICRUNRS starts, it requires a console that has been enabled and has the device name of , (I.E., an unassigned console), set to run programs. To use ICRUNRC you must communicate with an ICNETD from 3.30 or higher. The ThinClient (char) client, (ICRUNRC), DOES NOT use ICEXEC or require a license on the client itself. On UNIX, a very small install can be done such that only the executable ICRUNRC, the messages directory with system.ms, and the term directory with any needed terminal description files are all that are required. An ICCONFIG can be used to change/update the terminal description files. Under Windows, when using ICTERM=pcwindow, Print Screen and Print Pass Thru use the default Windows printer. (Added in 3.36) When using ICRUNRC under Windows, the IC_WINDOWS_SETFONT builtin can be used even when connected to a UNIX server to change the client font and font size. Under Windows, the user to be logged on must have the "Log on locally" privilege. 8. The ACCEPT FROM ENVIRONMENT has been enhanced in addition with the: 02 SYS-NODENAME PIC X(16). at the end of the structure. SYS-NODENAME is the computer name. The LOGON and SP2LOGON example programs have been updated to show the nodename. This new field is part of the rev 5 structure. 9. The IC_TERM_STAT builtin has been enhanced. The filler field after the PGM-PC now holds two flag bytes. 03 SP2-SRV-FLAG PIC X. 03 CHAR-SRV-FLAG PIC X. If the process is using ICTHINS then the first flag will be set to "Y", if the process is using ICRUNRS then the second flag will be set to "Y". 10. The Gui version of the printer control utility (PCQUTIL) has been enhanced to handle upto 2048 PCQs. 11. The LOGON and SP2LOGON example programs have been updated to allow print files to be added to any queue, not just 0 and 1. 12. When connecting to ICNETD and a username/password is prompted for, UNIX clients now have the option to save the username/password. A file with the name .icnet. is written to the users home directory (as given by the HOME environment variable) if the Save option is selected on the username/password prompt screen. 13. Under Windows, when using COM ports as terminals and when connecting with ICNETD after the initial user logon with their username/password the surrogate process will now load the user profile. This should allow the user's environment to be available including the default printer, user mapped drives, user environment variables, etc. . 14. The ICINFO utility now has a simple audit capability as "icinfo -a" or "icinfo -A file". 15. In the compiler and ICIDE-Compile. End-of-line comments have been added as "*>". Anything entered after those two characters will be treated as a comment. The GOBACK statement has been added for compatibility with other COBOL's. 16. Under Windows, the ICINFO utility can now detect Windows Server 2003 operating system. (os version 5.2) 17. The runtime has a new option: -E var=value This will set the environment variable var with the value specified. This is especially useful with the ThinClients. **** Revision 3.23 **** Bug fixes in 3.23 ----------------- 1. The configuration file was not being used to set whether Console Interrupts were allowed or not. The runtime -N i option is only used to disable interrupts. 2. Under UNIX, ICEXEC could crash while cleaning up pcq entries. (Log file would have a "Cleaning id ... with a Class=0xFF"). (NOTE: This version of ICEXEC can be moved back to 2.68 releases of ICOBOL if needed.) 3. Under UNIXWARE, the print status for Held jobs was not working correctly. 4. In the runtime, when using ANSI-74 code, an INSPECT TALLYING was not resetting the tally-counter to zero if the TALLYING generated zero tallys. 5. For certain cases of using reserved words for user-defined words the compiler (ICOBOL) or ICIDE-Compile could crash. Changes and New features in 3.23 -------------------------------- 1. If the runtime detects an SP2-END-SESSION call passed to SP2, it will ignore all future SP2/QPR calls and set the return-code to 1. In addition, no SP2-END-SESSION will be generated at runtime termination. In general, ICOBOL SP2 programs should NOT do an END-SESSION call and allow the ICOBOL runtime to generate one when it terminates. NOTE: In 3.35 the CALL will now fail with an Invalid Operation (exception 1) and the return code will not be changed. A message will also go to the audit log if an audit log is present. 2. Under UNIX, ICEXEC will no longer poll printer queues to see if they are available. This will be done when needed by each runtime. 3. The handling of the printer control file (.pq) has been updated for increased performance. 4. Under Windows, removed support for LockFileEx because of network problems. **** Revision 3.22 **** Bug fixes in 3.22 ----------------- 1. Mistakenly allowing 16 character usernames. This could cause processes to core dump. 2. The statement "DISPLAY id AT LINE x" caused the compiler to core dump. 3. Several semaphore fixes. 4. The IC_RESOLVE_FILE builtin was not returning the resolved filename. 5. ThinClient (gui) was not allowing logon mode. 6. Under Windows, at times the filename "\\ip-address\share\file" was giving an error. 7. Under ThinClient (gui), a "STOP literal" could cause the program to hang. A "STOP literal" will now be treated as if an ESC had been entered. 8. ICFIXUP was not correctly handling bad files in which it had to remove key entries that had previously been inserted. This could have caused the file to still be corrupt after an ICFIXUP. Changes and New features in 3.22 -------------------------------- 1. ICCHECK will now show the record number for any Purged record problems. 2. The IC_SYS_INFO builtin has been enhanced to accept an optional argument. When provided, the argument is filled in with the sys_info data and nothing is shown on the screen. The argument must be at least at large as the following: 01 SYS-INFO-STRUCTURE. 02 REV PIC 9(4) COMP. 02 PROCESSES. 03 IN-USE PIC 9(4) COMP. 03 MAX-USED PIC 9(4) COMP. 03 TOTAL-COUNT PIC 9(4) COMP. 02 TERMINALS. 03 IN-USE PIC 9(4) COMP. 03 MAX-USED PIC 9(4) COMP. 03 TOTAL-COUNT PIC 9(4) COMP. 02 RPTERMINALS. 03 IN-USE PIC 9(4) COMP. 03 MAX-USED PIC 9(4) COMP. 03 TOTAL-COUNT PIC 9(4) COMP. 02 DTTERMINALS. 03 IN-USE PIC 9(4) COMP. 03 MAX-USED PIC 9(4) COMP. 03 TOTAL-COUNT PIC 9(4) COMP. 02 ANTERMINALS. 03 IN-USE PIC 9(4) COMP. 03 MAX-USED PIC 9(4) COMP. 03 TOTAL-COUNT PIC 9(4) COMP. 02 SEQ-FILES. 03 IN-USE PIC 9(4) COMP. 03 MAX-USED PIC 9(4) COMP. 03 TOTAL-COUNT PIC 9(4) COMP. 02 REL-FILES. 03 IN-USE PIC 9(4) COMP. 03 MAX-USED PIC 9(4) COMP. 03 TOTAL-COUNT PIC 9(4) COMP. 02 IND-FILES. 03 IN-USE PIC 9(4) COMP. 03 MAX-USED PIC 9(4) COMP. 03 TOTAL-COUNT PIC 9(4) COMP. 02 REC-LOCKS. 03 IN-USE PIC 9(4) COMP. 03 MAX-USED PIC 9(4) COMP. 03 TOTAL-COUNT PIC 9(4) COMP. 02 OS-FILES. 03 IN-USE PIC 9(4) COMP. 03 MAX-USED PIC 9(4) COMP. 03 TOTAL-COUNT PIC 9(4) COMP. 02 PRN-FILES. 03 IN-USE PIC 9(4) COMP. 03 MAX-USED PIC 9(4) COMP. 03 TOTAL-COUNT PIC 9(4) COMP. 02 PCQ-FILES. 03 IN-USE PIC 9(4) COMP. 03 MAX-USED PIC 9(4) COMP. 03 TOTAL-COUNT PIC 9(4) COMP. 02 PCQ-JOBS. 03 IN-USE PIC 9(4) COMP. 03 MAX-USED PIC 9(4) COMP. 03 TOTAL-COUNT PIC 9(4) COMP. 02 SER-FILES. 03 IN-USE PIC 9(4) COMP. 03 MAX-USED PIC 9(4) COMP. 03 TOTAL-COUNT PIC 9(4) COMP. 02 CON-FILES. 03 IN-USE PIC 9(4) COMP. 03 MAX-USED PIC 9(4) COMP. 03 TOTAL-COUNT PIC 9(4) COMP. 02 BUFFERS. 03 IN-USE PIC 9(4) COMP. 03 MAX-USED PIC 9(4) COMP. 03 TOTAL-COUNT PIC 9(4) COMP. 03 IN-LRU PIC 9(4) COMP. 03 MIN-LRU PIC 9(4) COMP. 03 SIZE-BYTES PIC 9(4) COMP. 02 DEVICES. 03 IN-USE PIC 9(4) COMP. 03 MAX-USED PIC 9(4) COMP. 03 TOTAL-COUNT PIC 9(4) COMP. REV will contain a 1 at this time. 3. ICSTAT has been enhanced to show the Deleted record count even when not scanning the file (-N s) for version 6 and 7 ICISAM files. 4. A new builtin has been added. The IC_GET_FILE_IND builtin returns header information about a particular ICISAM indexed file. This call uses ICDATAPATH, if needed, to find the file. This call only works for ICISAM indexed files. The syntax is: CALL "IC_GET_FILE_IND" USING FILE-NAME, FILE-INFO-STRUCT Where FILE-NAME is a PIC X(n) that holds the name of the file to lookup. FILE-INFO-STRUCT is: 01 FILE-INFO-STRUCT. 02 IND-STRUCT-REV PIC 9(4) COMP. 02 FILLER PIC X(2). * 5, 6, or 7 02 IND-VERSION PIC 9(2) COMP. * 0x80-Purge attribute value is set 0x40-Purge attribute value (on/off) * 0x20-4GB big file attribute value is set 0x10-4GB big file attribute value (on/off) 02 IND-ATTRIBUTES PIC 9(2) COMP. 02 IND-MIN-REC-SIZE PIC 9(4) COMP. 02 IND-MAX-REC-SIZE PIC 9(4) COMP. 02 IND-NUM-KEYS PIC 9(4) COMP. 02 IND-KEY-TABLE. * 32 bytes each 10 IND-KEY-ENTRY OCCURS 17 TIMES. * 0x80-duplicates (7.00), 0x40-case-insensitive (7.00) * 0x20-reverse ordered (7.10) 0x10-Do not invert null (7.10) * 0x08-Also keys 15 IND-KEY-OPTS PIC 9(2) COMP. 15 IND-KEY-BASE-SIZE PIC 9(2) COMP. 15 IND-KEY-NULL-VALUE PIC 9(2) COMP. 15 IND-KEY-COUNT PIC 9(2) COMP. 15 IND-KEY-BASE-OFFSET PIC 9(4) COMP. 15 FILLER PIC X(2). 15 IND-ALSOS. 17 IND-ALSO-OFFSET OCCURS 6 TIMES PIC 9(4) COMP. 15 IND-OCCURS REDEFINES IND-ALSOS. 17 IND-OCCURS-SPAN PIC 9(4) COMP. 17 IND-OCCURS-SUFFIX-COUNT PIC 9(2) COMP. 17 IND-OCCURS-SIZE OCCURS 3 TIMES PIC 9(2) COMP. 17 IND-OCCURS-OFFSET OCCURS 3 TIMES PIC 9(4) COMP. 02 IND-RECORD-COUNT PIC 9(9) COMP. * Below is always 0 for rev 5 02 IND-DELRECORD-COUNT PIC 9(9) COMP. See the Indexed API for more info on this structure. INDEXED-STRUCT-REV returns 0x6931. (Decimal 26929). The IND-DELRECORD-COUNT is set to 0xFFFFFFFF (4,294,967,295) when it cannot be determined. It is set this way also for files that use ICNETD. 5. When using SP2, especially with ThinClient (gui), on a shutdown of the runtime, the runtime itself will generate an END-SESSION. With ThinClient (gui), this should prevent a pop-up window with a Title of "sp2 Thin Client" and the message "Failed to recv" from appearing. This pop-up should now ONLY appear if the surrogate process for some reason does not terminate cleanly. Unless there is another need, ICOBOL SP2 programs should NOT do an END-SESSION, allowing the runtime to do that at program termination. 6. Under Linux, ICPERMIT supports licensing via the MAC address of the ethernet card (NIC). (NOTE: This type of ICPERMIT can be used with older ICOBOL revisions as the licensed product(s) does not care how the license manager (ICPERMIT) was started.) ICINFO (Linux) can be used to show the MAC address(s) of a computer. 7. Under Windows, Flexus sp2 code has been updated to the 4.0.88 level. ThinClient (gui) has been updated to the 4.0.38 level. See the readsp2.txt file for more information. 8. ICREORG will now show the input record number for any duplicate key record. Remember, when using logical deletes with records with alternate keys that DO NOT ALLOW DUPLICATES, a Duplicate key error can be given for an alternate key that points to a deleted record. The record must be physically deleted to insert a new record with the same alternate key. 9. ICCHECK will now show the record position for many record problems. ICCHECK can now check read-only files although no reliability bits can be set or cleared in this mode. 10. ICFIXUP will now show if any unreliable flags have been set. ICFIXUP will show the record position for many record problems. 11. When using ThinClient (gui), logon mode is now allowed. If running in logon mode, the program name sp2logon is used. **** Revision 3.21 **** Bug fixes in 3.21 ----------------- 1. The IC_TERM_CTRL builtin was incorrectly checking the two argument call case resulting in an Invalid Data error. 2. Under Windows, in the ICIDE there was a missing help page. 3. The compiler could have created a .cx file in which an Index item was used but not allocated causing the program to error. Changes and New features in 3.21 -------------------------------- 1. Under Windows, Flexus qpr and sp2 code has been updated to the 4.0.80 level. See the readsp2.txt file for more information. 2. C-ISAM support added for Linux. 3. Under Sun Sparc, CPUID licensing is now supported by ICPERMIT. (NOTE: This version of can be moved back to previous ICOBOL 3.xx releases and 2.6x releases.) **** Revision 3.20 **** Bug fixes in 3.20 ----------------- 1. The IC_CHANGE_PRIV builtin did not allow the Watch privilege to be re-set after it was cleared. 2. Under Windows, at times a print job could not be dequeued. 3. Under Windows, ICTHINC and ICRUNW were NOT allowing 15 characters to be entered for username, password, or domain when in the username/password prompt for an ICNETD connection. 4. When performing physical DELETE's, at times a buffer manager panic could happen. 5. The ESCAPE register (ACCEPT FROM ESCAPE) was not being reset on return from a CALL or for a CANCEL program. It is now reset to zero in the calling program when returning from a successful CALL to a COBOL program. It is also reset to zero for a COBOL program on every CALL. This mimics how ICOBOL 2 worked. 6. The Linux terminal description file (.td) should be more DEC VT like than ANSI like for screen display. The new linux.td file is set correctly. PLEASE DELETE ANY OLD .td files created from previous Linux descriptions and use the new Description. NOTE: The .td file created CAN be moved back to previous ICOBOL releases to fix the problem there. Just do NOT re-create the .td file with an older version of ICCONFIG/ICEDCFW. 7. A DISPLAY screen LINE/COL, at times would not set the cursor correctly if only an Erase operation was done. 8. The extended open option for setting record size ("r=n") was being ignored at times. 9. Under Windows, the runtime was requiring the Microsoft ODBC .dll files. 10. Under Windows, the Documentation installer (doc3xx.exe) was not checking for Administrator privilege before continuing. 11. When auditing, multiple concurrent processes appending to the same audit file should not garbarge the file. Changes and New features in 3.20 -------------------------------- 1. Compiler/Runtime Enhancements Enhancements to the Screen Section, including OCCURS, LINE PLUS/MINUS variable, relative positioning after absolute positioning, identifier for FOREGROUND-COLOR and BACKGROUND-COLOR, CONVERTING UP/DOWN, and compatibility enhancements for the ERASE, BLANK, attribute control clauses. Some new formats in the SCREEN SECTION: BACKGROUND IS identifier FOREFROUND IS identifier BEEP BLANK REMAINDER NO HIGHLIGHT CONVERTING {UP|DOWN} ERASE {SCREEN|END OF LINE|END OF SCREEN} LINE +|- {integer|identifier} COLUMN +|- (integer|identifier} OCCURS integer TIMES In the PROCEDURE DIVISION, introduction of ACCEPT and DISPLAY statements with screen control clauses such as line and column positioning and attribute control, etc.. ACCEPT {identifier accept-clause... }... accept-clause: BACKGROUND-COLOR|BACKGROUND IS id|literal|color FOREGROUND-COLOR|FOREGROUND IS id|literal|color NO BELL|BEEP BLINK COL|COLUMN|POSITION id|literal CONTROL id|literal CONVERT CONVERTING {UP|DOWN} CURSOR {id|literal} ECHO ERASE {EOL|EOS|LINE|SCREEN} HIGH|HIGHLIGHT|LOW|LOWLIGHT|BOLD|BRIGHT|DIM LINE id|literal PROMPT [literal] REVERSE|REVERSED|REVERSE-VIDEO SECURE [WITH ECHO|NO ECHO] SIZE id|literal TAB BEFORE TIME id|literal TIME-OUT AFTER id|literal UNDERLINE|UNDERLINED UPDATE DISPLAY {identifier|literal display-clause... }... display-clause: BACKGROUND-COLOR|BACKGROUND IS id|literal|color FOREGROUND-COLOR|FOREGROUND IS id|literal|color BELL|BEEP BLINK COL|COLUMN|POSITION id|literal CONTROL id|literal CONVERT ERASE {EOL|EOS|LINE|SCREEN} HIGH|HIGHLIGHT|LOW|LOWLIGHT|BOLD|BRIGHT|DIM LINE id|literal REVERSE|REVERSED|REVERSE-VIDEO SIZE id|literal UNDERLINE|UNDERLINED SEE THE 3.20 Language Reference & Developer's Guide for more complete information and usage information. 2. The compiler's Revision switch (-R rev) now supports rev 1 and rev 2. Rev 2 supports the above new features but the code must run on 3.20 or up. Rev 2 is the default. Use -R 1 to compile for previous ICOBOL 3 runtime versions. 3. Under Windows, Flexus qpr and sp2 code has been updated to the 4.0.75 level. The ThinClient (gui) code has been updated to the 4.0.31 level. See the readsp2.txt file for more information. 4. When using SP2 (both ThinClient (gui) and thickclient), if a Fatal error or STOP RUN occurs, SP2 will be used to display a message box with the name of the COBOL program as the title and the text being the appropriate message. The user must click OK to finish. This will allow an application to never use the text window. 5. If the operating system allows usernames greater than 15 characters, ICOBOL will now generate a Warning and truncate that username to 15 characters when used with ICOBOL. Generally we recommend that usernames stay smaller than 16 characters, especially if your COBOL program makes use of usernames or uses ICNETD connections. ICNETD connections are STILL limited to 15 characters for usernames. 6. The audit facility has been updated to allow appending to datestamp, process-id, timestamp, and username log files. The audit flag is now: flag a|b|d|da|p|pa|t|ta|u|ua a=append (not valid with b), b=backup, d=datestamp, p=process-id, t-timestamp, u=username, In addition multiple concurrent processes appending to the same file should not garbarge the file. 7. ICCHECK has been updated to better show a Full Node message. 8. Under UNIX, the shared object icodbc32.so is available as a product to support ODBC on UNIX. See the readodbc.txt file for more information. **** Revision 3.13 **** Bug fixes in 3.13 ----------------- 1. ICEDCFW had two 4GB questions under System Parameters. 2. Under UNIX, ICEXEC could crash while cleaning up pcq entries. (Log file would mention "Unexpected use count of zero: pcq job object") (NOTE: This version of ICEXEC can be moved back to 2.68 releases of ICOBOL if needed.) 3. Under Solaris, ICLOG could core dump and leave ICISAM files marked as exclusively open in the shared area. (ICEXEC must be shutdown and restarted to clear.) (NOTE: This version of ICLOG can be moved back to 2.68 releases of ICOBOL if needed.) 4. A MOVE of an intrinsic function to multiple destinations would fail at runtime with an Internal System Error. 5. When using the debugger, a TYPE on an USAGE IS INDEXED item would cause the runtime to abort. 6. Under UNIX, in the link_kit directory, the ld_run*.sh scripts now protect for no argument1. 7. Under Windows, the ICIDE has been fixed as follows: The saving of a new file was cleaned up to remove the asterisk and not try to append multiple extensions, when there is more than one extension associated with a file type (bug fix). In the case of multiple possible extensions, the new filename prompt has no extension added to it. When there is only one choice, it is added. There was also a bug in the filename filters (Open/Save As) when there was more than one extension associated with a file type. Only the first extension would work. This is fixed. 8. Under Windows, when using the GUI runtime (ICRUNW) certain keys on the numeric keypad (/ * - and +) were doubled on entry. 9. Under Windows, the ICIDE - Save As command was not working properly. (3.13.01) 10. Under Windows, the IC_WINDOW_TITLE builtin was incorrectly requiring at least two parameters. Only one is required. (3.13.02) 11. Under UNIX, the Watch facility would cause an interrupt on the watched terminal. (3.13.03) 12. The IC_SET_USERNAME builtin was incorrectly checking the number of parameters. (3.13.04) 13. The IC_CHANGE_PRIV builtin was incorrectly checking the size of the privileges parameter and incorrectly getting the console-num parameter. (3.13.04) Changes and New features in 3.13 -------------------------------- 1. The compiler has a new switch. The -c switch will add the source directory for the main source file to the list of directories that will be searched for COPY files if the file is NOT found in the current working directory. This directory is added IN FRONT of the directores specified by the -C dir switch. 2. Under Windows, the ICIDE has been enhanced as follows: Under the Project-Properties-Folders tab a new selection called "Search Source File Folder" has been added to support the new compiler switch -c provided above in #1. Under Tools->Configure->Options now has a field for Projects Folder. This becomes the default directory for Project->Open and Project->New. A browse button (...) is avaliable. Each time the File Open, Save File As, or Save Copy As dialogs are used, the ide will 'remember' the folder where the file was saved. This will be used as the default folder the next time the dialog is used. This setting is automatically saved when the ICIDE exits. The saving of a new file was cleaned up to remove the asterisk and not to append multiple extensions when there is more than one extension associated with a file type (bug fix). In the case of multiple possible extensions, the new filename prompt has no extension added to it. When there is only one choice, it is added. The context menu to open a COPY file was enhanced to mimic how the compiler opens a COPY file in the case where it cannot get it from the project file. It was also enhanced to handle partial pathname lookups (e.g., COPY "crt/sp2.cpy") in the project file. 3. Under Windows, the Flexus sp2, qpr, and ThinClient (gui) code has been updated to the 4.0.65 level. See the readsp2.txt file for more information. In addition, a new FormPrint Manual is now available in the Doc update for 3.13. (DOC313.EXE) 4. The ICNETD i/o surrogate is now called ICIOS and is a separate executable under UNIX. Logging for the surrogates on UNIX will now be like Windows. That is, each surrogate will log to its own separate log file as "icios_.lg" when surrogate logging is enabled. (icnetd -O b) 5. The username and password prompt for logging onto ICNETD services has been enhanced to include a domain prompt. This prompt is valid when both the client and server pieces of the connection are running 3.13 or greater. Specifying a domain will cause the username/password to be verified by that specified domain controller, otherwise the default domain is used. 6. Under UNIX, the startic example script has been updated to allow the status command without checking for superuser. 7. ThinClient (gui) client, ICTHINC, will now allow an argument to be specified as to what COBOL program to execute on the server. 8. ThinClient (gui) client, ICTHINC, 3.13 and up must connect to a 3.13 or up version of ICNETD (really 2.73). 9. Under Windows, the IC_SEND_MSG builtin will now be asynchronous if a screen read is posted. I.E., the next opcode does not need to be processed. 10. Under Windows, the Watch facility is now available for runtimes that actually run on the same machine. The Watch privilege must be enabled under Program Environment for the terminal that wishes to Watch (or Control) another terminal AND the WATCH addition must be available on the license. 11. Under Windows, a new builtin function has been added. IC_WINDOWS_SETFONT allows for the Windows GUI runtime (icrunw) process to change the font and font size at runtime. Just like it can be changed at startup. 12. ThinClient (gui) server support has been added for UNIX. (4.0.20) See the readsp2.txt file for more information. The needed .pan files MUST reside on the UNIX machine. NOTE: The environment for ICNETD is now very important as that is the environment passed to the surrogates, both ICIOS and ICTHINS. Especially important is the PATH setting. Under UNIX, the startic script has been updated to reflect this information. 13. Under Windows, the ThinClient (gui) client, ICTHINC, can now pass switches to its surrogate (ICTHINS) via including a "--" and then the switches needed for ICTHINS. I.E., if you are going to a UNIX machine called aix2 and you want to support mixed cases filenames then you do the following: icthinc -M aix2 -- -C u 14. A new builtin function has been added. IC_SET_ENV allows for an environment variable to be SET. Its very similar to the IC_GET_ENV call. 15. LOGON, SP2LOGON, and SP2LOGON.PAN have been updated to support the IC_SET_ENV builtin. 16. Support has been added to the runtime to allow a COBOL program to write to the runtime audit file (icrun.lg) if there is one. This facility is supported in the following fashion: In the SPECIAL-NAMES part of the CONFIGURATION SECTION add: ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. "@AUDIT" IS mnemonic-1. NOTE: @AUDIT must be all uppercase. In the procedure division use: DISPLAY foo1 [foo2]... UPON mnemonic-1. This will send the data in foo1 and foo2 to the audit log. This is the ONLY case where UPON mnemonic works. In all other cases this is for documentation only. NOTE: If auditing is not enabled, nothing is done. This facility is especially useful when debugging ThinClients. (If this statement is executed with a pre-3.13 runtime the DISPLAY will come to the screen.) 17. With ICSP2 and ICQPRW, when generating the COBOL main program the extension for the main source has been changed from .cbl to .sr for CRT format .co for CARD format. See the readsp2.txt for more information. 18. Under Windows, the qpr\uib.cbx file was incorrect for CRT format. Non-compiling code could be generated by ICQPRW. 19. Under Windows, the installer will now allow a ThinClient client to talk with the current machine. This option is useful for testing. 20. Under Windows, ICINFO will now correctly detect Windows XP and certain later Pentium III and P4 chips. Updated to the Intel Processor Identification Note AP-485 (January 2002). 21. Under Windows, ICNETD now has a new startup option: -N b for NO logon_Batch. When started with this option ICNETD will logon users using the logon_network privilege instead of the logon_batch privilege. This allows for the old (pre-2.64 ICOBOL) behavior of ICNETD. When started in this mode no UNC names can be used and no access to other machines is allowed, but the logon_network privilege is available for all users by default whereas logon_batch must added. At this time, to add this option you must use regedit and add the option manually. To do that, do the following AFTER making a backup of your registry: Start regedit: Position to My Computer\HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\icnetd Open: ImagePath Now add the string " -N b" (without quotes) to the end of the value Click OK Exit the Registry 22. Under Windows, the Sentinel driver has been updated from 5.38 to the 5.39.2 version. **** Revision 3.12 **** Bug fixes in 3.12 ----------------- 1. The compiler (ICOBOL) was not properly handling the case of a numeric edited picture with a trailing sign, like 99-. Please re-compile. 2. ICCHECK was not detecting certain cases of bad version 7 ICISAM files whose feedback counter for alternate keys that allowed duplicates was invalid. If you have encountered Duplicate Key errors on WRITEs that should not have been errors, run this ICCHECK on that file. If ICCHECK detects a feedback error it will mark the .NX file as bad. At that point an ICFIXUP will cleanup the file. (NOTE: This version of ICCHECK can be moved back to ICOBOL 2.6x releases to check for feedback errors there.) 3. ICFIXUP was using an incorrect value for the minimum record size in certain cases with version 7 ICISAM files and the .XD file was invalid. This would have caused ICFIXUP to not open the file. (NOTE: This version of ICFIXUP can be moved back to ICOBOL 2.6x releases.) 4. ICEDCFW was not properly handling the 4GB version flag in System Parameters. 5. Under Windows, in the ICIDE, a Search Next could get confused if the cursor was moved from the previous search position. 6. The compiler (ICOBOL) was not properly handling the case of move'ing a numeric item to a matching (in type, size, and precision) numeric item when the item had invalid data. Please re-compile. 7. Under Windows, at times a print job could not be CANCEL'ed. 8. When debugging, deleting a Test breakpoint when more than one Test breakpoint had been set would lead to a core dump. Changes and New features in 3.12 -------------------------------- 1. There is a new Linux version, built with Red Hat 7.1 which provides support for files to grow to 4GB. This version should be used with 2.4 kernels. (ln4 version) 2. The IC_SEND_MSG builtin has been enhanced to take two additional parameters (line and column) positioning in Mode 2 (Program Mode). The new syntax is: CALL "IC_SEND_MSG" USING term-number, message [, line-no, col-no] Where line-no is a numeric that specifies the row (0-255) of where to place the message on the terminal col-no is a numeric that specifies the column (0-255) of where to place the message on the terminal NOTE: 0,0 is the upper-left corner of the terminal. In addition, when this format is used the message can include DG attribute characters like reverse, blink, dim-on, dim-off, etc. These attribute(s) will be mapped to the correct attribute on the user's terminal. On the specified terminal, all attributes will be reset at the end of the message and the cursor position will be returned to its starting position. 3. Under UNIX, the IC_SEND_MSG builtin will be asynchronous if a screen read is posted. I.E., the next opcode does not need to be processed. **** Revision 3.11 **** Bug fixes in 3.11 ----------------- 1. Under Linux, ICNETD could not correctly check passwords when MD5 password support (I.E., passwords longer than 8 characters) was enabled. (NOTE: This version of ICNETD can be moved back to ICOBOL 2.6x releases.) 2. Under Windows, the GUI runtime (ICRUNW) could not call CMD.EXE or COMMAND.COM correctly. 3. Under Windows, the SP2LOGON and PCQUTIL demos have been fixed to handle up to 255 character files in List/View. In addition, the SP2LOGON example supports Change Directory. 4. The SP2LOGON program in its Add files to Printer could not handle the "?" wildcard. 5. When debugging, the help for Go was not available. 6. When debugging, a Ctrl-C under Windows or the Intr key under UNIX was not working correctly at the debug prompt. It will be ignored. 7. Under Windows, debugging was not working on Console lines. The debugger will work with the "-z" option set to icrun meaning that symbol files must reside in the working directory. Changes and New features in 3.11 -------------------------------- 1. Under Windows, a new builtin function has been added. IC_WINDOWS_SHELLEXECUTE allows for the Windows ShellExecute call to be made that allows files to be executed with their file associations. Several examples include: A. "joe.pdf" can be passed in and if Adobe Reader is loaded then that file will be brought up in the Adobe Reader just as if you had clicked on it in Explorer. B. "www.icobol.com" can be passed in and if a default web browser is installed it will be started with "http:www.icobol.com" as its default url. C. "mailto:support@icobol.com?subject=Test subject&cc=myself@home.com" can be passed in and if a default mail client is installed it will be started with the shown data. Assuming Outlook Express the first address will be the TO, the subject will be set to "Test subject", the CC will be set to "myself@home.com". Other parameters could be available based on the particular mail client. Below from Microsoft are several pre-defined Internet Protocols available via shellexecute: ftp Protocol ------------ Opens a file transfer session with the specified site address. Syntax ftp://[sUsername[:sPassword@]]sDomain Tokens sUsername Optional. Specifies an existing account on the site. sPassword Optional. (If sUsername is included.) Specifies the password of the account on the site. sDomain Specifies the fully qualified domain name or IP address to the site. Remarks Sites with FTP servers might or might not allow anonymous connections. Depending on the site's configuration, the password does not always have to be included with the FTP protocol if the account name is required. The site will prompt you for login information as necessary. Available as of Microsoft Internet Explorer 3.0 or later. Example The following sample demonstrates two ways to use the FTP protocol. //Without specifying the user name and password. Microsoft's FTP Site //Specifying the user name and password. For this example, an anonymous connection will be made. Microsoft's FTP Site http Protocol ------------- Opens a hypertext transfer session with the specified site address. Syntax http://sDomain Tokens sDomain Specifies the fully qualified domain name or IP address to the site. Remarks The hypertext transfer protocol (HTTP) is a communications protocol designed to transfer hypertext documents between computers over the World Wide Web. It defines what actions Web servers and browsers should take in response to various commands. HTTP is stateless, meaning the connection to the server does not necessarily remain open. Available as of Microsoft Internet Explorer 3.0 or later. Example The following sample demonstrates the use of the HTTP protocol. The Microsoft Web Site mailto Protocol --------------- Opens a client's e-mail system. Syntax mailto:sAddress[sHeaders] Tokens sAddress One or more valid e-mail addresses separated by a semicolon. You must use Internet-safe characters. Use %20 for the space character. sHeaders Optional. One or more name-value pairs. The first pair should be prefixed by a "?" and any additional pairs should be prefixed by a "&". The name can be one of the following strings. subject Text to appear in the subject line of the message. body Text to appear in the body of the message. CC Addresses to be included in the "cc" (carbon copy) section of the message. BCC Addresses to be included in the "bcc" (blind carbon copy) section of the message. Remarks For more information on the mailto protocol, see RFC 2368 . Available as of Microsoft Internet Explorer 3.0 or later. Examples The following example shows a mailto URL that will prepare an e-mail message when typed into the Internet Explorer address bar. mailto:mtscf@microsoft.com?subject=Feedback&body=The InetSDK Site Is Superlative The following example shows a link that will prepare an e-mail message. Click here to send feedback to the InetSDK. The following example shows a link that will prepare an e-mail message with multiple lines of text in the body. Click here to send feedback to the InetSDK. The following example shows how to use an HTML form to create an e-mail message.
Enter comments about this site:
telnet Protocol --------------- Opens a terminal login session with the default Telnet client. Syntax telnet://sDomain[:iPort] Tokens sDomain Specifies the domain. iPort Optional. Specifies the port the login server is using on the domain. Remarks Available as of Microsoft Internet Explorer 3.0 or later. Example The following sample demonstrates the use of the Telnet protocol. telnet://microsoft.com:4201 Other predefined protocols include file, gopher, https, javascript, news, res, and view-source. Above section (C)2003 Microsoft Corporation. All rights reserved. 2. Under Windows, How to Change the .co or .sr file association from card to free (or vice versa) when using the ICIDE. Windows 2000 ------------ Select My Computer Select Tools Select Folder Options Select File Types Pick .co Select New enter co extension Click Advanced Now go to Associated File Type and pull-down Change to ICIDE.Free-Format Say Yes to move association Now if you double-click on a *.co file it will be brought up as Free Format and not Card format. Just do the opposite to change a .sr into a CardFormat. 3. The debugger allows up to 8 Break test breakpoints. (Not one as the help and documentation says.) 4. Under Windows, ICINFO will check for the ICRUN environment variable. 5. Under Windows, the GUI runtime, ICRUNW can have its font and font size changed. The default fixed font for icrunw is "Courier New". ICRUNW takes a new "-F ptsize" switch where ptsize is an integer between 2 and 99 inclusive that sets the point size for the fixed font being used. The default point size is 11. Two new environment variables are available for ICRUNW. ICFONT=font ICFONTSIZE=fontsize Where font must be a fixed font available on the machine. fontsize must be a integer value between 2 and 99 inclusive and must be available for the given font. The default font is "Courier New" and the default point size is 11. Some fixed fonts that are available on most machines are: Courier, Courier New, Fixedsys, and Terminal. Courier New is a TrueType font such that all point sizes are available. Courier is usually a bit map with a limited selection of sizes. If the indicated font is not available, Windows will pick a font that matches as close as possible to the given settings. ICFONTSIZE will override the -F switch. **** Revision 3.10 **** Bug fixes in 3.10 ----------------- 1. The debugger would inappropriately report an end-of-file error when reading or locking source files which did not end with a line terminator character such as a newline. It would also erroneously insert lines with '??' where these errors occurred. 2. When started with the -T switch, ICEXEC would allow one less terminal than expected. (I.E., -T 0:1 would allow only 1 console, instead of two.) 3. The documentation for debugging showed a BREAK ERROR STOP command. There is no command in ICOBOL 3. 4. The runtime could crash if a data-sensitive WRITE was done to a file that was not open. 5. The runtime was not terminating if ICABORT=on and ICTIMEOUT=non-zero when started in logon mode. 6. Under Windows, the installer could put extra data into the install.txt file. 7. The runtime was not properly handling moving HIGH-VALUES and LOW-VALUES to numerics for the ICOBOL and ICOBOL-85 dialects. 8. The compiler (ICOBOL) was not properly handling the case of a DELETE FILE when no other i/o operation on that file was detected in the program. Please re-compile. 9. When compiling with the -G 6 option, if any error occurred due to the tighter restrictions, then the compiler (ICOBOL) would eventually core dump. 10. The help for the compiler (ICOBOL) had an -K switch documented that did not exist. It has been removed. 11. The compiler (ICOBOL) was not handling zero-length COPY files. 12. Under Windows, the compiler (ICOBOL) was not properly handling COPY files with a name that started with "COM.*". 13. The listing file for the compiler (ICOBOL) started the source listing in column 15 when generating PCs, it should be column 16. 14. ICEXEC was opening and flushing extra files when it detected runtimes that had terminated unexpectedly. 15. Storing a numeric value into a trailing overpunch data item could overwrite the next byte of storage if the value being stored was nonzero, but it was truncated and the truncated value was zero. For example storing PIC 9(6)V99 VALUE 000000.99 into PIC 9(6). 16. ICLIB, when deleting a zero-length file from the library, would garbage the next file in the library. 17. Under Windows, when opening/closing serial devices there was a memory leak, causing memory usage to grow for the runtime process. 18. The compiler (ICOBOL) was truncating data item names longer than the dialect allowed and generating a Warning. This will be an Error. Changes and New features in 3.10 -------------------------------- 1. ThinClient (gui) support has been added for SP2 and FormPrint runtimes. (4.0.20) ThinClient (gui) allows a COBOL sp2 and/or FormPrint based application to be run on a server and deploy the application's graphical user interface to any Windows client machine connected to the server via a TCP/IP network. The main advantage to this architecture is that the business logic and database files are maintained in a central location yet end-users still have access to the graphical user interface and all its associated conveniences. NOTE: Only the Sp2 and FormPrint interfaces are shipped to the thinclient, all standard ICOBOL interfaces will be performed on the server. You must insure that NO standard ICOBOL console i/o (DISPLAY, ACCEPT, STOP lit, etc.) is done. ThinClient (gui) consists of two pieces: ThinClient (gui) client and ThinClient (gui) server. More on ThinClient (gui) support can be found in the readsp2.txt file. 2. The sp2logon example has been updated for ThinClient (gui) support. 3. Under Windows, a GUI interface runtime, ICRUNW.EXE, has been added. The console interface version, ICRUN.EXE is still provided. Differences from console version -------------------------------- A. The icon displayed with ICRUNW will not be the command icon (usually set to MSDOS). The icon is set to an IC bitmap. B. ICRUNW only runs in a GUI session. It will not run in a telnet session or from a COM line - use the console version (ICRUN.EXE). C. When started from a command window, 1) ICRUNW does not inherit the lines and columns from that window; and 2) ICRUNW returns to the command window immediately since it is running in a new window (exit codes will not normally be seen). D. Alt-Enter key behaves as an Enter, does not go Full Screen. E. Command-line errors generate a Message box. F. When calling the command processor, the command will be executed in a new window. The console version (ICRUN) should be used when running in a batch stream. 4. Under Windows, when running the runtime on the master console, Ctrl-Shift can be used to generate the fourth state of functions keys 1 - 12. 5. Under Windows, the Integrated Development Environment, ICIDE, has been added. ICIDE is installed as part of the Development system and provides a project-oriented view of your COBOL sources, allowing files to be edited and compiled in a graphical environment. IF YOU ARE UPGRADING, from a previous version if ICOBOL, AND the Development system had been installed, then ICIDE will be automatically installed. If you DO NOT wish to have ICIDE installed you must select Add or Manual and under the Development Component you must deselect the ICIDE sub-component. To use: Start ICIDE Select Help -> Welcome and step through the next several sections in the Help system. 6. The Windows version of ICOBOL uses WinSock2. Windows 95 came with WinSock1.1 and must be upgraded if it has not been done already. Running the new ICINFO will tell you if WinSock is not at the correct revision. If you get a DLL load error saying the SNMPAPI.DLL could not be loaded then you need to rev up. The error will usually be in a PopUp box and say: "A required .DLL file, SNMPAPI.DLL was not found.". Download the update from Microsoft, our Web site, or copy it from the ICOBOL install CD. It will be called ws2setup.exe or w95ws2setup.exe. Then run the executable and then re-boot. On the Microsoft Web site search for "Windows Socket 2" for more information. NOTE: Windows 95 is no longer a supported platform for ICOBOL. 7. The following have been added as reserved words for the ICOBOL and ICOBOL85 dialects: CONVERT, CURSOR, HIGH, LOW, PROMPT, and TAB. If these words are used as identifiers they must be changed to a word which is not reserved. 8. The debugger has been removed as a separate executable. It is contained in the standard runtime. Use the -z or -Z switch to start the runtime in debug mode. The runtime uses the Debug Privilege from the configuration file (in the Program Environments section) for the given terminal to determine whether to allow the runtime to be started in debug mode. 9. Under Windows, the icrunsu.dll and icrunmu.dll have been merged into a single .dll called icrun.dll. 10. Under Windows, the installer will delete the components no longer needed due to #8 and #9 above. 11. Under Windows, the installer will place the shortcuts to the console versions of icconfig, icrun, and icrun (debug mode) under the 'Console Applications' submenu. Similarly, the shortcuts to the various readme (.txt) files are placed under the 'Readme Files' submenu. 12. The compiler's (ICOBOL) use of the -C dir option has been enhanced. The compiler will look through the list of directories specified via -C for all COPY files that are simple or relative. Previously this list was only used for simple names. 13. Under Windows, the ICSP2 and ICQPRW products have been upgraded. See the readsp2.txt file for more information. 14. The user_lib has been updated with an updated sample indxsamp.c and minor corrections to the interface. 15. Under Windows, when ICNETD starts surrogates (ICNETS and ICTHINS) with auditing enabled, it will place the audit files in the ICOBOL Working directory. 16. Under Windows, ICPERMIT supports licensing via the MAC address of the ethernet card (NIC). (NOTE: This type of ICPERMIT can be used with older ICOBOL revisions as the licensed product(s) does not care how the license manager (ICPERMIT) was started.) ICINFO (Windows) can be used to show the MAC address(s) of a computer. 17. Under Windows, on the master console the bell (or beep) was using only the internal speaker, it will now use external speakers if available. Support Information ------------------- Support for Interactive COBOL should be addressed to the purchasing source of Interactive COBOL as the first point of contact. Telephone and Priority Email support contracts are available through the Sales Department. (sales@icobol.com) A Web site and FTP site are available for web-based support. We provide timely product updates and product information, as well as beta products for you to try new features. WWW http://www.icobol.com FTP ftp.icobol.com General questions, comments, bugs, request for enhancements, etc. can be addressed to the Developers by using the Support Form on our web site. If you do not have web access, but do have email, you may email us at support@icobol.com. Be sure to provide the information requested in the form at the end of the readme. Please DO NOT send large files as email attachments unless specifically requested to do so. If using FAX or Postal mail, print the form that is on the last page of this readme, fill it in as completely as possible, and send it. NOTES on BETA and UPGRADE Products ---------------------------------- All BETA products have an expiration date after which they will no longer work. BETA products are just that BETA, we do not recommend installing them in end-user sites. They are offered as a way of introducing and testing new features. We do NOT accept phone support requests for BETA products. Use the Support Form on the web site. In most cases your current licenses will allow the updates and/or betas to be used. If it doesn't and you want to test a new feature, call sales and request a demo license to try it. NOTES on MEDIA -------------- If sending media, we currently can handle 1.4MB floppies in MS-DOS format and UNIX tar format, QIC-24 (60MB), QIC-120/150 (150MB), QIC-525 (525MB), QIC 1000 (1.2GB), and QIC-2GB (2GB) cartridge tape formats, 4mm DAT tapes, and CD-ROMs. (CD-ROMS are the preferred method.) Please specify how the media was prepared and how it should be extracted. Revision information -------------------- Below is a general list of major executables and directory structure for a release. If the executable is not available on all platforms that information is indicated. (dev) indicates a Development part. COBOL365 (UNIX) or ICOBOL (Windows) (main directory) cgicobol -directory- ICRUNCGI examples -directory- various sample files along with documentation on upgrading from ICOBOL 2->ICOBOL 3, or DG->ICOBOL 3, etc. help -directory- Help files (.hf) ICCHECK ICCONFIG ICCREATE ICDUMP (dev) ICEDCFW (Only on Windows) (GUI) ICEXEC ICFIXUP ICIDE (dev) (Only on Windows) (GUI) ICINFO ICIOS ICLIB ICLINK ICLOG ICMAKEMS ICNETD ICOBOL (dev) ICPACK ICPERMIT ICPQUTIL ICQPRW (dev) (Only on Windows) (GUI) ICREORG ICREV ICREVSET (dev) ICREVUP ICREVW (Only on Windows) (GUI) ICRUN ICRUNRC **new in 3.30** ICRUNRS **new in 3.30** ICRUNW (Only on Windows) (GUI) ICSHELLX (Only on Windows) (GUI) ICSMVIEW ICSORT ICSP2 (dev) (Only on Windows) (GUI) ICSTAT ICSVCMGR (Only on Windows) (GUI) ICTHINC (Only on Windows) (GUI) ICWHOHAS link_kit -directory- (dev) icbltn.so|sl|dll logon.cx messages -directory- *errs-en.h files print -directory- Printer description files (.pti) read* sp2logon.cx tcs -directory- ICTHINS term -directory- Terminal description files (.tdi) termi user_lib -directory- (dev)(ICAPI) icuser.so|sl|dll indxsamp Under UNIX, all executables are lower-case although upper-case names are generally used to refer to them. General Information under UNIX ------------------------------ Interactive COBOL on UNIX flavors --------------------------------- Interactive COBOL (AIX) was built under AIX 5.1 for revisions 5.x and up of AIX on RS/6000 machines including PowerPC models. Supports filesizes to 4GB with an appropriate ulimit and filesystem. (C-ISAM support) Interactive COBOL (DG/UX-Intel) was built under DG/UX 5.4R4.11 for DG/UX 5.4R4.10 and later revisions on DG Intel-based AViiON's. (Using dynamic linking.) (C-ISAM support) (U/FOS support) Interactive COBOL (HP-UX10) was built under HP-UX 10.20 for all HP Series PA-RISC 1.1 and up machines running HP-UX 10.20 and up. Supports filesizes to 4GB. (Using dynamic linking) (C-ISAM support) (U/FOS support) Interactive COBOL (LINUX) was built under Red Hat Linux 6.2 (Intel) (kernel 2.2.14-50). (Using dynamic linking.) Tested on Red Hat 6.2 and 7.1. Under Red Hat 7.1 see Note 6 in the Notes and Warnings under UNIX section of this readme. (This is the ln2 version) (C-ISAM support) Interactive COBOL (LINUX) was built under Red Hat Linux 7.1 (Intel) (kernel 2.4.2-20). (Using dynamic linking.) Tested on Red Hat 7.1/8.0, Red Hat Enterprise 3/4 Supports filesizes to 4GB. (This is the ln4 version). This version should be used on all 2.4 and 2.6 kernels. (C-ISAM support) Interactive COBOL (LINUX) was built under Red Hat Enterprise 4 (Intel) (kernel 2.6.9). (Using dynamic linking.) Tested on Red Hat Enterprise 4 Supports filesizes to 4GB. (This is the ln6 version). This version should be used on 2.6 kernels and up with GLIBC 2.3 and up. Interactive COBOL (SCOUNIX) was built under SCO OpenServer Release 5.0.4 (3.2.5.0.4) with SLS OSS601a for SCO OpenServer 3.2.5.x implementations. (Using elf and dynamic linking.) Tested under SCO OpenServer 5.0.2, 5.0.5, 5.0.5, SCO UNIX 7.0 (C-ISAM support) (U/FOS support) Interactive COBOL (UNIXWARE) was built under SCO UnixWare 7.1 for UnixWare 7 (Intel) implementations. Supports filesizes to 4GB. (C-ISAM support) Interactive COBOL on UNIX places some of its code in shared objects. These shared objects are used by various executables. Some of these modules are shown below: icuser.so provides the ICAPI interface (requires icsys) icodbc.so provides the ODBC support (requires icsys) **below .so's were new in 3.40** icrun.so.365 provides common runtime modules (requires icsys) icsys.so.365 provides common system code icbltn.so (optional) provides user-defined routines for the runtime Note: the .sl extension is used under HP-UX instead of .so Interactive COBOL on UNIX uses Semaphores and Shared Memory. The keys for these items are given below: Semaphores 2.2x-3.2x 3.30- (initialized by ICEXEC) ---------- ---------- ---------- Buffer 0x69636201 0x69636202 Open/Close 0x69636F01 0x69636F02 Logon/Logoff 0x69637001 0x69637002 Lock 0x69636C01 0x69636C02 Shared Memory 0x69636701 0x69636702 (initialized by ICEXEC) ------------- Message Queues 2.2x- (initialized by ICPERMIT) -------------- ---------- 0x69637051 0x69637052 General Information under Windows --------------------------------- Interactive COBOL on Windows is a 32-bit application for Windows. Most of the executables present a console interface. The executables marked with GUI in the Revision list give a GUI interface. (Btrieve supported.) Interactive COBOL on Windows was built using the Microsoft Visual Studio .Net 2003 (C++ 7.1 compiler). (Year2K compliant) Interactive COBOL on Windows requires: Windows 2000: Professional, Server, Advanced Server Windows XP: Home, Professional Windows Server 2003: all editions Windows Vista: Interactive COBOL on Windows places some of its code in .DLL modules. These modules are used by various executables. Some of these modules are shown below: BIVBX11.DLL (Used by SP2 runtime) BIVBX11C.DLL (Used by SP2 runtime) BIVBX11S.DLL (Used by SP2 runtime) ICODBC32.DLL (ICODBC) ** ICODBCSU.DLL (ICODBC setup) ** ICOE702AS.DLL (Used by ICIDE) ICOT802AS.DLL (Used by ICIDE) ICRUN.DLL (Used by runtimes) ICSFL202AS.DLL (Used by ICIDE) ICSHELLX.DLL (Used for shell extensions) ICSYS.DLL (Used by most IC executables) (new in 3.40) ** INETWH32.DLL (Used by ICIDE) link_kit\ICBLTN.DLL (Optionally used by runtimes, user modules) MFC71.DLL (Microsoft) ** MSVCP71.DLL (Microsoft) ** MSVCR71.DLL (Microsoft) ** QPE.DLL (Used by ICQPRW) QPR.DLL (Used by FormPrint runtime) QPRCLI.DLL (Used by ThinClient (gui) client-FormPrint runtime) QPRIMA32.DLL (Used by ICQPR and FormPrint runtime)(JPEG) QPROCX32.DLL (Used by ICQPRW and FormPrint runtime)(ActiveX) QPRTVW32.DLL (Used by ICQPR and FormPrint runtime) QPRW.DLL (Used by ICQPRW) ROBOEX32.DLL (Used by ICIDE) RWUXTHEMES.dll (Used by ICIDE) SP2.DLL (Used by SP2 runtime) SP2CLI.DLL (Used by ThinClient (gui) client-SP2 runtime) SP2IMA32.DLL (Used by ICSP2 and SP2 runtime)(JPEG) SP2OCX32.DLL (Used by ICSP2 and SP2 runtime)(ActiveX) SP2TCSOK.DLL (Used by ThinClient (gui) client) SP2THRED.DLL (Used by SP2 runtime) SP2TVW32.DLL (Used by ICSP2 and SP2 runtime) SP2UNBUF.DLL (Used by ThinClient (gui) client) SP2VBX.DLL (Used by SP2 runtime) SP2VBX32.DLL (Used by SP2 runtime) SX32W.DLL (Used by ICPERMIT) tcs\AES.DLL (Used by ThinClient (gui) server) tcs\QPR.DLL (Used by ThinClient (gui) server) tcs\QPRSRV.DLL (Used by ThinClient (gui) server) tcs\SP2.DLL (Used by ThinClient (gui) server) tcs\SP2LOCAL.DLL (Used by ThinClient (gui) server) UIB.DLL (Used by ICSP2, ICQPRW) user_lib\ICUSER.DLL (Used by ICAPI applications) user_lib\ICUSERS.DLL (Used by ICAPI applications) VIC32.DLL (Used by ICSP2/ICQPRW and SP2/FormPrint runtimes)(JPEG) ** Copied to the system directory. Several Telnet Servers are available for Windows from: Ataman (www.ataman.com) Pragma Systems (www.pragmasy.com) GoodTech Systems (www.goodtechsys.com) Microsoft Available with XP and 2000 Server and up Also available as part of the Windows Services for UNIX Seattle Lab (www.seattlelab.com) Georgia SoftWorks (www.georgiasoftworks.com) ********** IMPORTANT. FOR WINDOWS ICNETD USERS ********** ********** UPGRADING FROM PRE-3.00 REVISIONS ********** Under Windows, when ICNETD started i/o surrogate processes for remote users, it previously (ICOBOL 2.63 and before) used a logon option that did not allow access to remote files or even to files on the local machine using a UNC name. After much debate we have decided to change this behavior to allow remote file access and the use of a local UNC name. ICNETD will start i/o surrogate processes with the LOGON_BATCH logon option. THIS WILL REQUIRE THAT ALL USER PROFILES ON THE ICNETD SERVER MACHINE THAT WILL USE ICNETD I/O SURROGATES (ICIOS) MUST HAVE THE "log on as a batch job" USER RIGHT. To add this user right, do the following on the machine on which ICNETD is running: Under Windows 2000 ------------------ Click Start, Select Settings, and Open Control Panel. Open Administrative Tools. Open Local Security Policy which runs as Local Security Settings. Open Local Policies, Open User Rights Assignment, Open Log on as a batch job. Use Add to assign the users/groups with the right. Under Windows 2000 with ACTIVE DIRECTORY ---------------------------------------- If you have ICNETD running on a Windows 2000 server that is using Active Directory, then you need to assign the 'log on as a batch job' privilege to users under the Domain Security policy object. However, if the Windows 2000 server is also a domain controller, then assign the privilege under the Domain Controller Security policy object. We encourage ICNETD users to ONLY use files local to the machine on which the surrogate is running. (Do not hop multiple times.) ********************************************************************* Known Problems under Windows ----------------------------- 1. The runtime currently has no way to detect a modem such that at OPEN time the open should pend until CD (Carrier Detect) goes high. 2. When trying to use Microsoft printers through the ICOBOL Printer Control System if an Invalid Parameter (oserr=87) is received when trying to print make sure that the Microsoft print driver is not set to print directly. ICOBOL cannot send data to a print spooler that is set to Not spool but print directly. 3. Under Windows, when a user logs on using a serial line driven from ICEXEC to run COBOL programs, the environment for that particular user is not the same as if he had logged on to the Master Console. The working directory is set to the default ICOBOL working directory specified at ICOBOL installation and no other user-specific parameters are configured. In addition, there are probably no "mapped" drives for that user. Notes and Warnings under UNIX ----------------------------- 1. When using both @PRN and @PCQ entries, be careful about which devices are being used. In general, a printer, @PRN, should not point to a device that has a UNIX spooler also using the port. Otherwise you could get garbaged output or other undefined results. You should use @PRN entries when you wish to print directly to the device with no spooling. You should use @PCQ entries, which use the UNIX spooler, for reports, etc. in which you do not need to actually control the order the printout comes out on the printer. If you currently open "$LPT" or "$LPT1" in your COBOL program and you really want it directed to a print queue then you should build a linkfile that has "$LPT @PCQ0", "$lpt @pcq0"; and/or "$LPT1 @PCQ1", "$lpt1 @pcq1", etc. ... in it. 2. You must be aware that using filenames with embedded dollar ($) signs could be troublesome. While in the COBOL program the runtime will handle the names correctly but any time the runtime or user must interact with the UNIX shell unintended results could happen. Some examples: An ICISAM file whose name is "data$426" in the COBOL program. When you are at the UNIX shell you cannot say: iccheck data$426 (because the $4 will be stripped off and remapped to arg4.) An ICISAM file whose name is "data$abc" in the COBOL program. When you are at the UNIX shell you cannot say: iccheck data$abc (the $abc will be stripped off and the environment value abc will be sought.) Any file in the printer control utility can not be printed in most cases because the UNIX print spooler executes scripts to print files and those scripts will also incorrectly interpret filenames with dollars ($). **** A workaround for this case is to ask for a range of **** pages, I.E., 1 - 99999 in which case the runtime will **** read the file and pipe the output into lp without **** giving lp the filename with the dollar sign(s). Please change your programs to not build filenames with dollar ($) signs or using the link facility (ICLINK) to re-map the filenames at open. 3. Interactive COBOL does not handle sharing files using NFS mounted drives. File corruption can result. Use the ICNETD product to share files. 4. Under Linux, if ICRUN and/or ICCONFIG core dump, check to see if ICTERM is set to terminfo. If so, a work around is to, set ICTERM to a valid ICOBOL terminal definition. You can also update the ncurses lib. The problem is that the rev of the ncurses library on that machine is incorrect. It must be at least the ncurses 5 version (which shows up as ncurses.so.4.0). The previous version of ncurses (4.2) shows up as ncurses.so.4.2. (P.S. do not ask us why the rev numbers go backward??). If other ICOBOL programs core dump check your os rev. You need at least Linux kernel 2.2.12 or up to run successfully. 5. Under SCO OpenServer, if the operating system audit facility, auditd, is not being used then make sure that the file located at /tcb/files/audit/audit_dmninfo is removed. More on this can be found by viewing SCO Technical Article #109461. (www.sco.com/ta) 6. Under Red Hat Linux 7.1, the ncurses 5.2 package is shipped. ICOBOL 3.10 and 3.11 were compiled with ncurses 5.0. If you get an error at execution time like: "error while loading shared libraries: libncurses.so.4: cannot load shared object file" Then a link from libncurses.so.4 should be built to libncurses.so.5 as "ln -s libncurses.so.5 libncurses.so.4" in the "/usr/lib" directory. 7. Under Linux, ICOBOL uses lpr to print and lpq to communicate with the Unix print spooler. For example, lpr -P is used to print to the printer . (All other UNIX systems use lp and lpstat). Notes and Warnings under Windows -------------------------------- 1. Serial device default baud rate settings: Under Windows, the runtime uses the last setting for serial devices to set up the default parameters (baud, parity, data, etc.) on an open. The MODE command can be used to perform these settings if needed. This MODE will be remembered until another setting is stored. In addition, extended open options can be used to set the needed values. 2. Interactive COBOL on Windows uses .DLLs to load portions of its needed code. All the .DLL's shipped with Interactive COBOL are dynamically loaded at load time. The following rules apply as to how .DLL are found. A. First the system searches the set of pre-installed DLLs. B. Next, the directory where the executable module for the current process is located is searched. C. The current directory is searched. D. The windows system directory is searched. E. The windows directory is searched. F. The directories in the PATH environment variable are searched. If a specific .DLL cannot be located, the system terminates the process and displays a dialog box that reports the error. The ICOBOL runtime (ICRUN.EXE and ICRUNCGI.EXE) requires the ICRUN.DLL. The ICBLTN.DLL is loaded if found. The SP2.DLL is loaded when required for SP2. The QPR.DLL is loaded when required for FormPrint. ICPERMIT.EXE requires the appropriate Sentinel drivers if a parallel or usb protection device is being used. ICSP2.EXE and ICQPRW.EXE require the UIB.DLL. 3. After installing Interactive COBOL, it's folder (directory) should NOT be renamed. To place the installation in a new directory, you should uninstall and re-install while saving any modified files. If the installation directory is renamed, uninstalling from the Control Panel will not work, certain shortcuts set up by the installation script will not work, and any service entries may not work. 4. When trying to get printing to work under Windows use Notepad to see what printers are available on this machine and if you can print a sample file to that printer. This can be done by starting Notepad and then select File > Page Setup. In Page Setup select printer and then pull-down the name box to see all the valid printer names. These are the names that can be entered into the PCQ device selection in ICCONFIG. Now select the printer to send some test output to and go back to the Notepad screen. Enter some data and then select File > Print. If the data does not print, work with Windows to get it to print before preceeding to ICRUN. ICINFO can also be used to see the default and current printer selections. If after setup, the runtime prints to a printer with no error but no paper comes out of the printer, do the following: A) pause the Windows print spooler, B) re-print the file from the runtime, C) check the Windows print spooler and make sure the file is there, D) if so, that says that ICOBOL did get the data to the Windows printer, now un-pause the printer, E) if the file "prints" and disappears from the screen but no paper comes out of the printer, then this probably means that the printer in its current state does not handle ASCII data. Its running in "GDI" mode. You can confirm this if the printer is connected to a parallel port by going to the local machine with the printer and from the command prompt do a "dir >lpt1". If nothing comes out on the printer then its a GDI printer (or Windows printer). When buying printers, look for MS-DOS support and/or some UNIX support. These indicate that the printer will accept standard ASCII data and not need a special print driver that only works in specific Windows environment(s). 5. When using Printer Control Queues from the runtime, the user must have write access to the Windows spool directory. Under Windows it defaults to "\winnt\system32\spool\printers" or otherwise an access denied (exception 5) is returned when you try to print from the runtime system. 6. After installation, the Interactive COBOL screen will be shown with all the installed shortcuts. This is the best time to change any needed startup parameter by selecting the shortcut and right-clicking to properties. 7. When running ICRUN on a machine that serves up its disks to the network, local files are known as "drive:\directory...\filename". When using the ICOBOL Printer Control Utility, files created on this machine by a local runtime will place these "locally-centric" names into the .pq file. No runtime running on a remote machine will have access to these files. A workaround for simple filenames is to set the ICPCQDIR environment variable to the UNC name of the directory on the local machine where these print files will be stored. In this way, the full UNC name will be stored in the .pq file. I.E., set ICPCQDIR=\\mainmachine\c\prints. 8. Currently, Interactive COBOL handles at most fifteen (15) character usernames. Longer usernames will generate an error box saying: GetUserName failed (Getlasterror ()=122) Change your username to be fifteen (15) characters or less. (Updated in 3.20 to be a Warning and to truncate the username.) 9. If you are using ICOBOL for Windows with a Windows NT machine networked to a Windows NT machine (or any LAN Manager server) then you could be experiencing some database corruption. This can be solved by using the Registry Editor to add/change a certain parameter. Follow the steps below to make the change. WARNING: USING REGISTRY EDITOR INCORRECTLY CAN CAUSE SERIOUS, SYSTEM-WIDE PROBLEMS THAT MAY REQUIRE YOU TO REINSTALL WINDOWS NT TO CORRECT THEM. USE THIS TOOL AT YOUR OWN RISK. !! Only do this on Windows NT machines. !! A. Start the Registry Editor and go to the following subkey: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\LanmanWorkstation\Parameters B. Add or change the following: Value name: UseLockReadUnlock Data Type: REG_DWORD Data: 0 (Default: 1) C. Exit the Registry Editor **** NOTE: The 2.34 and up installation will automatically **** perform this function. 10. If you are using ICOBOL on Windows machines with network interface cards (NICs) that used a shared memory address to communicate with the computer (SMC cards for example) some customers have reported network problems when running these cards in Full Duplex mode. These problems seem to have been cleared up by forcing the cards to Half Duplex mode. This can be done either in the Hub or Switch or by selecting the network card and disabling Auto-Neg. and setting Half Duplex. 11. If specifying COM ports on Windows, COM ports above 9 must be given as \\.\COMx. COM1-9 can also be specified with this format. Also note that most command line programs cannot handle COM10 or greater. (See Microsoft article Q115831 - HOWTO: Specify Serial Ports Larger than COM9) 12. Under Windows, if you get one of the following errors: A. "Initialization of the dynamic library ...\system32\user32.dll failed", B. In the ICEXEC log, you get an exit code 128 when starting a runtime, C. In the ICNETD log, you get an exit code 128 when starting an icnetd surrogate (either icios, icrunrs, or icthins), or D. you just cannot seem to get more than 4-10 runtimes running on serial lines or telnet sessions or ICNETD surrogates logged on, then look at the Microsoft Article ID Q184802 which gives information on updating the registry for a particular value for heap memory. WARNING: USING REGISTRY EDITOR INCORRECTLY CAN CAUSE SERIOUS, SYSTEM-WIDE PROBLEMS THAT MAY REQUIRE YOU TO REINSTALL WINDOWS NT TO CORRECT THEM. USE THIS TOOL AT YOUR OWN RISK. This article describes updating the following subkey under the HKEY_LOCAL_MACHINE subtree: \System\CurrentControlSet\Control\Session Manager\SubSystems\Windows Where there is a "SharedSection=1024,3072" in the data for this value you must replace it with "SharedSection=1024,3072,512". You must reboot for the new value(s) to take effect. The "512" causes each heap allocation to be smaller to keep from overflowing the Windows NT Heap space which is fixed allocated. This value should increase the number of allowed processes. To further increase process count continue to decrease this number to 256 and then 128, if needed. Please read the Microsoft Article Q184802 for more information on this setting. NOTE: ICINFO prints out the value for this registry entry as "NT Heap:" so you can see the setting without starting regedit or regedt32. **** The above registry entry is set with ,512 automatically **** **** when installing ICOBOL on a Windows NT machine if not **** **** already set. **** 13. Under Windows, automatic services must be careful in their use of network files at startup. The following rules must be followed: A. Mapped drive names cannot be used, use a UNC name. (No drive mapping is available to the service manager.) B. A specific username/password must be specified for the service that allows running as a service AND has network access to the remote machine(s). (The default username for a service does not allow remote access of network files.) When doing a client install on a Windows NT machine, this "Service username/password" is prompted for at installation time. C. The service must have a dependency set that prevents it from starting until after the network is available. (In the default case, services are started in basically alphabetical order.) "When doing a client install on a Windows NT machine, these dependencies are set by the install program." ICSVCMGR can be used to set or change the username/password and the dependency settings if needed. This applies to the .lic file for ICPERMIT and the .cfi and .pq files for ICEXEC and to any needed executables. NOTE: Under Windows 2000, services CANNOT use executable files (.EXE, .DLL) stored on a network drive. The error "Access is denied" is reported. 14. Under Windows, when using standard Microsoft networking (I.E., you open files using drive letters that have been mapped to shared drives/directories on another machine) if you experience file corruption then make the following change to the Windows NT registry. Follow the steps below to make the change. WARNING: USING REGISTRY EDITOR INCORRECTLY CAN CAUSE SERIOUS, SYSTEM-WIDE PROBLEMS THAT MAY REQUIRE YOU TO REINSTALL WINDOWS NT TO CORRECT THEM. USE THIS TOOL AT YOUR OWN RISK. !! Only do this on Windows NT machines. !! A. Start the Registry Editor and go to the following subkey: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\LanmanServer\Parameters B. Add or change the following: Value name: EnableOpLocks Data Type: REG_DWORD Data: 0 (Default: 1) (This entry defaults to 1 (True) if no value is specified.) C. Exit the Registry Editor EnableOpLocks specifies whether the server allows clients to use oplocks (opportunistic locking) on files. Oplocks are a performance enhancement, but have the potential to cause lost cached data on some networks, particularly wide-area networks. **** The above registry entry is set automatically when **** **** installing ICOBOL 2.44 or above on a Windows NT machine. **** On a Windows machine only being used as a client, opportunistic locking can be disabled just on that machine as follows. (If you have made the above change to the server machine this change is unnecessary.) Follow the steps below to make the change. WARNING: USING REGISTRY EDITOR INCORRECTLY CAN CAUSE SERIOUS, SYSTEM-WIDE PROBLEMS THAT MAY REQUIRE YOU TO REINSTALL WINDOWS NT TO CORRECT THEM. USE THIS TOOL AT YOUR OWN RISK. !! Only do this on Windows NT machines. !! A. Start the Registry Editor and go to the following subkey: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\LanmanWorkstation\Parameters B. Add or change the following: Value name: UseOpportunisticLocking Data Type: REG_DWORD Data: 0 (Default: 1) (This entry defaults to 1 (True) if no value is specified.) C. Exit the Registry Editor UseOpportunisticLocking specifies whether the workstation redirector should use opportunistic-locking (oplock) performance enhancement. ICINFO has been updated to show these values under Windows. More information on this can be found by reading Microsoft Articles Q129202 or Q102967. 15. Under Windows, if an environment variable (like ICROOT) is placed in the system environment then if you change its value you must remember to re-boot to allow all the processes (especially the service manager) to see the change. This is especially true if ICROOT was placed in the system environment and then a new revision is loaded into a different directory. NOTE: Setting ICROOT in the system environment is generally not recommended as it is always available from the registry entry set by the ICOBOL installation for all ICOBOL executables. 16. Under Windows Terminal Server edition, we recommend doing a full install (either server or local) and to place the configuration and printer control queue files locally. If you do not follow the above then the following may be required: A. You may need to run the REGISTER command with the /SYSTEM option on the icexec.exe executable if you get an error when starting the runtime about no shared area when logged in using Terminal Server Clients but the runtime works when run from the master console. For example: REGISTER ICEXEC.EXE /SYSTEM B. Services may not start and give a error code 4 in the Event Log. If this is true and the username/password option was prompted for in the ICOBOL install then the Audit directory for the services is set to a Read-Only directory for this username. Either use ICSVCMGR or REGEDIT to change the command line to the particular service to may the Audit directory a different directory. Generally we recommend setting it the system directory (usually "C:\WINNT"). Windows Terminal Server is a good platform for ICOBOL since the applications actually run on the server and only the screen/keyboard is run on the client. 17. Performance Hints on a network. A. Set ICTMPDIR to a local directory. B. If using a link file, make the link file local. C. If using a library file, make the library file local. D. Use ICNETD to access remote files. E. If possible, open a file EXCLUSIVELY, it will process much, much faster as local buffering will be performed. 18. Under Windows, when doing a client install, if the error "Unable to start runtime executive service is given" then ICEXEC was installed as a service but it could not start. See the Event log for more specifics but in most cases it will be that the username/password given on the client machine does not match that on the server. 19. If the ICOBOL User Library is being used, the icuser.dll or icusers.dll that the application program uses must be kept in sync with the released version of ICOBOL installed on the machine. This can be done by manually copying the appropriate icuser.dll or icusers.dll from the icobol\user_lib release directory into the application's release directory replacing the one already there. This is especially needed if the shared area changes from one revision to the next. 20. Under Windows 2000 Server editions, if the Terminal Services package is installed then use of the "Change User /INSTALL" command may be required before doing an ICOBOL install. This allows files to be placed in the correct Windows system directories. Return the system to the correct mode by doing a "Change User /Execute". To check to see what mode the system is in you can do a "Change User/Query". If you do not follow the above then the following may result: A. Services may not start and give a error code 4 in the Event Log. If this is true then the Audit directory for the services is set to a Read-Only directory. Either use ICSVCMGR or REGEDIT to change the command line to the particular service to make the Audit directory a different directory. Generally we recommend setting it to the system directory (usually "C:\WINNT"). OR uninstall and re-install after executing the "Change User /Install" command. Windows 2000/Terminal Server is a good platform for ICOBOL since the applications actually run on the server and only the screen/keyboard is run on the client. 21. Entering characters above decimal 127 with the ALT key. To input characters that are not on your keyboard. Press and hold the ALT key, and then press the keys on the numeric keypad that represent the decimal code value of the character you want to input. After you finish typing, release the ALT key. Windows generates the character you specified. Note: If the first digit you type is 0, the value is recognized as a code point, or character value, in the current input language. For example, when your current input language is US-English (Code page 1252: Windows Latin-1), pressing ALT and then typing 0163 on the numeric keypad produces £, the pound sign (U+00A3). When your current input language is Russia (code page 1251: Windows Cyrillic), the same key sequence produces the Cyrillic capital letter JE (U+0408). If the first digit you type is any number from 1 through 9, the value is recognized as a code point in the system's OEM code page. The result differs depending on the Windows system language specified in Regional and Language Options in Control Panel. For example, if your system language is English (US), the code page is 437 (MS-DOS Latin US), so pressing ALT and then typing 163 on the numeric keypad produces ú (U+00FA, Latin lowercase letter U with acute). If your system language is Greek (OEM code page 737 MS-DOS Greek), the same sequence produces the Greek lowercase letter MU (U+03BC). Helpful Hints under UNIX ------------------------ 1. When using network connections (ICNETD to ICIOS, ICTHINS, ICRUNRS, or telnet), TCP/IP Keepalives are used to detect client/server unexpected terminations. Each side of a connection will use its Keepalive time to determine when to start querying the other. NOTE: Most TCP/IP implementations default to 2 hours (7200 seconds) before the first keepalive is sent and then it generally takes 10 minutes before the connection is closed. For more information on Keepalives please see your operating system documentation. Under SCO, the default values are stored in the file /etc/default/inet and are used by inconfig at system startup. (tcp_keepidle) Under HP-UX, the default values are stored in the kernel using the configuration file netinet/tcp_timer.h. Under DG/UX, the file /etc/tcpip.params can be used to set these values on system startup. (tcp_keepalive) Under AIX, the command no can be used to display and change these values. (tcp_keepidle) Under Linux, the default values can be set in the directory /proc/sys/net/ipv4. (File tcp_keepalive_time). Under UNIXWARE, the default values can be set by the command inconfig in the file /etc/inet/inet.dfl. (tcp_keepidle) 2. In the default case, ICPERMIT and ICNETD use TCP to communicate to other processes via a TCP port (7334 or 7333). In these cases sometimes when the service is terminated it will take some time before the service can be re-started even though no processes are using that port. This is happening because of a TIME_WAIT state in the TCP implementation after a CLOSE. The default time on many systems for this action is 4 minutes (240 seconds). The smallest we would recommend is 30 seconds. This parameter is usually called tcp_2msl and may reference RFC 793. To stop and restart ICPERMIT and/or ICNETD faster, the defaults can be changed via the following: Under SCO, the default values are stored in the file /etc/default/inet and are read by inconfig at system startup. (tcp_2msl) Under HP-UX, the default values are stored in the kernel using the configuration file netinet/tcp_timer.h. Under AIX, the command no can be used to display and change these values. (tcp_timewait) Under Linux, the default values can be set in the directory /proc/sys/net/ipv4. (File tcp_fin_timeout). Under UNIXWARE, the default values can be set by the command inconfig in the file /etc/inet/inet.dfl. (tcp_2msl) 3. The TELL_SEM program has been provided as a tool to detect usage of semaphores by Interactive COBOL. TELL_SEM displays the semaphore key along with the last user (PID) who used the semaphore, how many users are waiting and its value. It then tries to get each semaphore, if it cannot get a particular semaphore then Interactive COBOL could be hung. Rerun TELL_SEM and if the last user (PID) is still the same then unless the machine is running VERY slowly Interactive COBOL is probably hung. In this case a kill (I.E., a kill -15 pid) should be done on the pid displayed for that semaphore to unhang the system. Rerun TELL_SEM and if it still shows that same pid then try several more kills (kill -15 pid), and then finally a (kill -9 pid). The (kill -9) should ONLY be done after at least three (kill -15)'s have been done. The (kill -9) WILL free the semaphore. Starting in 3.33 TELL_SEM will try to detect whether a semaphore is really hung by a single pid or the machine is just running very slow. A message will be given if the machine is just running slow. Any hangs that occur, in which TELL_SEM is used to help kill a job, should be reported to your supplier or ENVYR Corporation. Under Windows, ICINFO (3.41 and up) can provide some of this information. Helpful Hints under Windows --------------------------- 1. When using network connections (ICNETD to ICIOS, ICTHINS, ICRUNRS, or telnet), TCP/IP Keepalives are used to detect client/server unexpected terminations. Each side of a connection will use its Keepalive time to determine when to start querying the other. NOTE: Most TCP/IP implementations default to 2 hours(7200 seconds) before the first keepalive is sent and then it generally takes 10 minutes before the connection is closed. For more information on Keepalives please see your operating system documentation. Under Windows, these values must be set in the registry as: Hkey_Local_Machine\System\CurrentControlSet\Services\TCPIP\Parameters Value KeepAliveTime (in milliseconds) default: 7200000 (2 hours). (Dword) See Microsoft Articles ID Q120642, Q140325 for more information. Under Windows, ICINFO will report this value. 2. Under Windows, if serial lines are being used to run COBOL programs you cannot push to CMD.EXE. An error 128 is returned. You can push to CMD.EXE and execute a command or .bat file that does not require input and sends all its output to a listing file. For example, the command "cmd /c dir >lll" will execute the "dir" command sending its output to the file "lll" and returning to the COBOL program. We will continue to investigate running the command processor on serial lines but we currently do not know of a mechanism to allow input and output to come from the serial lines directly into the command processor. In addition, you must be careful when pushing off from serial lines in that you do not start a GUI program that requires input since there is no desktop that is available to allow for input. If this happens you will need to terminate that process from the Task Manager. 3. Under Windows, to open a network printer you can use redirected LPT ports. I.E., a "NET USE LPT9 \\machine\printer" can be done and then LPT9 can be entered as the device name for an @PRN or @SER logical device. When using shared printers in this fashion remember that they are no longer "DIRECTLY CONNECTED". There will be some buffering and/or queueing that is done by the sharing entity that will cause WRITEs to the device to act differently that a real direct connect (like a serial or parallel port that physically resides in the current machine.) In most cases a CLOSE must be done to the device to ensure that all data has been written. Also in some cases an implicit CLOSE will be done automatically (not by ICOBOL) but by the sharing entity if there is no activity for some time period (like a minute) on that file. This is done to ensure that remote processes will not tie up a network resource. 4. Under Windows, after installation, to change the username/password value for any configured services you must use the ICSVCMGR utility (either command line or GUI). You CANNOT do an upgrade as it will NOT prompt for a new username/password. 5. Under Windows, when using a modem connected to a serial line, use the fastest (56K) baud setting for the COM port. Using slower baud settings tend to cause the connection to terminate. 6. When using ICNETD ON WINDOWS 2000 with ACTIVE DIRECTORY. If ICNETD is running on a Windows 2000 server that is using Active Directory. If using thick clients (ICRUN, ICODBC) causing ICIOS surrogates to be invoked, then those users must have the "log on as a batch job" privilege assigned to them. If using ThinClients (ICRUNRC, ICTHINC) causing ICRUNRS or ICTHINS servers to be invoked, then those users must have the "log on locally" privilege assigned to them. These can be set under the Domain Security policy object. However, if the Windows 2000 server is also a domain controller, then you need to assign the privilege under the Domain Controller Security policy object. Please note that it usually takes some time for any new privileges to take affect unless a re-boot is performed. 7. If you wish to use mail under Windows a good command-line mailer is a Freeware product called BLAT. Just go out on the internet and search for "blat". You can call blat.exe from a COBOL program passing all the information you need to send an email, even including attachments! 8. Starting in 3.41, the ICINFO program can be used to detect usage of semaphores by Interactive COBOL. ICINFO will display whether it can acquire each of the semaphore's that are used. If it cannot acquire a particular semaphore then Interactive COBOL could be hung. Rerun ICINFO at least one more time to give the semaphore a chance to clear. Any hangs that occur in which icinfo reports a hang should be reported to your supplier or ENVYR Corporation. 9. With the release of Microsoft's Windows Services for UNIX 3.5 (SFU) and the inclusion of the telnet server in Windows XP, telneting into a Windows machine using just Microsoft components is easier. If you are coming from another Windows machine using the standard Microsoft telnet then you probably want to run both the client and the server in "Console" mode. This will be like the "Advanced" mode documented under ICEXEC. If you are using another telnet client or coming from a UNIX machine then you probably want to run the telnet server in "Stream" mode. In this case the telnet server does no interpretation on the data stream, it is like the "Simple" mode documented under ICEXEC and it requires that ICTERM be set to the appropriate terminal type for ICRUN. You must also set up some special environment variables to "trick" the runtime into detecting this mode since it cannot be detected normally. Set an environment variable "REMOTEADDRESS=xxxx" and then make sure the environment variable TERM is set before calling the runtime. 10. Under Windows, specific user environment variables can be created that will be available each time that user logs on. With Windows 2000 and up, these can be set by selecting "Control Panel" -> "System" -> "Advanced" tab -> and then selecting "Environment Variables". The "User variables for ", allows specific environment variables to be set for a particular users. For example ICRUNDIR=\home\mary, etc. . These environment varibles will be set each time that user logs on. The system environment variables can also be seen in this screen. Installation Planning for Windows --------------------------------- 16-bit Windows (Windows 3.x) is NOT supported. A. Single machine. (Simplest case) Install the software Configure the software Run B. Multiple machines. Is one machine going to be a server for executables, licenses, or data? Having one license server is much easier to support. Yes. Server ------ Install the software using the server option Configure the software Run Server and Client ----------------- To do Windows client installs, make sure that the Windows client machine has a profile (username/password) that has the correct privileges to start services on the client machine and has the privilege to use files on the server machine. The privileges needed on the client: a) Act as Part of the operating system, b) Debug programs, c) Increase quotas, d) Log on as a service, and e) Replace a process level token. The privileges needed on the server: a) Access the computer from the network. Client ------ Now install the software (network option) on each client. Configure the software. Each machine should have a separate configuration file although all the configuration files could reside on the server machine with unique names for ease of support. Having separate configuration files allows for only those consoles enabled for a particular machine (this allows for unique terminal numbers across a network). It also allows for any machine differences (parallel ports, serial ports, printer names, different logical device defaults, etc.) to be taken into account. Run Repeat above Client for all clients. Frequently asked questions under Windows ----------------------------------------- 1. How do I have unique terminal numbers across the network? There is no automatic way of enforcing unique terminal numbers across a network. On a single Windows machine, ICEXEC controls providing unique terminal numbers on that ONE machine. Currently the only way to provide unique terminal numbers across the network with multiple machines running ICOBOL is to have different configuration files for each machine with different (unique) consoles enabled for each configuration. These configuration files could all reside on one machine for ease of maintenance. 2. How do I see other runtimes on the network, they do not show up in my Terminal Status screen? Currently the only way to see other runtimes is on a single Windows machine where ICEXEC has created a shared area that all runtimes use. The Terminal Status screen uses this shared area to show the information on the runtimes in use. 3. When I run under ICOBOL/Windows, my I/O seems a lot slower than when I was running under ICOBOL/MS-DOS. ICOBOL/Windows always runs in network mode. There is no "Multi-user" runtime like ICRUN/MS-DOS that provides multi-user support with serial terminals in a single process. If ICOBOL/MS-DOS was configured with network support disabled, the runtime could do all the disk buffering in its space without using the operating system. This provided for very fast I/O but NO sharing of files between processes. The Windows environment is always running in network mode. ICOBOL always assumes (unless opened explicitly with the EXCLUSIVE option) that all files can be shared with other processes. This requires that ICOBOL must always flush its buffers to the operating system after all updates and re-load its buffers from the operating system at the start of any operation to get any "new" data. This is very expensive and contributes to slower I/O. 4. What does ICNETD do for me? Normally when the COBOL program accesses data over a network using standard Microsoft networking, disk blocks must be moved back and forth to allow the runtime on a client machine to get at the needed data from the server. This implies much network traffic. By running the ICNETD server on the server machine and using a client open (like "@\\machine\c:\mydata\file87") to open the file, only record requests and responses are sent over the network greatly cutting down on network traffic. In most cases, this provides a performance boost to the whole network and particularly to the COBOL application. The drawback to this approach is that OPEN's to files that have just been closed are slower. NOTE: ICLINK can be used to map simple names to client open type names. 5. What does the IC ODBC driver do for me? The IC ODBC driver allows you to use standard personal productivity tools like Crystal Reports, etc. to access (and optionally modify) data from ICISAM files. 6. What does the sp2 package do for me? The sp2 product allows for GUI screen development. A particular window (panel) can be developed and then COBOL source can be generated to be included in COBOL programs to allow for access to the GUI screen under the Windows environment. 7. What does the FormPrint package do for me? The FormPrint product allows for GUI-type print forms to be developed, much like the screen GUI's developed by the SP2 product but with no keyboard/mouse interaction. With FormPrint, the COBOL programmer has total control of how the data will be presented on the printer device. 8. What is Windows Terminal Server edition? Windows Terminal Server edition is a special package of Windows Server along with a special "Terminal" package that allows client logins from "Client Sessions" running on Windows 3.1, Windows 9X, and other Windows machines. These sessions actually run the programs on the Windows Terminal Server machine with only the screen part being reflected out to the client. This provides multi-user operation of the base machine just like UNIX machines. The network and/or serial connection is only used to send compressed screen data to the client and receive keyboard/mouse data from the client. All disk I/O is done at machine/memory speeds on the base machine. In addition, WinTerms (a fancy dumb terminal or a very simple pc, depending on how you look at it) can also be used as a client. Also a company by the name of Citrix makes additional add-ons that allow UNIX clients among others to be added. Terminal Services is included as part of Windows 2000 Server editions for no extra charge. 9. Under Windows, when using Event Viewer to view the System Log there are messages by the Service Control Manager about the ICOBOL services (icexec, icpermit, icnetd), what do they mean? In the event log if there is a message like: "The icnetd service terminated with service-specific error 6." or "The icexec service failed to start due to service-specific error 6." The service-specific error is the exit code from that executable. Exit codes are documented in the Installing and Configuring on Windows Manual in the Introduction chapter. Also in most cases there should a log file (icexec.lg, icpermit.lg, or icnetd.lg) in the system directory (usually "C:\WINNT") that gives the specific error message. If there is a message like: "The icexec service failed to start due to the following error: The service did not start due to a login failure." Then you need to look at the next message in the event log. It should be the actual logon error. It should tell you that the username that you were using does not have the appropriate privilege setting. Please check that the username has the needed privileges on this machine and on any network machine that it is trying to access. Revision 3.0x Changes and New Features Changes and New features in 3.03 -------------------------------- 1. The use of the global symbol file (.gsy) by the compiler (ICOBOL) and debugger has been removed. The compiler will only build individual symbol files (.sy) and the debugger will only need individual symbol files. The meaning of the -Z switch has been changed for both the compiler and debugger. In the compiler, the "-Z dir" switch will specify that symbol files should be generated and placed in the directory as .sy. To generate symbol files in the working directory use "-Z .". In the debugger, the "-Z dir" switch will specify where the debugger should look for symbol files for each program that is to be loaded. If not specified, the debugger looks in the current directory. All symbol files must be re-built. Only symbol files from 3.03 and up will be loaded. All .gsy files can be removed. 2. The prompt " Press any key to continue... " used by the builtins SD_MESSAGE, SD_ERROR_MESSAGE, and SD_MESSAGE_ONLY comes from the system message file (system.ms). Similarly the prompt, " to select " used by the SD_POP_UP_MENU and SD_POP_UP_MENU2 builtins comes from the system message file. The text is found in the file runerrs.txt (messages 308 and 309) and may be altered as needed. 3. The following have been added as reserved words for the ICOBOL and ICOBOL85 dialects: BACKGROUND, BEEP, FOREGROUND, and MINUS. If these words are used as identifiers they must be changed to a word which is not reserved. 4. The compiler (ICOBOL) supports a new command line option: -G e. This option is used to invoke ISO screen behavior. This option is useful when migrating to ICOBOL from certain other COBOL products. When specified on the compilation, runtime behavior is altered as follows: (1) BLANK LINE erases the entire line, (2) ERASE LINE erases from the cursor to the end of the line, and (3) ERASE SCREEN erases from the cursor to the end of the screen. 5. The -I command line option from the compiler (ICOBOL) has changed. The -I p option includes only the PC in the listing file. The -I m option will include the metacode in the listing file. Changes and New features in 3.02 -------------------------------- 1. ICREORG has been enhanced such that the output-argument is optional. If not specified, standard out is used and the Output type is set to line-sequential and the line size defaults to the record size of the input. Warning: Make sure that only printable characters are sent to the output. 2. Under Windows, the ICSP2 and ICQPRW products have been upgraded to the Flexus version 4 products. See the readsp2.txt file for more information. Changes and New features in 3.01 -------------------------------- 1. The default configuration files produced by ICCONFIG and ICEDCFW enable PCQ0 with an empty device for all target environments except MS-DOS. This results in the selection of the default printer as PCQ0. 2. Two new builtin functions have been added. These are IC_QUEUE_LIST which retrieves a snapshot of the information contained in the printer control queues, and IC_QUEUE_OPERATION which enables a program to perform printer control operations using the information retrieved. These builtin functions are provided to enable users to create custom versions of the Printer Control Utility as COBOL programs. In particular, it enables the creation of GUI programs using sp2. 3. The command line (non-GUI) debugger, ICDEB, is included and the compiler (ICOBOL) can generate files for its use. Use the -Z switch to the compiler and debugger to provide a name for the global symbol table. The -Z path switch specifies that the compiler should generate symbol files (.sy) for each source compiled and a single global symbol file (path.gsy) for use by the debugger. This global symbol file is used to allow the debugger to find the needed sources for debugging. See the Language Reference & Developer's Guide for more information. ****(Changed in 3.03. See 3.03 Changes for more detail.)**** ****(Changed in 3.10. See 3.10 Changes for more detail.)**** 4. The Language Reference & Developer's Guide (3.01) has been updated with the above two additions (builtins and debugger) along with documentation on the ICODBC Driver. 5. Under Windows, a new sample program, pcqutil, has been included that uses SP2 to present a GUI version of the Printer Control Utility. This sample uses the two new builtins (IC_QUEUE_LIST and IC_QUEUE_OPERATION). The .cx file (pcqutil.cx) and its needed panel file (pcqutil.pan) are provided in the executable directory. The sample source is in the examples directory. An ICSP2RUN license must be present to run the example program. 6. Instructions for allowing simultaneous use of ICOBOL Rev 3.01 and ICOBOL 2.65 have been included in the document readinst.txt which is found on the release media. 7. The compiler (ICOBOL) no longer supports the -N a (No apostrophe) switch. The apostrophe may always be used as the delimiter of a non-numeric or hexadecimal literal. 8. When ICEXEC terminates it will list all open files and whether they have been modified. It will also attempt to clear all ISAM reliability bits on ICISAM files if possible when it detects that processes with open ICISAM files unexpectedly terminate. 9. ICNETD allows tracing for the daemon(server) and the surrogates to be selectively enabled. From the command line the -O a and -O m operations will do the daemon and the -O b and -O h (hush) will do the surrogate. See the ICNETD help for more information. 10. Under Windows, ICOBOL selectively will use an enhanced locking call when doing file locks. When running multi-user over a network this should provide a slight performance improvement. ICINFO has been enhanced to perform this new lock call and report an error if the call (LockFileEx) does not work in some fashion. This should be used if possible to re-configure that server to allow for the call to be used. Changes and New features in 3.00 -------------------------------- ********** IMPORTANT. WINDOWS ICNETD USERS ********** ********** READ #1 BELOW ********** 1. Under Windows, when ICNETD started ICNETS processes for remote users it previously (ICOBOL 2.63 and before) used a logon option that did not allow access to remote files or even to files on the local machine using a UNC name. After much debate we have decided to change this behavior to allow remote file access and the use of a local UNC name. ICNETD will start ICNETS processes with the LOGON_BATCH logon option. THIS WILL REQUIRE THAT ALL USER PROFILES ON THE ICNETD SERVER MACHINE THAT WILL USE ICNETD MUST HAVE THE "log on as a batch job" USER RIGHT. See ***** Important Upgrade Information at the top of this readme for more information. ********************************************************************* **** See the Enhancements section of th Language Reference and **** **** Developer's Guide for a complete list of language changes. **** 2. ICOBOL Rev 3.00 supports 3 language dialects: (1) ICOBOL (-D ic or no -D on the compiler) This is the fundamental dialect. It is consistent with traditional ICOBOL. It uses ANSI-74 file status codes and file handling semantics (2) ICOBOL85 (-D 85 on the compiler) This is the stricter ANSI-85 dialect. It is consistent with ICOBOL 2 code compiled with the -M 85 option. It uses ANSI-85 file status codes and file handling semantics (3) VXCOBOL (-D vx on the compiler) This dialect is consistent with the syntax and semantics used by Data General AOS/VS COBOL and by ENVYR's VXCOBOL. Unless explicitly specified differently, the new language (syntax) features apply to both the ICOBOL and ICOBOL85 dialects, but not to the VXCOBOL dialect. General enhancements apply to all three. 3. The metacode format of ICOBOL 3.00 is completely different from that used in previous versions. This metacode change is reflected by a new .cx revision, revision 5. ICOBOL 3.00 will NOT run the .cx files from any previous revision nor can those files be upgraded. The only way to obtain .cx files to execute under ICOBOL 3.00 is by compiling directly from source using an ICOBOL 3 compiler. Sequential and ICISAM files can be moved between revisions of ICOBOL without problems. 4. The following new reserved words have been introduced for the ICOBOL and ICOBOL85 dialects: DATA-SENSITIVE, ECHO, FUNCTION, YYYYDDD and YYYYMMDD 5. Many of the runtime and compiler switches have changed. Please see the help files for these programs as well as the appropriate sections in the Language Reference & Developer's Guide. 6. The interface to user-defined builtin functions has changed. See the samples in the link_kit directory for details. 7. The single quote may always be used as a string delimiter without the need for a special compiler option. 8. Data-sensitive files may have records up to 2048 bytes including the delimiter(s). 9. The VXCOBOL dialect has been enhanced to include hexadecimal literals. Numeric literals are of the form H"digits" where there are from 1 to 8 hexadecimal digits. Alphanumeric literals are of the form X"digits" where there are up to 160 hexadecimal digits which are taken in pairs to define the value of each byte. (Odd digit counts assume a leading zero to ensure an even number of bytes.) 10. The compiler (ICOBOL) no longer supports the 'old reserved words' option (formerly -G o). If identifiers conflict with any of the current reserved words then the source program will need to be edited and the those identifiers changed to names which will not conflict. 11. Items with USAGE INDEX require 4-bytes of storage. In ICOBOL 2, these items required only 2-bytes. If USAGE INDEX items have been included in data files, these files will have to be reorganized to allow for 4 rather than 2 bytes for each USAGE INDEX item. 12. Size error conditions for COMP-5 data items are based on the allocated storage rather than the number of digits in the item's picture. 13. The ICMAKEDB utility has been consolidated into the compiler (ICOBOL). 14. ICMAKECX, ICSIZECX, and ICSWAP are no longer supported utilities. 15. The ICXREF utility has been consolidated into the compiler (ICOBOL). 16. The compiler will now enforce not allowing an OPEN INPUT on a file with an ASSIGN TO PRINTER. (This option was useful for checking for file existence.) A workaround is to have a duplicate file descriptor as an ASSIGN TO KEYBOARD with the same record, name, file status etc. and use it in the OPEN INPUT. 17. For ICOBOL 2 users, the COMPUTE statement no longer truncates immediate results so results in COMPUTE statements should be more accurate as required by the standard. Revision 3.0x Bug Fixes Bug fixes in 3.03 ----------------- 1. Under Windows, if ICEXEC was started with NO consoles enabled, ICEXEC would crash. 2. When the figurative constants ZERO, ZEROS, or ZEROES were used in a Screen Section FROM clause, the runtime system would report an internal system error. If this occurs, recompile the program with the Revision 3.03 compiler. (NOTE: Figurative constants of class alphanumeric which should be repeated when used with a FROM lit clause currently appear as only one occurrence. This will be corrected when support for code rev 2 is released.) 3. When opening the library file, the runtime system will use a handle that allows for the ICEXEC process to clean up open files if the runtime unexpectedly terminates. This will allow for the library file to be updated without terminating ICEXEC. 4. When using the VXCOBOL dialect, the compiler (ICOBOL) would generate bad code when a section without an initial paragraph was used in a PERFORM statement or as the INPUT PROCEDURE or OUTPUT PROCEDURE of a SORT or MERGE statement. 5. When executing a program compiled with the VXCOBOL (-D vx) dialect, PRINTER files were being processed by the printer control subsystem. PRINTER files should only be processed by printer control subsystem if the executing program was compiled with either the ICOBOL74 (-D ic) or ICOBOL85 (-D 85) dialects. 6. The compiler (ICOBOL) would generate an internal compiler error when performing a cross reference on VXCOBOL programs that included statements with INFOS positioning phrases. 7. Under Windows 2000, the IC_WINDOWS_MSG_BOX builtin was causing a system event to be generated. 8. Under Windows, when using the IC_WINDOWS_SHOW_CONSOLE builtin with the value 1 (Hide), if the runtime halted for some reason the window would not be un-hidden. This is fixed such that use of the debugger or any message being written to the "hidden" window will cause the "hidden" window to be un-hidden. In the debugger, the window will be re-hidden if you continue in the program. 9. The compilation limit for the number of MOVE CORRESPONDING items was incorrectly set at less than 126. 10. The compiler (ICOBOL) was generating improper code for the statement "ADD id-lit-1, id-lit-2, ... TO id-1" in the case where there were exactly two occurrences of id-lit-n and no ON SIZE ERROR clause was present. All programs which use this construct should be recompiled. Please re-compile. 11. The debugger could generate a "No more files may be opened" error when trying to open a source file to be displayed. 12. When the -Z option was selected on the compiler while compiling a VXCOBOL dialect source with the clause "RECORD LENGTH IS literal" specified in the FD for any file, then the compile would terminate with a fatal error. The following message was produced: "Fatal: Internal system error: opnd_to_dsym:1". 13. Under UNIX, the runtime system (and other ICOBOL executables) will ignore a SIGHUP signal received while the processing of one is already in progress rather than immediately terminating. This problem was fixed in 2.22 but was accidentally reintroduced in revision 2.62. 14. When ICEXEC was cleaning up open file handles it could have skipped files opened multiple times in the same process. Bug fixes in 3.02 ----------------- 1. Under UNIX, when using the DELETE or UNDELETE statements on a U/FOS file, the runtime system will no longer core dump. 2. Under Windows, ICDEB will no longer core dump when used at the command prompt within Windows with large line or column values. Specifically, it will not core dump in the default command box on Windows 2000. 3. The compiler (ICOBOL) was not allocating storage for a variable used only in an ACCEPT id FROM EXCEPTION STATUS statement and not referenced in any other statement. This would cause the runtime to crash. Please re-compile. 4. ICDEB would sometimes give "symbol file could not be found" while debugging and the symbol file was available. 5. Under Windows, the runtime would not correctly handle terminating or cancelling a print job. 6. Comparisons of the figurative constants HIGH-VALUES or LOW-VALUES with an integer data-item were not returning proper results. (NOTE: This construct is not recommended -- such comparisons should be against alphanumeric data items.) ****Programs using this construct should be re-compiled to **** insure that proper results are returned. 7. (.01) ICCONFIG in certain menus (COM Devices with MS-DOS, Master Console menu) was causing certain Yes flags to be set to No at all times. 8. (.01) The example pcqutil has been updated to use a fixed Courier font to view print files. Bug fixes in 3.01 ----------------- 1. Under Windows, for certain values of ICLINES and ICCOLUMNS, the runtime system would report the message "Error: Invalid Parameter (oserr=87): SetConsoleWindowInfo" while trying to restore the original window size during shutdown. 2. When the -G d compiler option was used, debug lines not contained in copy files were treated as comments rather than being processed. 3. The HIGHEST-ALGEBRAIC and LOWEST-ALGEBRAIC intrinsic functions return values for COMP-5 items, based on storage rather than picture. The values returned for COMP items of length 7 or 8 bytes have been fixed to accurately reflect a maximum or minimum value. 4. On Windows, fields with FOREGROUND-COLOR BLACK and BACKGROUND-COLOR BLACK were not properly displayed. 5. When only one of FOREGROUND-COLOR or BACKGROUND-COLOR was defaulted, the color used for the default was incorrect. 6. Under Windows, the indexed library (link_kit) was not properly using seat licensing. 7. Under UNIXWARE, access to ICNETD from the runtime was not working. 8. When using the user library, access to client/server (ICNETD) was not working. 9. The IC_EXTRACT_STRING, IC_INSERT_STRING, and IC_MOVE_STRING builtins were being more restrictive on the string parameters than in ICOBOL 2 causing parameter mismatch errors. These have been fixed. NOTE: ICOBOL 3 handles parameters to builtins differently than ICOBOL 2. Programs should have exception handling for builtin calls to detect errors. Any differences between ICOBOL 2 and ICOBOL 3 should be reported. 10. When ICEXEC detected that a process had gone away with open ICISAM files it did not always get the reliability bits cleared. CONTACT INFORMATION ENVYR Corporation Sales Phone: US (800) 645-9891 International: (919) 851-2839 Email: sales@icobol.com Support Phone: (919) 851-2832 (requires a Valid Support Contract) Email: support@icobol.com Fax: (919) 851-4609 Web: www.icobol.com FTP: ftp.icobol.com Mail: ENVYR Corporation 4904 Waters Edge Drive, Suite 160 Raleigh, NC 27606 U.S.A. Systems Support Form Date: ____/____/____ From Contract Number: __________ ---- Contact: ________________________ Phone: ____________ Company: ________________________ FAX: ____________ Address: ________________________ Timezone: ___ ________________________ City: ________________________ State/Province: ___________________ ZIP/Postal Code: _______ Country: ________________________ Product and Revision: ____________________________ Machine Configuration: Type: ______________ Model: ____________ Vendor: __________ OS: ______________ OS ver: ____________ Problem/Suggestion: (Describe as fully as possible. If a COBOL problem, a sample of code that generates the error would be appreciated.) End of Readic