Please enable JavaScript to view this site.

A-Shell Development History

1. ABOUT.LIT 1.0(102) cleans up a few minor aesthetic problems.

 

2. AMSORT is now smarter about using memory when the SBR=MALLOCSORT option is set. Previously, it would attempt to allocate enough memory to load the entire file, and failing that, would back off in increments until it succeeded in getting the largest available allocation. This was not necessarily a good idea when sorting very large files, since the rest of the system would then be robbed of the use of that memory until the process in question actually terminated. (Even though a process may "release" its memory allocations, in most cases, UNIX will not allow other processes to reuse it as long as the original process is still active, based on various optimization theories and models of typical process behaviour which may or may not apply to A-Shell.) Furthermore, the old system was just plain stupid in that if it failed to get the amount needed for a memory sort, there was no point in having all that extra memory for the tag or merge sorts.

 

The new scheme limits the maximum allocation to 8MB under UNIX, and to 32MB under Windows. If that is not sufficient for a quicksort of the entire file in memory, then it will instead attempt to allocate just enough for a tag sort (of the keys without the data) in memory. If that amount is over 8MB or otherwise not available, then it will allocate just 1MB and use it with the dreaded polyphase merge sort algorithm to sort the file in 1MB chunks, merging them together on disk.

 

The above rules for memory allocation only apply if the current amount of free memory in the job's partition (as set by MEMORY= or the -r ### switch) is not sufficient for a memory sort.

 

Since sorting large files is definitely faster if you can throw enough memory at the problem to do it all in memory, or at least to do the keys in memory, and you know you have a large file to sort, it might be worthwhile launching a special instance of A-Shell with the -r ### switch (see edit 759 notes below) to allocate a sufficient amount of RAM for a memory sort. Terminating that instance of A-Shell (i.e. that process) will then truly return the memory back to the system for other people to use.

 

3. The "autosnapshot" feature (enabled with SBR=INFDEF:|S) now also takes a picture of XCALL MESAG prompts within CTL files.

21 May 2001: Version 4.6(771)

1. Fix memory management loophole in the large model sort algorithm that had the symptom of causing the remainder of the active CMD file to be lost during certain types of sorts (mainly sequential file.)

 

2. Increase the INPUT and INPUT CSV line length limit from 510 to 2046 bytes. (INPUT LINE and INPUT RAW can go out past 32K.)

 

3. Adjust the window naming convention to be "smarter" under Windows Terminal Server (WTS). In most cases, we can now properly match up window sessions to the thin client machine that originated them, and thus allow multiple windows originating from a single workstation to share a single node license. Also, the existance of WTS on the server no longer changes the way regular peer-to-peer nodes are identified. SYSTAT/C now shows the machine names (or IP addresses for thin clients that don't report a name.) Only in the case of a thin client with no name and no IP address do we revert to the prior system of using the login name and a random number extension. (You can force that, however, by using OPTIONS=NTTS.)

 

4. Fix a bug in the parsing of EZ-SPOOL configuration files that caused the DEFAULT= statement to interfere with matching of [user] stanzas.

 

5. SET TRACE LP ON now displays additional tracing information related to selection of a user-specific stanza within the EZSPL configuation file, making it easier to debug problems with that feature.

 

6. MIAMEX,31,ENVVAR,VALUE now supports 3 special environment variables for retrieving information that is part of "the environment" but not necessarily defined as an environment variable. The first one is "%CurrentDirectory%" which returns the current working directory. The other two only work under Windows: "%WindowsDirectory% " will return the "Windows directory" (e.g. C:\WINDOWS) and "%SystemDirectory%" will return the "System Directory" (e.g. C:\WINDOWS\SYSTEM.) For example,

 

XCALL MIAMEX,31,"%CurrentDirectory%",CWD$

 

will set CWD$ to your current working directory, such as "C:\VM\MIAME\DSK0\001004".

 

7. (Windows) A-Shell/Windows now offers an optional capability of displaying and printing images. The supported formats are JPEG, BMP, PCX, TIFF (G3,G4,packbits), and GIF (uncompressed). The imaging library is not distributed with the standare release because it requires a nominal one-time license fee. But there is an eval package, including sample images and a sample program, on the Latest Downloads page of our web site. See the A-Shell Technical Note ATN1005.PDF for further information.

 

8. (WINDOWS) A new MIAME.INI option, OPTIONS=XABORT, allows a user to abort a running program by clicking on the "X" in the upper corner or using the "Close" option on the system menu. This will generate a Basic error #255.

 

9. (WINDOWS) XCALL MIAMEX,95,PATH,FILTER,TITLE,FLAGS{,DEFEXT}{,FNAME} added to bring up a Windows "File Open" dialog.

 

PATH is a string variable containing the initial (default) filename (or just a directory) e.g. "SYS:", "DSK5:[123,4]", or "MYFILE.TXT", or "". The full path of the selected file will be returned in this directory (in native format) so you may want to allow for 100 or more characters.

 

FILTER is a set of pairs of strings, concatenated all together using pipes ("|") for delimiters, determining which files will display in the dialog box. The first string in each pair is descriptive, and will display in the "Files of Type" area of the dialog box. The second string in each pair is a wildcard specification for that kind of file. If you have more than one wildcard spec for a particular descriptive name, then separate them with semicolons. For example:

 

FILTER="Data files|*.DAT|Text files|"*.TXT;*.LST"

 

Note that the "Files of Type" control is actually a drop-down box and that "Data files" will show as the initial choice, and "Text Files" will be the next choice in the list. If you want them all appear together, then just specify one pair of strings, i.e.: FILTER="Image Files (*.pcx,*.jpg,*.bmp)|*.pcx;*.jpg;*.bmp"

 

TITLE will appear in the title bar of the Open File dialog box. If left blank, the title will be "Open".

 

FLAGS may contain any combination of the following. On return it may be updated based on what user entered.

 

1  Read-only checkbox initially set.

4  Hides the read-only checkbox

256   Don't force filename to contain only valid chars

512   Allow multiple file selection. (Successive names will appear, null delimited at end of PATH.)

1024   Set on return if ext entered differs from DEFEXT

2048   Path (directory) must exist

4096   Don't allow filenames that don't exist

8192   Prompt to confirm if nonexistant filename entered

32768   Set on return if file not read-only; dir writeable

131072   Disable network button

33554432   (W2000) Don't add to recent files list

 

DEFEXT (optional) default extension. Don't include the period. If specified and the user types a filename with no extension, this will appended to the returned PATH and FNAME parameters.

 

FNAME (optional) is a convenience that will return just the filename  and extension (without the rest of the path), saving you from having to parse it out of the PATH string. Note, however, that it isn't guaranteed to be in the directory you initially specified.

 

10. The MIAMEX.BAS sample program (released in [7,376]) has been updated to demonstrate several new MIAMEX functions.

 

11. ABOUT.LIT 1.0(101) now displays the license key (useful under Unix where you would otherwise have to look in the INI file.)

 

12. SYSTAT.LIT 2.2(134) now shows the last 17 characters of the session ID (when using the /C switch) instead of the first 18 characters. (The field only allows 18 characters, but the actual names could be 19 characters long.) When the name is too large to fit, it displays a "<" as the first character, followed by the last 17 characters of the name (allowing you to see the window #, which is more interesting that the start of the machine name or IP address.) Note that we did this rather than just expand the display because many people use SYSTAT/L to generate a list file from SYSTAT which they then parse based on column positions, so we don't want to break those programs.

 

13. The INPUT statement is now slightly better at handling non-numeric garbage characters that appear in numeric fields. For example,

 

INPUT A,B,C

PRINT A,B,C

 

Assuming A,B,C are numeric variables, and the actual input string was "J,2,3", it will now properly assign A=0, B=2, C=3. Previously the invalid character J was causing the parsing to get out of sync resulting in both A and B being set to 0 and C=2. More complicated examples (where the supposedly numeric field contained a mixture of numeric and alphabetic and other characters) could have caused even more mixed up results.