Windows FAQ
- How does ICOBOL under Windows handle .DLLs?
- Once I have finished installing, can I rename the ICOBOL folder?
- How long can a username be?
- I keep seeing exit code 128 in my icexec.lg or icnetd.lg files. What do these mean?
- When I change an environment entry, the Runtime does not seem to see the change. Why is this?
- When I try to print, I keep getting an invalid parameter error (oserr=87)? What causes this?
- What is Windows Terminal Server edition?
- Under Windows, when viewing the System Log using the Event Viewer, I see messages from the Service Control Manager about the ICOBOL services (ICEXEC, ICPERMIT, ICNETD). What do these messages mean?
- How much disk space does the ICOBOL product for Windows require?
- When I try to bring up ICEXEC under Windows, I get a "Must be running as service" message. What does this mean?
- Is there a way to do a scripted installation of ICOBOL?
- Do I need to increase the value of any System Parameter entries in ICCONFIG?
- How can I have unique terminal numbers on a Windows network?
- Can I use a redirected LPT port to open a network printer?
- What device name should I use for an @PCQ in ICCONFIG?
- How does ICOBOL handle the default settings for serial devices?
How does ICOBOL under Windows handle
.DLLs?
ICOBOL on Windows uses .DLLs to load portions of its code.
The following rules are applied in the order indicated below
to find .DLLs:
- The system searches the set of pre-installed .DLLs.
- The directory where the executable module for the current process is located is searched.
- The current directory is searched.
- The Windows system directory is searched.
- The Windows directory is searched.
- 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 reporting the error.
Almost every ICOBOL executable requires ICSYS.DLL and the Microsft Visual C Runtime DLLs (MSVCRTxx).
The ICOBOL Runtime requires the ICRUN.DLL. The runtime loads the ICBLTN.DLL if it is found. The SP2.DLL is loaded when required for SP2. The QPR.DLL is loaded when required for FormPrint.
ICIDE and ICEDCFW require the Microsoft Foundation Classes .DLLs (MFCxxx)
ICIDE requires additional .DLLs (icoe*, icot*, icsfl*).
ICPERMIT.EXE requires the appropriate Rainbow Sentinel .DLLs if a parallel or USB protection device is being used. ICSP2.EXE and ICQPRW.EXE require the UIB.DLL.
Once I have finished installing,
can I rename the ICOBOL folder?
No, the folder (directory) should not be renamed. To place the
installation in a new directory, you should uninstall and
re-install, making sure that you save 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 services will not work.
How long can a username be?
Currently, ICOBOL handles usernames of up to fifteen (15)
characters. Longer usernames will generate a warning and the name will be
truncated to 15 characters.
Change your username to be fifteen (15) characters or less.
I keep seeing exit code 128 in my
icexec.lg or icnetd.lg files. What do these mean?
Under Windows, if you encounter one of the following
situations:
- "Initialization of the dynamic library ...\system32\user32.dll failed"
- In the ICEXEC log, you get an exit code 128 when starting a runtime,
- In the ICNETD log, you get an exit code 128 when starting a surrogate
- You cannot seem to get more than 4-10 Runtimes active on serial lines or telnet sessions or icnetd surrogates logged on
Look at Microsoft Article ID Q184802, which provides information on updating the registry for a particular value for heap memory.
WARNING: USING THE REGISTRY EDITOR INCORRECTLY CAN CAUSE SERIOUS, SYSTEM-WIDE PROBLEMS THAT MAY REQUIRE YOU TO REINSTALL WINDOWS TO CORRECT THEM. USE THIS TOOL AT YOUR OWN RISK.
The Microsoft 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 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 refer to 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.
When I change an environment
entry, the Runtime does not seem to see the change. Why is this?
Under Windows, if an environment entry, such as ICROOT,
is placed in the system environment, then you must remember to
reboot after changing the value in order for the change to take
effect in all processes (and especially in the service manager).
Rebooting is especially important if ICROOT was placed in the
system environment, and then a new revision was loaded into a
different directory.
Note: Placement of ICROOT in the system environment generally is not recommended because it is always available from the registry entry set by the ICOBOL installation process for all ICOBOL executables.
When I try to print, I keep getting
an invalid parameter error (oserr=87). What causes this?
First, check the spool settings of the Microsoft print driver to
make sure that they're not set to print directly. ICOBOL cannot
send data to a print spooler that is set to print directly to the
printer, rather than spooling jobs.
What is Windows Terminal
Server edition?
Windows Terminal Server is an optional component of
Windows Server which provides multiple independent Windows desktop sessions
to allow client logins from "Client Sessions"
running on other computers using a Remote Desktop client. These sessions actually cause
the programs to execute on the Terminal Server machine with only
the screen images/results being reflected out to the client. This
capability provides multi-user operation of the base machine, just
like the capability available on Linux machines. The network connection
is used only to send compressed screen data to
the client and to receive keyboard/mouse data from the client. All
disk I/O is performed at machine/memory speeds on the base machine.
In addition, WinTerms (a fancy dumb terminal or a very simple PC,
depending on your perspective) can also be used as a client.
Under Windows, when
viewing the System Log using the Event Viewer, I see messages from
the Service Control Manager about the ICOBOL services (ICEXEC,
ICPERMIT, ICNETD). What do these messages mean?
The event log may contain messages such as:
- "The icnetd service terminated with service-specific error 6"
- "The icexec service failed to start due to service-specific error 6"
The service-specific error is the exit code from that service (executable). Exit codes are documented in the Introduction chapter of "Installing and Configuring ICOBOL on Windows". In most cases, you can also examine the log file for the service (e.g., icexec.lg, icpermit.lg, or icnetd.lg) in the C:\WINNT or C:\Windows directory to obtain the interpretation of the specific error message you observed in the System Log.
If the event log contains a message such as:
- "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. That message should identify the actual login error. It should tell you that the username that you were using does not have the appropriate privilege setting. Check the username identified in the message, and add the needed privileges on this machine and on any network machine that the username might need to access.
How much disk space does the
ICOBOL product for Windows require?
A full release (Developer and Runtime environment) requires about
65MB, while the Runtime environment alone only requires about 15MB.
When I try to bring up ICEXEC
under Windows, I get a "Must be running as service"
message. What does this mean?
Go into the registry under HKEY_LOCAL_MACHINE, System,
CurrentControlSet, Services, ICEXEC. If the image path for ICEXEC
shows the -A switch, this needs to be changed to -sA.
Is there a way to do a scripted
installation of ICOBOL?
Under Windows, the installation process can now be scripted so that
batch installs can be performed. To build a sample script, you
must execute the install with the record option (e.g., win500.exe /r) and
make the appropriate selections. After all of the selections are
complete, you will be prompted to save the settings in a file of your
choosing. To use the file, run setup with /S:<pathname>
(e.g., win500 /S:c:\temp\mysettings.ini).
Do I need to increase the
value of any System Parameter entries in ICCONFIG?
A good way to determine this is by running the system built-in
IC_SYS_INFO. This will cause statistical information about the
various system parameters to be displayed. If the Max and MaxUsed
values for an adjustable entry are equal or nearly equal, you
should probably increase the Max value for that entry.
How can I have unique terminal
numbers on a Windows network?
There is no automatic way to enforce unique terminal numbers across
a network. On a single Windows machine, ICEXEC provides
unique terminal numbers only on that one machine. Currently, the only
way to provide unique terminal numbers across a network that runs
ICOBOL on multiple machines is to have a different configuration
file for each machine with a different (unique) console enabled for
each configuration. For ease of maintenance, the different
configuration files can all reside on a single machine.
Can I use a redirected LPT port
to open a network printer?
Yes, in Windows environments, you can open a network printer using
a redirected LPT port. For example, a "NET USE LPT9
\\machine\printer"can be executed, and then LPT9 can be
entered as the device name for an @PRN or @SER logical device.
What device name should I use for an
@PCQ in ICCONFIG?
For Windows, PCQ devices
should be the printer names as shown in the Printer Control Panel
for local printers and should be the network port name (i.e.,
\\machine\printer) for redirected printers. Use Notepad or ICINFO
to view the available printers, and then use those names in
ICCONFIG.
How does ICOBOL handle the
default settings for serial devices?
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 specify
these settings if needed. This MODE will be remembered until
another setting is stored. Alternatively, extended OPEN options can
be used to set the needed values.
[ General | Capabilities | Client/Server | ODBC | License Server | Runtime | Debugging | Windows-specific | Linux-specific | Network-specific | What Is? ]