Please enable JavaScript to view this site.

A-Shell Development History

842.9.1. (UNIX) Support ashell command line switch -nfs to be used when multiple systems are sharing the jobtbl.sys file over NFS or a similar network file sharing mechanism. Switch is needed to avoid one system from thinking processes that are running on another system are actually phantoms, which can lead to "job zapped" problems.

842.9.2. (UNIX) Background jobs now use 127.0.0.1 as their IP address in the job table. (This helps eliminate confusion in applications that use the IP address to identify real workstations.

842.9.3. A problem with certain directory scanning operations not working properly when SET HEX is on has been fixed. Problem was introduced between 4.8(842) and 4.8(842.8.

842.8.1. Tracing of file opens improved somewhat when TRACE=XCALL,FOPENS

842.8.2. Fix INMEMO bug with pasting of Latin 1 characters from clipboard.

842.8.3. Fix INMEMO GPF problem which occurred when 26 compressed spaces were split over two physical memo records.

842.8.4. Various fixes and minor enhancements to the ERS subroutines TRSRCH, DTSRCH, ZCLOSE.

842.8.5. Fix another bug in FPROUND which was causing numbers formatted with very long masks to sometimes be off by one in the least significant digit.

842.8.6. Handle more gracefully a stack overflow condition caused by trying to manipulate a string larger than the amount of available work memory. (Was crashing; now reports stack overflow.

842.0.1. (UNIX) Support SBR=INFLD_KEEPALIVE to send a harmless byte sequence every 15 seconds while waiting for input within INFLD (which includes the dot prompt and BASIC INPUT statements). This serves two purposes. First, it will prevent connections from being dropped due to lack of activity while they are actually in a program waiting for input. Second (and perhaps more important), it provides a mechanism for UNIX/Linux servers to detect connections that have been dropped (without having to wait for the standard keepalive timers to expire, which by default may run to 2 hours). This way, within 15 seconds of the connection being dropped, the server will send a packet, which cannot be delivered. This should trigger a retry timer which will try to resend the packet some number of times before concluding that the connection is dead. This process is generally much quicker than the keepalive detections process.

Note that under Linux, the retry timers are controlled by two files in the /proc file system: /proc/sys/net/ipv4/tcp_retries1 and tcp_retries2. The default values of 3 and 15, respectively, may be large for your liking, possibly taking as long as 15-30 minutes to close the dropped connection. You can set them as low as 1 and 2 for nearly immediate detection, at the possible risk of prematurely judging a temporarily sluggish connection to be dead. A good documentation link with more information about the tcp variables in the /proc file system is:

http://ipsysctl-tutorial.frozentux.net/chunkyhtml/tcpvariables.html

842.0.2. A ancient yet nasty bug in FLOCK has been fixed. The symptom was that the queue block representing permission for a particular file to be open could be overwritten by a record request for the same file, causing subsequent requests for that file to return status code 3 or 6 (permission to open file must first be granted). The chance of the error manifesting itself depended on many factors, and judging from the fact that it has never been reported (even though it affected versions going at least as far back as 4.4), probably didn't occur very often. (We discovered it in-house while testing the performance improvement of the QFLOCK MEM: option for Windows in the 4.9 development version.) Nevertheless an update is highly recommended.