- How can I get information about semaphore usage?
- When printing, should I be using an @PRN, an @PCQ for printing, or can I use both?
- Can I use filenames with embedded $ signs?
- Do I need to increase the value of any System Parameter entries in ICCONFIG?
- How much disk space does the ICOBOL product for Linux require?
How can I get information about
ICOBOL provides the tell_sem program as a tool to detect ICOBOL's usage of semaphores. Tell_sem displays the key, the last user (PID) who used the semaphore, the number of users that are waiting, and the key's value. Tell_sem then tries to get each semaphore. If a particular semaphore cannot be obtained, then ICOBOL might be hung. To unhang the system, you can issue a kill (i.e., a kill -15 pid) for the PID displayed for the semaphore in question. After issuing the kill, rerun tell_sem to see if it still shows a hang. If the hung condition still exists, try issuing several more kills (kill -15 pid).
Any hangs that occur in which tell_sem is used to kill a job should be reported to your supplier or Envyr Corpration.
When printing, should I be using
an @PRN, an @PCQ for printing, or can I use both?
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 Linux spooler also using the port, because you may get erroneous output or other unexpected results. You should use @PRN entries when you wish to print directly to the device with no spooling. You should use @PCQ entries, which uses the Linux spooler, for reports and other items for which the order of document printing does not need to be controlled for the output being directed to the printer.
If you currently open "$LPT" or "$LPT1" in your COBOL program when you really want to direct output to a print queue, you should build a linkfile that has "$LPT @PCQ0", "$lpt @pcq0"; and/or "$LPT1 @PCQ1", "$lpt1 @pcq1" in it.
Can I use filenames with
embedded $ signs?
You must be aware that using filenames with embedded dollar ($) signs can cause difficulties. While the ICOBOL Runtime will handle such names in the COBOL program correctly, problems can result when the Runtime or a user must interact with the Linux shell. Some examples of problems imposed by using $ signs are:
- Using an ISAM file whose name is "data$426" in the COBOL program means that you can't issue an "iccheck data$426" at the Linux shell level because the $4 will be stripped off and remapped to arg4.
- Using an ISAM file whose name is "data$abc" in the COBOL program means that you can't issue an "iccheck data$abc" at the Linux shell level because the $abc will be stripped off and the environment value abc will be sought.
- Any file in the printer control utility cannot be printed in
most cases because the Linux print spooler executes scripts to
print files and those scripts will also incorrectly interpret
filenames with dollars ($).
Note: 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).
ICLINK can be used to remap filenames that have $ embedded to ones that don't. (Note: Make sure you do not map filenames to ones that do have $ embedded.)
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.