============================================================================ A-Shell Release Notes Version 6.2.1429.0 (25 March 2017) ============================================================================ 1. (AIX only) Fix MX_FILESTATS bug: when retrieving file information for a file on the PC (via ATE), the value for bytes was corrupted (due to a deviation between the 'standard UNIX/LINUX' and 'AIX' version of a common routine). ============================================================================ A-Shell Release Notes Version 6.2.1428.9 (09 December 2016) ============================================================================ 1. CGIUTL.SBR bug fix: string source parameters longer than 2K were failing to be decoded in the CGIOP_GETPARX or _GETPARARY routines. ============================================================================ A-Shell Release Notes Version 6.2.1428.8 (18 November 2016) ============================================================================ 1. Fix XTREE bug related to use of a date picker control for editing a cell within an XTF_SPLIT tree. If the column had to be enlarged to fit the date picker, the resulting layout was a bit crazy. (Same as 6.3.1536.2) 2. Installer was missing the SftTree_IX86_U_70.DLL needed for XTREE. 3. ATHTTP.SBX 1.2(107) removes the too-small limits on the size of a string response (new limit is 16K), and on the size of a URL (no limit now). It also fixes a problem in which a string request (XHTTPF_FILEREQ not set) was getting a spurious ".\" prefix added, probably breaking the transaction. 4. ASHNET.DLL 1.8.154 enhances the HTTPF_REQGET operation to use the new default timeout values (30 seconds for connect, 75 for read) and also to allow override of the various Properties. Previously _REQGET (simplified HTTP GET) was ignoring all of those and using built-in defaults instead.) ============================================================================ A-Shell Release Notes Version 6.2.1428.7 (14 November 2016) ============================================================================ 1. Fix intermittent crash in CGIUTL opcode 6 (CGIOP_MRGFIL). (Same patch as in 6.3.1535.3) 2. Minor ATE refinements related to disconnect messaging. 3. ASHNET.DLL 1.8.153 update adds several low-level fixes, refinements and enhancements to the the SSL, HTTP, and SFTP protocol support. See notes in 6.3.1536.0 for related enhancements to HTTP.SBR/ATHTTP.SBX which the DLL update supports but were exposed only in A-Shell 6.3. ============================================================================ A-Shell Release Notes Version 6.2.1428.6 (06 November 2016) ============================================================================ 1. Replace old ate and acorn icons with newer versions. 2. Update start.cmd[901,2] and ashupd.lit to reference new Bitbucket repository rather than the outdated SOSLIB update package. ============================================================================ A-Shell Release Notes Version 6.2.1428.5 (02 November 2016) ============================================================================ 1. Eliminate messagebox complaining about file-not-found errors when TRACE=SYSERR. (This was inadvertently introduced in a recent version to facilitate debugging and was overlooked because the SYSERR TRACE option is not commonly used. But many existing ATE installations had the option set in the ATE copy of the MIAME.INI, and the messagebox was showing up when searching for an ATE-side SBX module. The solution is either to remove the SYSERR option from the MIAME.INI or update to this version.) ============================================================================ A-Shell Release Notes Version 6.2.1428.4 (27 October 2016) ============================================================================ 1. Fix bug with placeholders not showing up in selection-only combo boxes. 2. Fix bug with StripFF option in configuration dialog not saving/restoring. 3. Adjust ATE default icon to use ashell1_t.ico rather than the old ate.ico. ============================================================================ A-Shell Release Notes Version 6.2.1428.3 (20 October 2016) ============================================================================ 1. Close memory handle leak which was causing a memory handle to be used up whenever an INPUT operation within an SBX required more than 4K bytes. (Same fix as 6.3.1532.5) ============================================================================ A-Shell Release Notes Version 6.2.1428.2 (19 September 2016) ============================================================================ 1. Fix bug in new license processing resulting in a bogus LAPTOP license flag and a missing registry item error. 2. Minor improvement to file open tracing when SYSERR TRACE option set. ============================================================================ A-Shell Release Notes Version 6.2.1428.1 (13 September 2016) ============================================================================ 1. AUI_CONTROL bug fix: Using CTLOP_CHG to change the text associated with a control (including the image spec) was truncating the internally stored text for longer text strings. This would typically only become apparent after later manipulations were performed on the control, such as resizing it. ============================================================================ A-Shell Release Notes Version 6.2.1428.0 (10 September 2016) ============================================================================ 1. New MIAME.INI trace option: TRACE=JOBLCK causes all unresolved lock/unlock operations on the jobtbl.sys file to be traced in the file jobtbl.lck. The intent here is to make it easier to debug and resolve a rogue condition whereby a process has a lock on jobtbl.sys preventing other users from getting in or out of A-Shell. (Under Linux you can use the lslk utility to see who has a lock on the file, but under AIX this appears to be nearly impossible, and under Windows it may be difficult.) The jobtbl.lck file is created in the same directory as jobtbl.sys, and consists of human readable ASCII text lines in the following format: pid,op,recno where pid is the process id, op is either "lock" or "unlock", and recno is 0 for the jobtbl header, else a number indicating the jobtbl record for that job number. For example: 2415,lock,5 3723,lock,15 2415,unlock,5 3724,unlock,15 The above case indicates the following chronology: - process 2415 locked the jobtbl record for job #5 - process 3723 locked the jobtbl record for job #15 - process 2415 unlocked the jobtbl record for job #5 - process 3723 unlocked the jobtbl record for job #15 Since at this point the locks and unlocks match, on the next operation, the file will be truncated and started over again. If the option is enabled and you get a "unable to access JOBTBL.SYS" error, you can then display this file to hopefully identify which processes have locks on the file and can then investigate or kill those processes. Note that while this is technically a new feature, it was stripped-down and retrofitted from A-Shell 6.3 to facilitate debugging on a particular large AIX system experiencing this problem. The feature is more fully implemented (MX_GETTRACE, MX_SETTRACE, SET.LIT, etc.) in 6.3.1526.0 ============================================================================ A-Shell Release Notes Version 6.2.1427.8 (07 September 2016) ============================================================================ 1. ATE licensing bug fix: Auxiliary ATE licenses issued to ATE clients from the server were failing to set the proper feature bits. Most noticeably this could have caused ATE to stop running after the license maintenance expiration. (Problem introduced in 6.2.1425.0 along with support for the new license format.) ============================================================================ A-Shell Release Notes Version 6.2.1427.7 (01 September 2016) ============================================================================ 1. BASORT bug fix: sorting a file whose native path was more than 80 bytes long was intermittently causing A-Shell to crash. (Same fix in 6.3.1524.0) 2. Close a potential loophole where two zero-length dynamic strings might be considered not the same in a comparison. (Same fix in 6.3.1518.1) ============================================================================ A-Shell Release Notes Version 6.2.1427.6 (15 August 2016) ============================================================================ 1. XPUTARG bug fix: attempting to output from an I variable to an F variable wasn't doing anything. (Same fix n 6.3.1522.0) ============================================================================ A-Shell Release Notes Version 6.2.1427.5 (21 June 2016) ============================================================================ 1. MX_GDICALC bug fix: the MXGDI_CALCRECT opcode wasn't handling literal "^M" line break markers properly. (Same fix in 6.3.1517.1) ============================================================================ A-Shell Release Notes Version 6.2.1427.4 (18 June 2016) ============================================================================ 1. AUI_CONTROL bug fix: dialogs with MBF2_DLGNOCAP were not responding to the MBST_?CENTER flags. ============================================================================ A-Shell Release Notes Version 6.2.1427.3 (17 June 2016) ============================================================================ 1. XFOLD.SBR bug fix (Windows): accented characters are now properly folded based on the Windows locale. 2. LOG.SBR bug fix: status parameter now returns system error code (was always returning -1 for any error). ============================================================================ A-Shell Release Notes Version 6.2.1427.2 (08 June 2016) ============================================================================ 1. XTREE bug fix: returned xrow was incorrect when re-entry exited immediately for prevalidation. Same patch as 6.3.1514.1 ============================================================================ A-Shell Release Notes Version 6.2.1427.1 (02 June 2016) ============================================================================ 1. APEX zoom/pan refinements. Fix problem of page jumping nearly out of window when switching zoom modes. Same patch as 6.3.1513.4. ============================================================================ A-Shell Release Notes Version 6.2.1427.0 (01 June 2016) ============================================================================ 1. XTREE bug fix: in the ATE environment, updating a sortable tree from both the data and answer arrays using XTROP_REPLACE was in some cases resulting in duplicate rows or cell updates to the wrong rows. (This effectively replaces earlier XTREE patches in 1421.2 and 1421.9 which failed to deal correctly with the scenario, and which actually expanded the scope of the problem to potentially affect non-ATE environments.) ============================================================================ A-Shell Release Notes Version 6.2.1426.9 (26 May 2016) ============================================================================ 1. XTREE refinement: null fields with the cformat P option were resulting in garbage being loaded into those fields. ============================================================================ A-Shell Release Notes Version 6.2.1426.8 (19 May 2016) ============================================================================ 1. XTREE bug fix: date/time sorting (cformat D and h) was not working. (Broken in 6.1.1365 during during the unicode conversion.) ============================================================================ A-Shell Release Notes Version 6.2.1426.7 (17 May 2016) ============================================================================ 1. XTREE bug fix: close loophole responsible for intermittent bogus "Editable column count" error messages. ============================================================================ A-Shell Release Notes Version 6.2.1426.6 (13 May 2016) ============================================================================ 1. Fix truncation problem in standard TAB control if the label definition string (ctext) between 200 and 400 characters; Was corrupting the exitcode for the final tab. (Retrofitted from 6.3.1512.2) ============================================================================ A-Shell Release Notes Version 6.2.1426.5 (05 May 2016) ============================================================================ 1. Parameter passing bug fix: a passed floating point variable was failing to be converted properly to a received string variable if the receivng string variable length matched the passed floating point variable length. For example, passing an F6 to an S6 or an F8 to an S8 was not giving the expected result. 2. XTREE/ATE bug fix: the answer array wasn't getting reprocessed in XTROP_REPLACE mode when the data array was updated and row optimization was resulting in only the updated rows being transmitted to the client. 3. Refinement to XTREE handling of optional editable dates (cformat=DE, InfDef=DO). Now, when the date-valid checkbox is unchecked, the date displayed will be blanked out. Previously, it was grayed out, but the difference wasn't enough to avoid confusion. (Retrofitted from 6.3.1510.1) 4. ATE bug fix: the AutoMouse option saved in the configuration settings was being overridden by the default settings. ============================================================================ A-Shell Release Notes Version 6.2.1426.4 (25 April 2016) ============================================================================ 1. Message boxes are no longer suppressed due to the -zi switch if the window has already been made visible by other means first. ============================================================================ A-Shell Release Notes Version 6.2.1426.3 (22 April 2016) ============================================================================ 1. Further fix to STRTOK (see 1426.0) to ensure that the RDELIM parameter returns the final record delimiter character when the final field is terminated by only a record delimiter (rather than by field and record delimeter). Normally this would not be an issue, since programs that use STRTOK to process multiple records would have to deal with possibility of a totally empty record at the end (which will always return "" in RDELIM). But for programs parsing just a single record with an unknown number of fields and expecting the final record delimiter to be returned in RDELIM after the final field, the prior behavior may have caused the application to report an error condition. ============================================================================ A-Shell Release Notes Version 6.2.1426.2 (22 April 2016) ============================================================================ 1. Minor refinements to close loopholes in which interactions between startup errors and error messaging/logging routines could lead to lockup of the entire system. ============================================================================ A-Shell Release Notes Version 6.2.1426.1 (03 April 2016) ============================================================================ 1. File hook bug fix: close a memory corruption loophole. The loophole was small but was most likely to be exposed when a single program opened, closed and hooked many files repeatedly. Symptom was typically a GPF or segmentation fault. 2. (LINUX) Minor adjustment to terminal drivers to avoid a weakness in an optimized version of some string handling library calls introduced in -el6. (No problems had been observed or reported though; the adjustment just reduces uncertainty in the library implementations.) ============================================================================ A-Shell Release Notes Version 6.2.1426.0 (29 March 2016) ============================================================================ 1. MX_GETOFD refinement: minimum # of parameters has been reduced from five to two, allowing you to call it with just: xcall MIAMEX, MX_GETOFD, PATH$ 2. LOKUTL.LIT 3.0(114) bug fix: previously wasn't handling inodes > 64K. (LINUX only) 3. Bug fix: passing an element of an unmapped array to a function or procedure was corrupting the GOSUB/RETURN stack if the array had not yet been seen by the runtime system and the call occurred within a traditional GOSUB routine. Symptom was a segmentation fault or GPF. Note: this bug fix should not be viewed as encouragement for such use of unmapped arrays. (MicroSabio highly recommends mapping all your variables so that the compiler can help you spot typos that can lead to nasty errors.) 4. Bug fix/refinement: When STRTOK stops on a field delimiter, there may be an expectation that it looks forward to the next character in the input to see if that character is a record delimiter, and if so, to consume the record delimiter and return that character in the RDELIM return parameter. Otherwise, if processing data in which the last field of a record is terminated with both a field delimiter and a record delimiter, your next XCALL STRTOK is going to return an empty record (possibly causing you to think that you've hit the end of the input data). Unfortunately, this behavior has been inconsistent over the years. Prior to 6.1.1398.0, the lookahead only occurred if the field delimiter was NOT specified in the list of record delimiters supplied in the RDELIM parameter. This handled the case where the record and field terminators were different, the last field of the record was followed by both types of delimiters, and the FDELIM/RDELIM parameters did not share any characters. Unfortunately, due to natural confusion about how to handle this situation, many applications specify the field delimiter(s) in both the FDELIM and RDELIM parameters, which was causing this lookahed behavior to not always work. In 6.1.1398.0, the logic was revised so that the lookahead occurred only when the field delimiter was also listed in the RDELIM parameter. This was perhaps worse, as it caused some applications that previously worked to now work incorrectly. 6.2.1426.0 revises the logic again, hopefully this time handling all of the most likely cases as expected. Now, after tokenizing and returning the number of fields requested in the XCALL, it always looks ahead to the next character to see if it is a record delimiter, and if so, it consumes that character too and returns it in the RDELIM parameter. This way, it matters not if you mix up the field delimiters and record delimiters in the FDELIM and RDELIM parameters. Just remember that the RDELIM parameter is updated by each call, so you most likely need to reset it prior to each XCALL STRTOK. 5. WHI Catalog Update: Linux -el5-tw version now contains the 48.5.1.2 version of the SDK (used by MPSCOM.SBR). Previous version was 48.1.4.1 ============================================================================ A-Shell Release Notes Version 6.2.1425.9 (17 March 2016) ============================================================================ 1. Bug fix: Close a loophole allowing the PDFX5 driver to throw a memory fault when executing with the demo license. ============================================================================ A-Shell Release Notes Version 6.2.1425.8 (13 March 2016) ============================================================================ 1. Compiler bug fix (edit 760) - variable names longer than 100 characters long were in some cases crashing the compiler. (The maximum name length is supposed to be 256 characters.) ============================================================================ A-Shell Release Notes Version 6.2.1425.7 (11 March 2016) ============================================================================ 1. FLOCK bug fix/refinement: The memory allocation for the FLOCK cache now registers the name "FLKCACHE" in the log (useful when debugging memory handle use with the MALLOC TRACE). Close a memory leak whereby the cache was needlessly reallocated if FLOCK called within an SBX. ============================================================================ A-Shell Release Notes Version 6.2.1425.6 (11 March 2016) ============================================================================ 1. XTREE/ATE refinement: when using file mode for a multi-selection tree, previously it was transmitting the entire answer parameter. Now it transmits only the number of bytes needed for the specified rows. (Server side.) 2. XTREE/ATE refinement: in the case described above, the ATE-side log was registering a warning message about buffer sizes. The warning and the underlying issue have been cleaned up. ============================================================================ A-Shell Release Notes Version 6.2.1425.5 (08 March 2016) ============================================================================ 1. DIR.LIT 3.3(159) adds /MINSECS:# and /MAXSECS:# options to the existing /MINDAYS:# and /MAXDAYS:#. ============================================================================ A-Shell Release Notes Version 6.2.1425.4 (08 March 2016) ============================================================================ 1. ATE refinement: when the transmission of a large response to the server is impededed by network congestion, the retry sequence is now more forgiving. Previously it gave up after 10 retries spaced some tens of milliseconds apart; now it keeps trying for several seconds. ============================================================================ A-Shell Release Notes Version 6.2.1425.3 (06 March 2016) ============================================================================ 1. Bug fix/refinement: XTREE was converting quote characters within the data array to apostrophes. They are now preserved. (Problem occurred only in the ATE environment, and the patch applies purely to the server side - no update needed for A-Shell or ATE clients.) ============================================================================ A-Shell Release Notes Version 6.2.1425.2 (06 March 2016) ============================================================================ 1. Bug fix: INFLD was using the wrong color pairs from INI.CLR in some situations (typically the update colors instead of the display or edit colors). Bug only affected non-GUI INFLD when INI.CLR defined. (Introduced in 1375.0) ============================================================================ A-Shell Release Notes Version 6.2.1425.1 (04 March 2016) ============================================================================ 1. Bug fix: The "." key on the number pad wasn't working within XTREE, when the NUMPAD_COMMA system option set. (Introduced in 1422.4) ============================================================================ A-Shell Release Notes Version 6.2.1425.0 (22 February 2016) ============================================================================ 1. Support new 6.3 PIC code format (XXXXXXX-XXXXXX-XXXXXX-XXXXXXX). (The new PIC format is needed for certain extensions added in 6.3; it provides no benefits to 6.2 but is hereby supported just as a backwards compability convenience.) 2.ATSD.exe 6.2(110) supports new PIC format; minor internal updates. 3.LICENS.LIT 2.4(133) supports new PIC, improved localization. ============================================================================ A-Shell Release Notes Version 6.2.1424.3 (18 February 2016) ============================================================================ 1. Prevent accidental mouse drag problem in Month Calendar control by forcing an automatic mouse-up event. (Some users were reporting that they would click on a date to select it, but then when they moved the mouse the date would change as the mouse moved over other dates.) ============================================================================ A-Shell Release Notes Version 6.2.1424.2 (15 February 2016) ============================================================================ 1. DIR.LIT 3.3(158) - remove incorrect /MDATE, /MTIME switches from the help display. (The correct switches are /UDATE and /UTIME.) 2. Runtime nested array expression evaluator bug fix: using an ordered map expression as a subscript to another array was resulting in a bogus subscript out of range error, even when the value of the ordered map expression was non-zero. For example: map1 array(10),f $roomno("smith") = "5" array($roomno("smith")) += 1 This should be (and now is) legal, since even though "5" is a string, it auto-converts to a number when used in a context that requires a number, as is the case in for an ordinary array subscript. (Same fix in 6.3.1507.0) ============================================================================ A-Shell Release Notes Version 6.2.1424.1 (20 January 2016) ============================================================================ 1. Windows UI bug fix: Alt+Enter (to toggle between max and normal main window state) wasn't respecting the -mx command line switch (which removes the min/max/norm buttons from the main window, presumably to prevent the user from changing the window state). 2. ISMBLD.LIT 2.1(142) bug fix: the current logged-in device was being stored in the IDX as the IDA device when the /L:# or /B:# switch was being used. The IDA device should have been left blank except in the case an explicit device specification appears on the ISMBLD command line. ============================================================================ A-Shell Release Notes Version 6.2.1424.0 (15 January 2016) ============================================================================ 1. Add new MIAMEX function MX_MALLOCLIMIT (185) to get/set the MALLOCLIMIT: xcall MIAMEX,MX_MALLOCLIMIT,op,limit where: op [in] (num) is 0 to get the limit and 1 to set it limit [in/out] (b,4 or f) returns the current limit (op=0) or supplies the new limit (op=1). Units are bytes (not kilo-, mega-, or giga- bytes). Maximum practical limit is 2GB-1 (2147483647). ============================================================================ A-Shell Release Notes Version 6.2.1423.1 (11 January 2016) ============================================================================ 1. GUI bug fix: EVENTWAIT was getting stuck in an infinite loop. (Problem introduced in 1423.0 due to a source code management mixup.) ============================================================================ A-Shell Release Notes Version 6.2.1423.0 (10 January 2016) ============================================================================ 1. XTREE refinement: Specifying the -$PRINT PopupMenu option was removing the print option from the popup menu, but it was not disabling the ability to print/preview using the built-in ^P command. To disable that, a new Advanced Coldef Option has been added: Print=Disabled Note that it doesn't really matter what follows the = sign - the only option is to disable since the default is for printing to be enabled. 2. Print filter refinement: filter SBX names can now be up to 10 characters (previously was 6). 3. MX_FIND bug fix: Specifying the cdate/ctime parameters but not the udate/utime parameters was exposing a loophole which could lead to crashing A-Shell. 4. MX_SYNC refinements: Time elapsed in the sync() or fsync() call is now logged (in microsecond units) if the XDEBUG trace flag set. (This was motivated by suspicions that the sync() call is taking longer under CentOS/RHEL 6 and 7 than under CentOS/RHEL 5. Such suspicions can now be easily quantified.) Also, fsyncing now supported for ISAMA files (e.g. XCALL MIAMEX, MX_SYNC, CH {,STS}). ============================================================================ A-Shell Release Notes Version 6.2.1422.8 (8 January 2016) ============================================================================ 1. Bug fix: the .ash files were getting corrupted after repeated loading/ saving operations. (Introduced in 1422.3; problem can be corrected by re-saving with this version.) ============================================================================ A-Shell Release Notes Version 6.2.1422.7 (02 January 2016) ============================================================================ 1. INPUT #CH bug fix: When the last line of the input file was longer thanfor i the input variable, if the variable was followed by the byte sequence chr(26) chr(0), the chr(26) was getting set to null. The bug has been there for years, but probably went unnoticed because the conditions for it were fairly rare. 2. ATE and A-Shell/Windows enhancement: the scrollback buffer has been enlarged from 100 to 200 lines. 3. PAGE.LIT 1.0(104) refinement: it now sets a flag allowing other LIT and RUN programs to detect if they are running under control of PAGE. (This is mainly for the benefit of ERASE, which see below.) 4. ERASE.LIT 3.4(129) now detects when running under control of PAGE so as to not disable the warning/confirmation request when deleting multiple files by wildcard. Previously a command line like PAGE ERASE *.BAK was not stopping to confirm that you really want to erase all those files, because it appeared to ERASE that it was running from the command file created in memory by PAGE. Also, when listing the files to be erased, it now displays the file size in blocks next to each name. ============================================================================ A-Shell Release Notes Version 6.2.1422.6 (22 December 2015) ============================================================================ 1. ATE server-side refinement: increase the wait time on the initial handshake from 3 to 6 seconds. Some large systems with slow/congested/remote networks were occasionally hitting the timeout, causing the session to not recognize that the terminal was ATE. ============================================================================ A-Shell Release Notes Version 6.2.1422.5 (22 December 2015) ============================================================================ 1. XTREE bug fix: When using XTROP_REPLACE to effectively add rows, after previously deleting rows, the new rows were being added properly. ============================================================================ A-Shell Release Notes Version 6.2.1422.4 (22 December 2015) ============================================================================ 1. XTREE bug fix: When editing "#." and "#," fields, the number pad keys were being rejected. (The regular number keys were fine.) ============================================================================ A-Shell Release Notes Version 6.2.1422.3 (21 December 2015) ============================================================================ 1. Bug fix/enhancement: Selecting bold option in the system fixed pitch font selection dialog now affects the resulting font. ============================================================================ A-Shell Release Notes Version 6.2.1422.2 (07 December 2015) ============================================================================ 1. SCALE bug fix with .ISNULL(), .LINENO(), .PAGENO(): the results weren't being SCALEd, which would have been a problem when combining with the unary NOT operator, i.e. NOT .ISNULL(var). (Only affect programs with an explicit SCALE value.) ============================================================================ A-Shell Release Notes Version 6.2.1422.1 (02 December 2015) ============================================================================ 1. INMEMO bug fix: feeding characters automatically into a memo wasn't wasn't working when running in background (or CGI) mode. ============================================================================ A-Shell Release Notes Version 6.2.1422.0 (30 November 2015) ============================================================================ 1. ATE change/bug fix: The text message option in the AG_ATEDISCONNECT command is now independent of the flags option. Previous, if the text message was specified, it logged the message to the ashlog file, but effectively forced the flags option to &h0001 (no dialog on close). In other words, the custom message was only being seen in the log, not by the user (which, upon review, seemed just wrong). 2. AUI bug fix: the auto-replace logic (which removes conflicting controls when creating new ones) was ignoring controls beyond the 40th row (or the 40000th millirow). This was potentially causing an accumulation of superimposed controls in vertically scrolling dialogs more than 40 rows high where the application logic was depending on the auto-replacement feature. ============================================================================ A-Shell Release Notes Version 6.2.1421.9 (25 November 2015) ============================================================================ 1. (Windows/ATE) Fix XTREE problem introduced in 1421.2 relating to failure to update tree on reentry with XTROP_REPLACE with XTF2_ANSEQDATA. ============================================================================ A-Shell Release Notes Version 6.2.1421.8 (23 November 2015) ============================================================================ 1. (Windows/ATE) Revise search for icon specified in -g command line switch to look specifically in the %MIAME%\icons directory before doing a more general search (to reduce chance of finding an unexpected match). ============================================================================ A-Shell Release Notes Version 6.2.1421.7 (22 November 2015) ============================================================================ 1. Increase maximum key size for ordered maps (associative arrays) from 259 to 511 bytes. ============================================================================ A-Shell Release Notes Version 6.2.1421.6 (04 November 2015) ============================================================================ 1. STRTOK.SBR bug fix: resuming a token parsing operation without specifying a record delimeter, after a field containing trailing blanks, was causing a premature end-of-record condition. (Problem was discoverd in, and probably only affected PRTXLS in CSV mode.) 2. PRTXLS.SBX 1.1(175) bug fix: resolves an issue with individual cells missing from the output of a CSV conversion. ============================================================================ A-Shell Release Notes Version 6.2.1421.5 (03 November 2015) ============================================================================ 1. APEX preview control re-updated to 2.0.5 to establish proper Windows 10 compliance. (Missing toolbar issue fixed.) Minor update/fix in the XTREE preview interface. 2. MX_OSVER fix - Win 8.1 and Win 10 were being reported as Win 8. 3. APEX/PRTXLS refinement - sidecar .EXC and/or .CSV files are now copied to the APEX working directory, making them available to the Excel export facility. (Requires PRTXLS.SBX 1.1(171)+ for full benefit.) 4. PRTXLS.SBX 1.1(172) - various refinements/bug fixes. Now recognizes a line near top of printfile, containing only single or double dashes and spaces, as definitively identifying the column breaks. Supports conversion of .CSV files to XLS (either directly or as a sidecar to a report file.) No longer requires 2500K partition (500K is sufficient). ============================================================================ A-Shell Release Notes Version 6.2.1421.4 (31 October 2015) ============================================================================ 1. XTREE refinement - close a loophole in which a too-small version of the data array would lead to truncation of the returned data, even when the tree otherwise seemed to function correctly (because all of the data cells were editable and thus being loaded from the answer array.) ============================================================================ A-Shell Release Notes Version 6.2.1421.3 (29 October 2015) ============================================================================ 1. --- INFLD placeholder refinement: tooltips starting with "[TAB]", "[HOME]", "[F#]" or "[F##]" are no longer treated as containing placeholders. This resolves a problem with applications containing tooltips such as "[TAB] to display defaults" or "[F1] for help". ============================================================================ A-Shell Release Notes Version 6.2.1421.2 (28 October 2015) ============================================================================ 1. --- XTREE/ATE bug fix: XTROP_REPLACE optimization in conjunction with sorting and XTF2_ANSEQDATA was in some cases causing scrambling/duplication of rows. ============================================================================ A-Shell Release Notes Version 6.2.1421.1 (27 October 2015) ============================================================================ 1. --- Roll APEX control back to 2.0.4 version. (Toolbar in new version was not displaying; issue under review.) ============================================================================ A-Shell Release Notes Version 6.2.1421.0 (25 October 2015) ============================================================================ 6.1 Development cycle complete; rolled over to 6.2 Release ============================================================================ A-Shell Release Notes Version 6.1.1420.3 (20 October 2015) ============================================================================ 1. --- Compiler/APN bug fix (edit 755) - Variables below the MAP1 level were not being included in the tags. 2. --- Compiler/APN change/refinement (edits 756 & 758) - ++IF, ++IFDEF and ++IFNDEF directives are now being "obeyed". (Previously, all of the ++IFxxx directives were being ignored, resulting in both the True and False sections being included in the tags. This was harmless in some cases, but in others it was resulting in duplicate tags, which interferes with the ^ALT+G command.) Note however, that since neither MAPs nor labels are "compiled" by the tagger, ++IFMAP, ++IFNMAP, ++IFLBL and ++IFNLBL directives continue to be ignored (i.e. no source code is excluded by them or their associated ++ELSE and ++ELIF directives). Also, SIZEOF(var) will evaluate to zero. Hopefully this represents the sweet spot on the compromise between file loading/tagging speed and accuracy. 3. --- Compiler/APN bug fix (edit 757) - Labels preceded by line numbers were not being tagged. 4. --- COMPIL.LIT 1.3(131) new switches: /CTAGS - outputs just a list of ++include files to .LST /XTAGS - outputs a "tag" file to .TAGS Both of these are mainly for internal use by APN, but might be of some standalone interest to developers. 5. --- APEX control module (SftPrintPreview_IX86_U_20.dll) updated from version 2.0.4 to 2.0.5 for better Windows 10 compatibility. ============================================================================ A-Shell Release Notes Version 6.1.1420.2 (16 October 2015) ============================================================================ 1. --- Further minor refinements to the XTREE FixedLayout mode. 2. --- XTREE bug fix: InfDef=||I (replace mode) was also triggering Fast exit mode. ============================================================================ A-Shell Release Notes Version 6.1.1420.1 (15 October 2015) ============================================================================ 1. --- Compiler minor bug fix (edit 754): in somes cases, the line number reported for an incomplete multi-line language element (such as FOR without NEXT) was wacky (e.g. 4294966944). 2. --- Further refinements to the XTREE FixedLayout mode (introduced in 1420.0). The cell editor is now more robust at enforcing the row/col limits and yet more forgiving about harmless excesses like truncation of trailing blanks. ============================================================================ A-Shell Release Notes Version 6.1.1420.0 (14 October 2015) ============================================================================ 1. --- XTREE enhancement: in an editable tree without validation, the XTR'XVALIDATE field is now set to 5 to indicate that at least one cell was changed during the session. 2. --- XTREE enhancement: new Advanced Coldef Option for multi-line text cells: FixedLayout=True When set, XTREE attempts to handle the specified column in a more "INMEMO- friendly" manner. INMEMO uses a fixed rectangular grid layout, which maps easily on to a 2 dimentional array of R rows by C columns, whereas "normal Windows" multi-line text fields do not typically impose any such concept on the format of the lines. (Instead, the only limitation is the total number of characters allowed. Lines may or may not be wrapped according to the font and column display width, and you may also have embedded CRLFs marking hard line breaks.) The "normal Windows" method (used by XTREE and INFLD) has various advantages, but is hard to reconcile with legacy printing forms and fixed record layouts. To use the new option, set XTR'ITEMLINES to the number of lines of text in your multi-line text cells. The width of each line will be inferred from the total width of the column as defined to COLDEF (with any remainder discarded.) XTREE will then assume that the data for the cell is arranged accordingly, with each line space padded rather than terminated by CRLF. In addition to converting to and from that format, it will also attempt to prevent the user from exceeding the specified maximum number of lines and columns when editing the cell. For example, if XTR'ITEMLINES is 4 and the width of the CWDITH value for the column is 100, it will be treated as an array of 4 by 25 characters, and the user will be limited to no more than 4 rows, and no more than 25 characters on any one row. Notes / restrictions: Not compatible with XTF_VARY or XTF2_UTF8. This is purely a client-side enhancement - no changes needed on the server side, other than to your application to supply the column text in the alternate format. ============================================================================ A-Shell Release Notes Version 6.1.1419.0 (08 October 2015) ============================================================================ 1. --- New INFLD/GUI feature: "placeholders" or "cues". These are short messages that appear inside an INFLD/EDIT control when the control is otherwise empty. They are useful for giving the user tips as to what the field would or should contain, without requiring additional screen real estate for labels/prompts or user action to display a tooltip. To specify a placeholder, embed it at the start of the tooltip string, enclosed in [brackets]. Note that INFLD tooltips are defined within the hlpidx parameter, starting with ">", for example: hlpidx$ = ">[tax id]For businesses use the employer id~VK_xF123" Compatibility: No dependency on the server version. Requires client 6.1.1419 to recognize the placeholder; older clients will treat it as part of the tooltip (which should be harmless). 2. --- XTEXT/ATSD bug fix: when editing involved transferring the file or buffer between the server and client, CRLF line terminators were being converted to CR, effectively changing them from hard to soft. ============================================================================ A-Shell Release Notes Version 6.1.1418.5 (07 October 2015) ============================================================================ 1. --- Add SFREAD.SBR (custom routine for ERS). ============================================================================ A-Shell Release Notes Version 6.1.1418.4 (30 September 2015) ============================================================================ 1. --- Compiler enhancement (edit 751) - now generates the tag output used by APN, eliminating the need to call the external tagger, speeding up file loads substantially. (Note that this only applies to the standalone compil.exe and APN.) 2. --- Compiler bug fix (edit 752) - Fix problem with spurious illegal overlay errors for certain overlay patterns within a DEFSTRUCT. 3. --- Compiler bug fix (edit 753) - Fix a memory management problem in vary large compiles which was causing the compiler to require a much more memory than it should. In extreme cases it was causing the compiler to crash. ============================================================================ A-Shell Release Notes Version 6.1.1418.3 (29 September 2015) ============================================================================ 1. --- INMEMO bug fix: Eliminate some spurious screen output from MMO_SIL mode. ============================================================================ A-Shell Release Notes Version 6.1.1418.2 (29 September 2015) ============================================================================ 1. --- INMEMO bug fix: scrunch was garbling text under Linux -el6+ ============================================================================ A-Shell Release Notes Version 6.1.1418.1 (22 September 2015) ============================================================================ 1. --- XTREE bug fix: Loading a CSV file (using XTF2_CSV) was crashing A-Shell if no coldef information was specified. (Problem was introduced in 6.1.1365.0) ============================================================================ A-Shell Release Notes Version 6.1.1418.0 (16 September 2015) ============================================================================ 1. --- XTREE refinement: row colors can now be adjusted during a reselect operation by making changes to editable foreground (coldef "c") or background (coldef "b") cells in the answer array. ============================================================================ A-Shell Release Notes Version 6.1.1417.3 (13 September 2015) ============================================================================ 1. --- Runtime expression handler bug fix: the .ISNULL(), .PAGENO(), and .LINENO() functions were corrupting the expression stack when used in certain logical logical combinations (e.g. IF A > B AND .ISNULL(C) THEN...). The result was that the truth value of the overall expression was dependent on the prior expression (i.e. unreliable at best). 2. --- Minor improvements to MKVIC subroutines. 3. --- (AIX) XTREE bug fix: Setting the XTR'CTLNO to -1 (to auto-select the next available control #) was generating an invalid control # error due to a signed/unsigned character conflict in the A-Shell make file. ============================================================================ A-Shell Release Notes Version 6.1.1417.2 (09 September 2015) ============================================================================ 1. --- AUI bug fix: the original TAB and new TABX controls were conflicting with each other when used at the same time. 2. --- AUI bug fix: the GUI trace was causing a GPF with controls having extremely long tooltips. ============================================================================ A-Shell Release Notes Version 6.1.1417.1 (05 September 2015) ============================================================================ 1. --- Compiler bug fix (edit 750) - fix spurious "illegal map level" error on map statements included within a ++PRAGMA EXTERN_BEGIN block (introduced in edit 748). 2. --- PRINT USING MASK bug fix - the alternate interpretation of the "!" mask character as a conditional decimal point (introduced in 6.1.1407.0) is now disabled within multi-field masks (i.e. within PRINT USING MASK, statements) because it was breaking compatibility with existing PRINT USING masks in which the the "!" character (intended to mark a single-character field) immediately followed a numeric mask, for example: PRINT USING "####!",A,B$ With this change, the "!" character is always interpreted as a single-char field within PRINT USING MASK statements. It continues to be interpreted as a conditional decimal point within USING MASK expressions (e.g. PRINT VAR USING MASK, or VAR = USING MASK), as well as within XTREE (Mask= advanced coldef clauses). 3. --- ATE / TELNET bug fix: In TELNET (or TUNNEL) mode, ATE was dropping FF characters unless followed by a valid IAC (Intepret as Command) byte. ============================================================================ A-Shell Release Notes Version 6.1.1417.0 (01 September 2015) ============================================================================ 1. --- AG_FTPSYNC (ATSYNC.LIT) fixes and refinements: - Client will now accept a timestamp from the server which it uses to fine-tune the test for whether the source file is newer or older than the destination. (This is useful in situations where the system clock and/or timezone is different enough between the server and client to create confusion as to which version is actually newer.) - Now, when the hashes are different (unless /NOHASH specified) or when the filesizes are different, the file is only transferred if the source timestamp is newer. (Disable that logic with /NOTIME to force a transfer unless the hashes and sizes are the same.) Previously it was always transferring files if the sizes were different. Note that the updated ATE client will resolve these issues regardless of whether the ATSYNC.LIT on the server is updated. 2. --- ATSYNC.LIT 1.3(121) refinements/bug fixes: - New version of ATSYNC adapts to the behavior of the client (based on whether it is before 6.1.1417.0 or not). This fixes an issue in which the /NOHASH switch was previously being misinterpreted by the client, causing the sync operation to not take place even if needed. - Setting DEBUG mode was causing the final FTP operation to fail. - Clean up the ambiguity in the ATSYNC.LST file relating to the client transfer log which is normally appended to the end. In cases where no files needed to be transferred, a previous copy of the client transfer log was being included. - Clean up several other minor user interface issues. ============================================================================ A-Shell Release Notes Version 6.1.1416.3 (29 August 2015) ============================================================================ 1. --- Compiler refinement (edit 748) - MAP2+ statements are now flagged as illegal if not preceded by a finalized MAP1 statement. Unfortunately, AlphaBASIC does not make it clear when a MAP1 statement is finalized, other than by the next MAP1 statement. But it is never quite clear if there will be another MAP statement since they are technically legal anywhere in a program. (In retrospect, the language could have used an "ENDMAP" statement, although you could effectively create your own just by defining a dummy MAP1 statement at the end of your last multi-level MAP structure.) The ambiguity didn't really have much significance in earlier versions of A-ShellBASIC, except perhaps in certain kinds of nested overlays, where one variable was overlaying another whose position was still in flux because it was part of a higher level array whose element members hadn't been finalized. But it became more of a problem with the introduction of the language features such as DEFSTRUCT, SIZEOF(VAR), .OFFSIZ(VAR), etc. As of now, the rule is that any reference to a previous variable, except in a MAP statement initializer (and when the referenced variable has been finalized), causes the current MAP1 level to be finalized. If you attempt to follow that with a MAP2 or higher, it will be triggered as an illegal MAP level. This may cause compile errors in programs that previously compiled, but it will prevent the kind of problem fixed in compiler edit 747 from escalating into a runtime problem. If you're not sure whether you've used the technique described, recompilation with this version (or higher) is highly recommended. 2. --- MESAG.SBR bug fix: When the length of the message was more than 60 characters, it was possible to see some display garbage in the area between the main message and the "CR TO CONTINUE" prompt. The new maximum size is 160 characters (to handle the GUI and ultra-wide screen cases). Anything longer, or anything longer than the terminal area allows, will be cleanly truncated. 3. --- Compiler bug fix (edit 749) - Fix bug introduced in edit 745 where a mapped overlay @var would incorrectly look for suscripted var if the immediately preceding variable on same level was subscripted. This was resulting in a spurious invalid overlay syntax error. ============================================================================ A-Shell Release Notes Version 6.1.1416.2 (28 August 2015) ============================================================================ 1. --- Compiler bug fix ***SERIOUS*** (edit 747) - referencing a variable in a MAP statement initializer was causing the side-effect of finalizing the parent MAP1 definition, which was then causing it be encoded in the RUN file with the wrong size. For example: MAP1 VARX MAP2 VAR1,F MAP2 VAR2,S,10,SOMEOTHERVAR MAP2 VAR3,S,16 In the above example, the reference to SOMEOTHERVAR was causing the compiler to finalize the VARX definition, which was effectively give it a size of 6 rather than 32. Symptoms included incorrect result of the LEN(VARX) function, truncated file reads/writes (if VARX was used as a file record), and truncated memory transfers (if VARX was used in an assignment or passed to a function or subroutine). The problem would also occur if another type of statement (e.g. PRINT or an assignment), which referenced a variable, was inserted in the middle of a series of MAP2+ statements. But note that it only affected the case where the source expression included a variable; it did not affect literals. So in the above example, if SOMEOTHERVAR was replaced with "THIS STRING", it wouldn't have been a problem. These are all pretty serious side effects, and would not likely escape notice, although it would have been (and was!) very hard to debug the underlying cause. However, since the problem was introduced in compiler edit 609 (in A-Shell 6.1.1316.0, August 2012), it is probably the case that anyone running on 6.1 for very long didn't use the problem initialization technique. But it remains a concern for anyone upgrading from 6.0 or prior, who are thereby strongly encouraged to upgrade to at least this version. ============================================================================ A-Shell Release Notes Version 6.1.1416.1 (27 August 2015) ============================================================================ 1. --- EFS (Linux) bug fix: the compiler was crashing the encrypted file system version of A-Shell due to an incompatible library function. ============================================================================ A-Shell Release Notes Version 6.1.1416.0 (25 August 2015) ============================================================================ 1. --- New MIAMEX function MX_FILECHINFO (161) returns information about an open file based on the file channel. (Similar to FILNAM.SBR but provides much more information.) xcall MIAMEX, MX_FILECHINFO, ch, status, fileinfo where ch (num) [in] is the file channel status (num) [out] returns > 0 if the file channel was located, else 0 filedata (ST_FILE_METADATA) [out] - returns info about the file ST_FILE_METADAT is defined in ashinc:ashell.sdf as: defstruct ST_FILE_METADATA ! [103] File metadata returned by MX_FILECHINFO map2 SPEC,s,160 ! file spec, as specified in OPEN map2 TYPE,b,1 ! see FILETYPE_xxx map2 DRIVER,b,1 ! internal implementation code (see FILEDVR_xxx) map2 MODE,b,2 ! see FILEMODE_xxx map2 HOOKID,b,4 ! file hook id map2 HOOKFLAGS,b,4 ! file hook flags map2 HOOKEVENTS,b,4 ! file hook events map2 RANDOM'ISAM ! fields for random and ISAM files map3 RECSIZ,b,4 ! record size (according to open; true size for ISAM) map3 BLKFCT,b,2 ! 0=spanblocks map3 RECCNT,b,4 ! # records (does not apply to ISAMA) map3 ISAMA ! ISAM-A only map4 INDEX,b,2 ! selected index # map4 ISFIND,i,2 ! result of last FIND # - see ISFIND_xxx map4 ISLOCK,b,4 ! current locked recno map4 LASTRECNUM,b,4 ! last rec # map2 SEQ ! fields for sequential files map3 SPOS,f,8 ! stream pos (0=start, -1=eof) map3 ISEQ ! input files only map4 CSVDELIM,s,2 ! CSV delimiter map3 OSEQ ! output files only map4 OPOS,b,4 ! output column position map4 LINENO,b,4 ! line # for cur pg - same as .LINENO(ch) map4 PAGENO,B,4 ! page # - same as .PAGENO(ch) Note: if you call the function on a version of A-Shell less than 6.1.1416.0, you may not get an error status, but the contents of the structure will be empty. 2. --- Windows 8.1+ High DPI IMGOP_CAPTURE partial fix: Starting with Windows 8.1, the IMGOP_CAPTURE function was returning a truncated image on high DPI monitors and when the DPI had been manually increased (to make fonts and other objects bigger). In particular, this was affecting the Screen Picture utility bundled with A-Shell. The fix resolves the issue when capturing the current or main window. (It remains a problem when capturing the screen or the client area option is checked.) 3. --- XTREE bug fix: close a GPF loophole in the new column optimization logic introduced in 6.1.1415.2. ============================================================================ A-Shell Release Notes Version 6.1.1415.2 (22 August 2015) ============================================================================ 1. --- INMEMO bug fix: reformatting the memo (Control+O) was not setting the "memo updated" flag, so if it was the only action during an editing session, the memo wouldn't have been rewritten. 2. --- XTREE refinement: Column width optimization now takes into account the effect of column merging (i.e. a pair of columns with the "O" and "o" cformat flags, respectively). Previously it either expanded the first column to contain all of its text (effectively wasting the available space in the merge-into column), or it ignored the first column text and just optimized it for the width of its header. 3. --- PRINT.LIT 3.3(127) Fixes failure to recognize the /NOLANDSCAPE and /NOPASSTHROUGH switches. /PORTRAIT is also now treated as an alias to /NOLANDSCAPE. ============================================================================ A-Shell Release Notes Version 6.1.1415.1 (12 August 2015) ============================================================================ 1. --- .LINENO(ch) refinement: lines starting with "//" (assumed to be GDI directives) are no longer included in the line count. 2. --- XTREE enhancement: A click exit on a non-editable tree now sets the XTR'XCOL and XTR'TARGETCOL parameters to the clicked-on column. (Previously these were only set for editable trees.) 3. --- XTREE bug fix: the XTF2_AUTOEXPROW feature (see 1415.0 below) wasn't working properly when replacing contents of an existing tree. 4. --- SftTree_IX86_U_70.dll updated (to version 7.0.3) to resolve some minor incompatibilities with Windows 10. ============================================================================ A-Shell Release Notes Version 6.1.1415.0 (05 August 2015) ============================================================================ 1. --- XTREE enhancement: In CSV mode (XTF2_CSV), you may now use the notation "\n" to embed a CRLF within a field, provided the cformat format column contains the "M" (allow embedded CRLFs) option. This avoids complications with parsing CSV files containing line breaks inside of fields. 2. --- XTREE enhancement: New flag XTF2_AUTOEXPROW (&h00400000) works analogously XTF2_AUTOEXPCOL to add extra space to each row to fill out the allotted vertical area of the tree. It only applies to trees with fixed height rows (XTF_VARY flag not set). It is normally accompanied by the XTMF_INTHEIGHT flag (in XTR'MISCFLAGS) which has a similar/related purpose. While XTMF_INTHEIGHT by itself (without XTF2_AUTOEXPROW) cause the height of the tree to shrink slightly, so as to avoid having a partially visible row at the bottom, XTF2_AUTOEXPROW causes the row heights to expand slightly, avoiding the partial row at the bottom but also avoiding the need to shrink the tree height. Note that while XTF2_AUTOEXPCOL may seem to make XTMF_INTHEIGHT superfluous, the requirement of making each row the same height may result in a small pixel remainder after dividing the extra space between the rows. The XTMF_INTHEIGHT flag will then eliminate that by making a small adjustment to the overall height. 3. --- AUI_CONTROL enhancement: The MBF_AUTOGROW option now works for static text controls containing embedded CRLFs, i.e. expands both the width and height of the field to contain the text. Previously it ignored the line breaks and treated it like a single line field. 4. --- AUI_WINDOW (and AG_SHOWWINDOW) refinement: In the SW_QUERY mode, the altpos grid unit returned was not taking into account the dialog grid scale factors specified in the Dialog Sizing dialog. This was also affecting the rows and cols returned as the size of a control affected by altpos units. 5. --- DIR.LIT 3.3(156), COPY.LIT 3.3(139), ERASE.LIT 3.4(127) remove excessively verbose DEBUG mode tracing from the previous versions. 6. --- Include four new icons in standard package (in icons subdirectory) - nav_left_24.png, nav_right_24.png, nav_up_24.png and nav_down_24.png. These are simple black triangles which can be useful in many contexts for simple directional navigation buttons. ============================================================================ A-Shell Release Notes Version 6.1.1414.7 (04 August 2015) ============================================================================ 1. --- Compiler refinement (edit 744) - Attempting to define a local dimx byref array without the required initial subscript value of -1 is now flagged as an error. Previously, no error was generate but the pass-by-reference mechanism would not have worked correctly. ============================================================================ A-Shell Release Notes Version 6.1.1414.6 (30 July 2015) ============================================================================ 1. --- ISAM 1.x bug fix: Close a loophole through which a bogus illegal record # error may have occurred after an automatic expansion of the IDA. ============================================================================ A-Shell Release Notes Version 6.1.1414.5 (26 July 2015) ============================================================================ 1. --- PDFX/Email (Type 4) bug fix and refinements. Close obscure loophole in which an error during the file attachment operation might have led to a domino effect whereby the To: address of the failed email got carried over to the next email. Improve error detection and logging. Note: to get the full effect of the refinements/fixes, you should also update ASHNET.DLL at the same time (see next). 2. --- ASHNET.DLL 1.7.152 closes a loophole in which certain attributes of a failed email request (PDFX Type 4) might get carried over to the next email. ============================================================================ A-Shell Release Notes Version 6.1.1414.4 (24 July 2015) ============================================================================ 1. --- Compiler bug fix (edit 743): MAP statements with initial values, when part of a DEFSTRUCT, were generating improper assignments in the RUN file. Typically these were benign, but in some cases they were causing the program to abort with a non-sensical error code during the initialization. ============================================================================ A-Shell Release Notes Version 6.1.1414.3 (14 July 2015) ============================================================================ 1. --- PDFX / APEX refinement: in some cases, the PDFX Save As dialog was getting coverted by the APEX preview window, leaving some users with the impression that the program was hung. ============================================================================ A-Shell Release Notes Version 6.1.1414.2 (14 July 2015) ============================================================================ 1. --- XCALL RENAME refinement: Under Windows, XCALL RENAME will now overwrite an existing destination file. It was never documented what it should do here, but this matches the way it has always worked under UNIX. The motivation for the change now is that it has been determined that Windows file sharing networks can sometimes yield false positives (i.e. report that the destination file exists when it doesn't), causing applications to fail unexpectedly (returning an error in the STATUS parameter of XCALL RENAME). Note that this does not affect RENAME.LIT, nor does it affect the MX_COPYFILE function (which can also be used to rename a file, but which offers an explicit option of whether to replace an existing file). 2. --- ISMBLD.LIT compatibility fix: ISMBLD.LIT 2.1(141) fixes a discrepancy between the AMOS and A-Shell behavior of the /D switch (used to change the IDA device). Previously, hitting ENTER to the "Enter new device name" prompt was causing an existing explicit device specification to be set to blank (meaning that the IDA is on the same device as the IDX). In contrast, the AMOS version was leaving the existing device specification alone in this case. Instead, you were expected to enter "." to remove an existing device specification. While the A-Shell version was treating "." as an invalid device. The updated ISMBLD.LIT 2.1(141) now matches the AMOS behavior, although the prompt has been enhanced to clarify the ENTER and "." options. While on the subject of the ISAM IDA device, please take a note to remember why the feature existed in the first place. It was a workaround to the 32MB limitation of the original AMOS disk devices. In the modern world, it makes no sense to split the IDX and IDA across different devices. It is strongly recommended that you keep the IDX and IDA on the same device under A-Shell (i.e. leave the the data file device option blank). ============================================================================ A-Shell Release Notes Version 6.1.1414.1 (12 July 2015) ============================================================================ 1. --- Fix problem failure of .ISNULL(x) to detect the null condition on ordmap(varstr;varx) maps. 2. --- COMPIL.LIT (and OCMPIL.LIT, COMPLP.LIT) 1.1(129) fixes a conflict between /L and /LI, and also fixes the broken /13 switch. (Not related to or dependent on any particular version of A-Shell.) ============================================================================ A-Shell Release Notes Version 6.1.1414.0 (02 July 2015) ============================================================================ 1. --- New dot function (compiler edit 742) for use with ordered maps to test for the .NULL condition: .ISNULL(var) Example usage: A$ = $MYMAP(KEY$) IF A$ = .NULL THEN ? "No such key in map" ! old method (deprecated now) IF .ISNULL(A$) THEN ? "No such key in map" ! new method In the example above, both methods of checking for .NULL are equivalent, provided that the map contains only string elements (and A$ is a string). The .ISNULL(var) method is now preferred though, as it works for non-string elements also. 2. --- Ordered map (aka associative array) enhancement: support for binary (X type) elements. Previously the elements could only be string type, making it difficult to handle elements with multiple parts (i.e. a structure). Syntax: dimx $smap, ordmap(varstr;varstr) ! (old) string key, string data dimx $xmap, ordmap(varstr;varx) ! (new) string key, unformatted data Once declared the usage syntax for the two variations of map is the same, except that you must use the new .ISNULL(var) method of testing for a non-existent element, as the old method of comparing against the system variable .NULL will not work for the X type elements or variables. As with ordered maps containing string elements, the unformatted (X type) elements are dynamically sized and thus may be of different length for each element. However, it is probably most useful for storing structures in ordered maps (directly analogous to an index file totally in memory). For example: defstruct ST_FOO map2 key,s,10 map2 f1,f ... endstruct map1 foo, ST_FOO ! instance of structure dimx $fooary, ordmap(varstr;varx) ! map of structures ... $fooary(foo.key) = foo ! load map directly from structure foo ... foo = $fooary(key) ! read from map into structure ? foo.key, foo.f1, ... ! access the structure members 3. --- APN compiler updated (to edit 742). 4. --- Windows compatibility enhancements: the internal mechanism for detecting the version of Windows (and thereby dealing with differences between them) has been upgraded to better support Windows 8.1 and beyond. The only outward change will be in the MX_OSVER function, which now reports the OS platform more explicitly for Win8, Win8.1, WinSvr2008 and WinSvr2012. ============================================================================ A-Shell Release Notes Version 6.1.1413.4 (01 July 2015) ============================================================================ 1. --- XTREE/PCKLST/ATE (GUI mode) bug fix: passing a variable in place of the MMOCLR param that was shorter than the normal 14 bytes was opening the possibility of a parsing error in the command relayed to ATE. That could have had a variety of strange effects, typically causing it to not display properly or not wait for operator input. (Note: the problem and fix were only on the server side.) 2. --- Compiler bug fix (edit 741) - compiler was failing to generate a syntax error for a .CLEAR statement when the associative array specification was missing the parentheses, i.e.: .CLEAR $A ! syntax error .CLEAR $A() ! correct This was resulting in an incorrect RUN file token sequence. ============================================================================ A-Shell Release Notes Version 6.1.1413.3 (30 June 2015) ============================================================================ 1. --- Bug fixes in the new image file cacheing scheme (see 1412 below) - was causing an eventual overflow in the directory scanning stack (showing up in the ashlow as "dirstack overflow"), which may caused failure of isolated directory operations. ============================================================================ A-Shell Release Notes Version 6.1.1413.2 (27 June 2015) ============================================================================ 1. --- PCKLST/XTREE bug fix: The ANSWER parameter wasn't being respected for setting the initial selection unless the advanced coldef option (XTF_COLDFX) was set. ============================================================================ A-Shell Release Notes Version 6.1.1413.1 (26 June 2015) ============================================================================ 1. --- Add an FOPENS trace to help track an issue with the the directory scanning stack. ============================================================================ A-Shell Release Notes Version 6.1.1413.0 (25 June 2015) ============================================================================ 1. --- New command line switch: -ua specifies "unattended mode". This is useful for running programs unattended but not fully in background. Currently the main effect is to convert any Message Boxes which would otherwise require user input to trace messages in the debug message window or on the screen. ============================================================================ A-Shell Release Notes Version 6.1.1412.1 (25 June 2015) ============================================================================ 1. --- XTEXT/ATE bug fix: memory buffer (vs. file mode) was failing to release a memory handle (eventually leading to an out of handles error). ============================================================================ A-Shell Release Notes Version 6.1.1412.0 (28 May 2015) ============================================================================ 1. --- A-Shell/Windows enhancement: to help alleviate the performance overhead when many image files (or icons) are loaded from a network file server, such images may now be automatically cached on the local workstation provided the following: - The environment variable ASWCACHE is defined and points to a valid directory. The directory will be created if it doesn't exist, provided the parent directory exists. It can be anywhere, but obviously should be on a local drive. - The operation of loading the image file into memory takes more than 10 ms. (This has been determined by limited testing as a reasonable threshhold between typical performance of local disks and that of network disks.) AUI_CONTROL will automatically check the cache first whenever it creates an image control, eliminating the overhead of reloading the file over the network if it is cached locally. Comments: Since the images are auto-cached as used, and auto-removed from the cache on exit, there is no need for any special management on the application's part (i.e. no need for manually syncing from the file server to the local workstation). However, since the benefit of the cacheing occurs starting with the second load of each image, it is only useful in applications which repetitively load the same images (or icons), from a file server, many times during a session. An easy way to set the environment variable is via the MX_SETENV function, or SETENV.LIT, e.g. .SETENV ASWCACHE=C:\VM\MIAME\CACHE WARNING: Since the cache directory is cleared on exit, you must be careful not to use a directory containing permanent files!!!!!!!!! You can trace the the cache logic by activating the FOPENS trace option. It shows the search operations, and also records how long the image load operation takes - look for "loadandresizex" in the ashlog.log or debug message window, e.g.in the following, the load takes just over 16 ms (16001 microseconds), and thus would be auto-cached if the cache is defined. loadandresizex (\\SERVER\icons\BETA\clock.png), rc=0, himg=78dfd0 [16001 us] ============================================================================ A-Shell Release Notes Version 6.1.1411.2 (28 May 2015) ============================================================================ 1. --- TCPX refinement: when an error occurs during the TCPOP_ACCEPT operation, a messagebox is no longer displayed. (This was causing a problem for unattended servers that could otherwise have recovered from the error.) Note that this did not affect servers that were running truly in background. 2. --- TCPX refinement: when TCPX is called with the FLAGS parameter set to -1, it now ignores the fact that the TCPXFLAG_TSL is set. Although -1 is an invalid value for FLAGS, it was apparently possible for applications to accidentally set this value due to a prior error, which then further confused matters by trying to use an uninitialized TSL channel. ============================================================================ A-Shell Release Notes Version 6.1.1411.1 (23 May 2015) ============================================================================ 1. --- APEX file retention bug fix/refinement: The previous scheme for retaining copies of files previewed by APEX allowed for an unlimited number of copies of each original file name. (They accumulated until deleted after the retention period specified in the Preview Preferences.) In cases where an application generates many printouts with the same name (such as tskaaa.lst) within the retention period, this allowed for an absurd number of files to be accumulated, degrading performance significantly. Worse, after 9999 copies, the file naming scheme went haywire, quickly leading to a "cannot find the path specified" error. The new scheme limits the number of copies for each unique original filename to 99 (e.g. tskaaa-1.apf thru tskaaa-99.apf), after which it wraps back around to -1. 2. --- ISMBLD.LIT 2.1(140) no longer stores the data file device in the IDX unless it is specified explicitly on the command line (e.g. ISMBLD DSK2:MYFILE) or to the "Data file device:" prompt. This partially rolls back a change introduced in 2.1(139) which made the data device explicit in all cases. The explicit data device specification was causing a problem for non-AMOS-conforming devices like ARCH27: or VSK: because of limitations in the historic binary format of the IDX. It was also inviting confusion when an IDX/IDA pair was copied to another location for testing. (If the data device specification was not updated using the ISMBLD /D switch, the new IDX would continue to reference the old IDA device, possibly leading to inadvertent updating of the wrong file.) Notes: - ISMDMP displays the data file device (only if it is non-blank). - ISMDMP /D can be used to change it. - If using an explicit data file device, make sure it follows the form of three alphabetic characters followed by a number 0-66635, e.g. DSK1: or XYZ999: 3. --- ERASE.LIT 3.4(126) adds a new switch, /F, which forces an affirmative response to the confirmation prompt that otherwise appears automatically when interactively attempting to erase multiple files via a wildcard. Note that the switch is redundant (but harmless) in non-interactive situations, except in the case where the ERASE command is at the very end of a CMD file (where the mode transitions back to interactive before the command executes). 4. --- ATE/PDFX bug fix: ATECFX.SBX 4.4(172) fixes a problem with the connection properties printer selection list in that it was listing virtual instances of PDFX5 printers that weren't really applicable for selection. ============================================================================ A-Shell Release Notes Version 6.1.1411.0 (22 May 2015) ============================================================================ 1. --- New AG_DELAYOP command (107) allows application to request a delayed operation to be performed in background. Currently this only works for deleting a control, but the range of possibilities may be expanded later. Syntax: ? TAB(-10,AG_DELAYOP);op,delayms,ctlid;tab(-1,127); op is the operation code. Currently only CTLOP_DEL (3) is supported. delayms is the number of milliseconds to wait before performing the operation. ctlid is the id (name or number) of the control to delete. If delayms and ctlid are omitted, and a prior delayed operation request is still pending, it will force the operation to take place immediately. The motivation here was mainly to allow applications to create status message panels that go away by themselves after the specified interval, thus providing more feedback to the user, without requiring any action on the user's part to acknowledge it, or on the application's part to remove it, or forcing the application to pause to allow the user to read it. For example, if the user gives the command to post some transactions, the application may want to display a confirmation message "Posting..." that appears for just a couple of seconds and then goes away. In addition to the new command, a wrapper procedure, StsMsgBox() has been added to the [907,12] directory of the SOSLIB which facilitates such messages, capitalizing on the new capability if available, and simulating it earlier versions. ============================================================================ A-Shell Release Notes Version 6.1.1410.5 (21 May 2015) ============================================================================ 1. --- UNIX Print Filter bug fix: prior fix for the $PREFIX AND $SUFFIX macros (in edit 1405) had the undesirable side effect of passing the DEVICE name (if present in the printer init file) to the print filter in place of the requested spooler name. This was mainly a problem for ASHLPR, which passes the spooler name to the AshLPD server. ============================================================================ A-Shell Release Notes Version 6.1.1410.4 (19 May 2015) ============================================================================ 1. --- ISAM-A bug fix: the record number and fstat variables were not working properly with SCALE. ============================================================================ A-Shell Release Notes Version 6.1.1410.3 (19 May 2015) ============================================================================ 1. --- XTREE bug fix: reloading a tree using XTROP_CREATE or XTROP_REPLACE was causing the images to disappear. (Introduced in 1410.0) 2. --- XTREE refinement: Variable height (XTF_VARY) and discrete images (using the ImgSiz "discrete" option introduced in 1410.0) now employ a cacheing system to make the loading and storage much more efficient when the same image is being used in multiple cells. ============================================================================ A-Shell Release Notes Version 6.1.1410.2 (19 May 2015) ============================================================================ 1. --- DIMX bug fix: Close a loophole allowing the automatic cleanup of a multi-dimensional DIMX defined locally within a function to crash A-Shell. ============================================================================ A-Shell Release Notes Version 6.1.1410.1 (18 May 2015) ============================================================================ 1. --- PRINT USING MASK bug fix/refinement: Literal N and n characters in PRINT USING MASK expressions were being misinterpreted as numeric fields. To avoid this, N and n are now ignored as possible leading numeric field indicators unless immediately preceded by a non-alphabetic character, and there are no alphabetic characters (other than N) to the right (all the way to the end of the mask). For example: PRINT USING "Neg. scans: NNN", X PRINT USING "Neg. scans: NNN (total)", X PRINT USING "Neg. scans: #nn (total)", X In all three statements, the "N" in "Neg." and the "n" in "scans" are treated as literals, since they are adjacent to alphabetic characters. In the first statement, the "NNN" acts as a mask (because there are no subsequent non-alpha chars.) In the second, the "NNN" is treated as a literal, because of the trailing alphabetic chars in "total"). In the third, the "#nn" is treated as a mask because "#" is an unambiguous leading mask character. Note that this limitation effectively disables the use of the leading "N" and "n" mask characters in PRINT USING MASKs containing trailing text, but it doesn't affect the use of "N" or "n" as trailing mask characters (e.g. "##.nn"), and doesn't generally affect the common case of USING MASK expressions (unless they contain trailing alphabetic characters, which is odd but legal). ============================================================================ A-Shell Release Notes Version 6.1.1410.0 (16 May 2015) ============================================================================ 1. --- XTREE enhancement: Constant data columns (whose data is the same in every cell) may now be defined independently of the data array. This is most useful for columns that contain "buttons", such as an "delete item" button on every row, but in theory could be used for anything. To define such a column, set the cpos and cformat parameters to -1. The data for column is defined via a new Advanced Coldef Option Data=, where specifies the text that would normally come from the data array. For example, you can define a column of delete "buttons" as follows: coldef += "-1~-1~Del~I~ImgSiz=16,16,24~ImgCount=1~" & + "Data=delete2::ashico1~ClickExit=-300,0~~" 2. --- XTREE refinement: Icon images can now be used with fixed height rows (i.e. without requiring the XTF_VARY switch), provided the new "discrete" option in the ImgSiz= clause is specified, e.g.: ImgSiz=16,16,24,discrete~~ 3. --- XTREE enhancement: trees may now contain more than one image column. 4. --- SCALE bug fixes: the dot functions .EXTENT and .NEXT, and the system variable DEBUG, were not working properly with SCALE. 5. --- ASHNET.DLL 1.7.151 fixes a problem with extracting the port from the end of the URL (introduced in 1.7.146). ============================================================================ A-Shell Release Notes Version 6.1.1409.3 (13 May 2015) ============================================================================ 1. --- LOAD.LIT 3.0(110) fixes a problem with loading PFK files. (They loaded, but didn't work.) Problem was introduced in 6.0.1000. (apparently PFK files are not commonly used!) 2. --- APN.LIT 1.0(105) fixes problem with new files being created with upper case names, which interfered with APN file extension matching rules. Also it now allows files with no extension (using explicit trailing "."), and properly handles some legal but unusual variations of AMOS-style specs, e.g. "[5,6]FNAME". 3. --- PDFX bug fix: Email.Content handling was in some cases causing a GPF or simply generating garbage content in the email message. ============================================================================ A-Shell Release Notes Version 6.1.1409.2 (06 May 2015) ============================================================================ 1. --- PDFX bug fix: Email.Type,5 wasn't working. 2. --- PDFX5/XTREE bug fix: The XTREE print operation was generating a PDFX error in the case were PDFX5 was licensed but no PDFX printing had yet been done in the session. Note that when printing XTREE to PDFX, you should use the "PDF-X/A-Shell-" printer. (This one will have been been pre- configured to work with the XTREE print preview, and unlike the case with PDFX version 3, will recognize the license and omit the demo watermarks.) 3. --- DSKCOM.SBR bug fixes: Aliasing COMMON to DSKCOM (ALIAS=COMMON,DSKCOM) wasn't working as expected. Also DSKCOM was not defaulting to destructive read like it should to match the COMMON behavior (and documentation). ============================================================================ A-Shell Release Notes Version 6.1.1409.1 (05 May 2015) ============================================================================ 1. --- XTREE control (SftTree_IX86_U_70.dll) updated to version 7.0.2, adding support for Windows 10 and fixing a minor problem with column width in Print Preview mode being slightly too narrow, causing an ellipsis where the entire column contents should have displayed. ============================================================================ A-Shell Release Notes Version 6.1.1409.0 (05 May 2015) ============================================================================ 1. --- XTREE enhancement: new xtr'miscflags option XTMF_NOEXTARGET (&h80) addresses an obscure situation involving dual editable trees. Normally, if the user clicks on Tree #2, row X, col Y while editing Tree #1, the return value of xtr'targetrow and xtr'targetcol will be set according to clicked cell in the external Tree #2. (xtr'xrow / xtr'xcol will be set to the cell Tree #1 that was last active at the time of that external click). If the new XTMF_NOEXTARGET flag is set, the location of click in the external tree is ignored and the returned xtr'targetrow / xtr'targetcol will be set the same as xtr'xrow / xtr'xcol, i.e. to the cell last active before the click. A rationale for this subtle feature may be found in the A-Shell Forum post http://www.microsabio.net/ubb2/ultimatebb.cgi?ubb=get_topic;f=5;t=001454 2. --- DUMP.LIT 1.0(106) fixes a problem in which the /L switch being interpreted as part of the filename. 3. --- DIR.LIT 3.3(155) refines the operation of the /1 switch to remove the trailing blanks from the output, making it much more like the UNIX ls -1 utility that it is modeled after. 4. --- PAGE.LIT 1.0(103) fixes a bug in which it was treating any /? on the command line as a request to display the PAGE.LIT syntax help, rather than the syntax help of another command (e.g. PAGE DIR/? now pages the output of DIR/? rather than PAGE/?). ============================================================================ A-Shell Release Notes Version 6.1.1408.5 (05 May 2015) ============================================================================ 1. --- AUI refinement: when a modeless dialog is created in an initial minimized or maximized state, the min/max buttons (MBF2_MINBUTTON, MBF_MAXBUTTON) are now automatically added. (This is a follow-up revision to 1402.7 which removed the buttons when the corresponding flags were not specified, but it doesn't make sense to create a minimized or maximized dialog without buttons to normalize it.) 2. --- CGIUTL.SBR bug fix: CGIOP_GETPAR was getting stuck in an infinite loop when trying to retrieve a parameter whose name as a subset of a previous of a previous parameter name or value. ============================================================================ A-Shell Release Notes Version 6.1.1408.4 (04 May 2015) ============================================================================ 1. --- ASNHET.DLL 1.7.150 recompiled/relinked with latest third-party libraries. Also, ashnet.log entries are now separated into two parts: one prior to the request and one after it (identifying any incomplete requests and also showing elapsed to process the request). 2. --- Clipboard refinement: marked text (on plain text screens) now automatically copied to the clipboard, eliminating need for ^C or Edit > Copy. 3. --- MX_AGWRAPPER refinement to previous enhancement in 6.1.1399.0 - when used with AG_SHLEXEC, it now examines the parameter list to determine whether to use the single character or extended response mode. (Since 1399 it was using the single character mode, which was truncating the exit-status for applications that specified the &h0200 waitflag. ============================================================================ A-Shell Release Notes Version 6.1.1408.3 (04 May 2015) ============================================================================ 1. --- PDFX5 fix: Email.Content was getting truncated at 256 characters for Email.Type (or Email.Method) 1 and 2. ============================================================================ A-Shell Release Notes Version 6.1.1408.2 (28 Apr 2015) ============================================================================ 1. --- ASHNET.DLL 1.7.149 adds a timestamp to the HTTP.SBR ashnet.log entries. ============================================================================ A-Shell Release Notes Version 6.1.1408.1 (25 Apr 2015) ============================================================================ 1. --- PDFX5 workaround - The new PDF-X v5 driver defaults to A4 papersize (some kind of English payback to the colonials), rather than to the size set in the driver's properties dialog. To overcome this, A-Shell now translates PAPERSIZE command (both the printer init file version and the //PAPERSIZE GDI directive) into a //PDFX.Paper.SheetSizeIndex command so the PDF output matches the expected paper size. To take proper advantage of this workaround, add a PAPERSIZE=LETTER (or whatever your preferred size) to the printer init file(s) used for PDF-XChange v5 printing. ============================================================================ A-Shell Release Notes Version 6.1.1408.0 (24 Apr 2015) ============================================================================ 1. --- Windows enhancement: A-Shell now detects duplicate machine names (which previousy would have led to the nth instance on machine 2 overwriting the JOBTBL record for the nth instance on machine 1. In order for this to work, you must run the installer/updater to update each workstation, (rather than manually installing the update by copying files). It is also important to update the six LIT commands (described in the next item), although the installer will normally take care of this for you. The installer/updater establishes a unique identifier for each machine and saves it in the HKLM section of the registry, to be used to determine whether an instance with the same machine name as an existing instance is actually the same machine or not. If so, then the new instance can safely overwrite the old one. But if not, an error message is displayed and the new session is not allowed to start. The error message will indicate the machine name, the user name and jobname of the offending existing instance, and the unique identifiers (8 hex digits) for the two machines. You can use the new SYSTAT/CU switch to display the unique identifiers for existing sessions, which may be helpful in tracking down the offending duplicate-named machine. Note that duplicate named machines can cause all kinds of problems for Windows networking, but it is not always detected. This new feature should help avoid the ensuing problems in both A-Shell and in the network in general. Also note that the issue only affects P2P networks; ATE, Terminal Server, and UNIX systems are not subject to the problem and are not affected by the update. 2. --- Updated LIT commands: these updates are necessary to recognize and preserve the new unique identifer field in the JOBTBL. (The new commands are also backward compatible with earlier versions of A-Shell). All have a B in version to help easily identify them: FORCE.LIT 2.0B(107) JSTAT.LIT 3.1B(108) KILL.LIT 2.2B(123) LICENS.LIT 2.4B(132) SEND.LIT 2.2B(123) SYSTAT.LIT 3.1B(171) The update SYSTAT also supports the new /CU switch, which is like /C but displays both the machine name and unique identifier (in place of the user name and login columns). 3. --- Mask bug fix: the introduction of the 'N' and 'n' mask characters in 1407 broke the PRINT USING MASK operation. ============================================================================ A-Shell Release Notes Version 6.1.1407.3 (23 Apr 2015) ============================================================================ 1. --- Refinement to the "n" and "!" format mask characters (introduced in 1407.0). "n" to the right of the decimal point no longer overrides the behavior of "#" to the right of the decimal. For example, 1.2 using "#.##n" now results in "1.20" (previously would have been "1.2"). Also, when there are trailing non-digit format characters, "n" will remove any zeroes converted to space, shifting the trailing characters over. For example, 1.2 using "#.#n%" results in "1.2%" (previously would have been "1.2 %"). When "!" results in the decimal point being removed (because there are no displayed digits to the right), it will remove the position, shifting any trailing characters over (as in the "n" case just described) if it is immediately followed by an "n". For example, 5 using "#!N%" results in "5 %", whereas 5 using "#!n%" results in "5%". ============================================================================ A-Shell Release Notes Version 6.1.1407.2 (21 Apr 2015) ============================================================================ 1. --- PDFX version 5 (pre-release) refinement - driver can now be renamed provided that the first 12 characters remain "PDF-XChange ". 2. --- PDFX version 5 (pre-release) refinements to the Info property handling. 3. --- AUI_CONTROL bug fix: setting the func parameter to NUL_FUNC$ (or "") for a checkbox or radiobutton was not fully eliminating the possibility of a memory access error if the control was created within an SBX that terminated while the control was still active. ============================================================================ A-Shell Release Notes Version 6.1.1407.1 (20 Apr 2015) ============================================================================ 1. --- Mask bug fix: leading # was acting like N (introduced in 1407.0) ============================================================================ A-Shell Release Notes Version 6.1.1407.0 (19 Apr 2015) ============================================================================ 1. --- Language enhancement: Three new numeric formatting mask characters added: "N" behaves the same as "#", except that when placed after a decimal point, it causes any trailing zeros to be converted to blanks. If placed before the decimal point, and not followed by any "#" characters prior to the decimal point, then it causes leading zeros to be convered to blanks. (This is similar to the normal case with "#", except that for values less than 1, "#" will display a leading zero whereas "N" will not. "n" behaves just like "N", except that to the left of the decimal point it causes leading blanks to be stripped, and to the right of the decimal point, trailing blanks to be stripped. "!" behaves like ".", except that if there are no non-zero digits to the right of the decimal point in the formatted output, it changes the decimal point in the formatted output to a space. Note that "!" is also used to denote a single character field in a PRINT USING MASK statement. The two different uses of the same mask character should be clear to the interpreter from the context. Examples: 1234.5 using "$$###,###.###" displays " $1,234.500" 1234.5 using "$$###,###.NNN" displays " $1,234.5 " 1234.5 using "$$###,###.nnn" displays " $1,234.5" 1234.5 using "$$###,###!nnn" displays " $1,234.5" 1234.5 using "$$nnn,nnn!nnn" displays "$1,234.5" 1234.5 using "nnn,nnn.nnn$" displays "1,234.5 $" 1234.0 using "$$###,###!NNN" displays " $1,234 " 1234.0 using "$$###,###!nnn" displays " $1,234" 1234.0 using "$$nnn,nnn!nnn" displays "$1,234" 1234.0 using "$nnnn,nnn!nnn" displays "$ 1,234" 0 using "###.#" displays " 0.0" 0 using "###.N" displays " 0. " 0 using "NNN.n" displays " ." 0 using "NNN!n" displays "" 0 using "nnn.N" displays ". " 0 using "nnn!N" displays "" 0 using "nnn.n" displays "." 0 using "nnn!n" displays "" 1.23 using "n.###" displays "1.230" 0.23 using "n.###" displays ".230" Note: this is purely a runtime enhancement, since the compiler does not do any validation of masks. 2. --- XTREE print/preview now recognizes the PDFX license if the PDFX version 5 (aka PDF-XChange Printer 2012) driver is installed and the user selects the "PDFX/A-Shell" printer. 3. --- AUI refinement: the logic that auto-deletes controls with conflicting coordinates now ignores controls belonging to a TAB control parent. (The main purpose of the auto-deletion is to accommodate automatic conversion of text-based programs to GUI, but such program would not involve a TAB control, for which there is no text-based analog. On the other hand, some programs involving TAB controls might purposefully create child controls for multiple panels and AUI would have no way of distinguishing these because all the panels share the same effective parent ID. 4. --- AUI bug fix: minimizing a modeless dialog no longer minimizes the main window. (This problem was introduced in 1401.) 5. --- AUI bug fix: static icon children of TABX controls were in some cases displaying with black rather than static backgrounds. ============================================================================ A-Shell Release Notes Version 6.1.1406.9 (15 Apr 2015) ============================================================================ 1. --- XTREE bug fix - double-click exits were in some cases leaving an extra event in the queue, causing the next tree to exit immediately. (Problem believed to have been introduced since 1400, but not sure where.) ============================================================================ A-Shell Release Notes Version 6.1.1406.8 (14 Apr 2015) ============================================================================ 1. --- (experimental) Fix for problem with click events not getting cleared after first EVENTWAIT. 2. --- (experimental) XCALL FTP2 enhancement: now supports FTP/SFTP remote delete. Syntax is same as before, except for the new opcode XFTPF_DEL (&h00100000). It may be combined with the opcode flags in the same way that the XFTPF_GET and XFTPF_PUT opcodes are. The banner message has not been updated to say "deleting" so you may want to disable it with XFTPF_NOBANNER. The hostfile may contain the "*" wildcard character (matching zero or more characters, non-greedy). For example, e.g. "abc*.l*" or "*x*". The localpath parameter is not used. The status parameter will return the number of remote files deleted. 0 just means none. Errors will return < 0. Notes: - The implementation is actually in ASHNET.DLL 1.7.148, and if you try to use the new XFTPF_DEL opcode with an older version of ASHNET.DLL, it will act like XFTPF_GET. To force an error instead, you can put something invalid in localpath, since it would only come into place when an older version mistook the XFTPF_DEL for XFTPF_GET. - Directories will be skipped. - The semantics should be the same between FTP and SFTP, although the underlying protocols and implementations (on both the server and client) are different, so there may be some differences in behavior. Some servers (and in particular some AMOS FTP servers) may not allow wildcards. ============================================================================ A-Shell Release Notes Version 6.1.1406.7 (13 Apr 2015) ============================================================================ 1. --- Adjust display characteristics of INFLD checkboxes, radiobuttons, and disabled fields to match AUI_CONTROL versions of same controls. ============================================================================ A-Shell Release Notes Version 6.1.1406.6 (03 Apr 2015) ============================================================================ 1. --- PDF-X Bug Fix: Email.Headers were broken in 1406.0. (There were generating error messages in the ashlog.log, but otherwise were ignored.) ============================================================================ A-Shell Release Notes Version 6.1.1406.5 (02 Apr 2015) ============================================================================ 1. --- Runtime bug fix: X MOD 0 was causing A-Shell to crash. Now it returns BASIC error #10 (divide by zero), unless the DIVIDE'BY'0 statement was previously executed (in which case it returns 0). ============================================================================ A-Shell Release Notes Version 6.1.1406.4 (01 Apr 2015) ============================================================================ ============================================================================ A-Shell Release Notes Version 6.1.1406.3 (01 Apr 2015) ============================================================================ 1. --- INFLD/ATE bug fix - the prior fix (in 1405.6) didn't handle the case of right justified fields, which were losing the last character of the field. 2. --- APEX custom extensions bug fix: Clicking on any of the custom extension toolbar buttons was causing APEX to crash. (Problem was introduced in 1405.0) ============================================================================ A-Shell Release Notes Version 6.1.1406.2 (27 Mar 2015) ============================================================================ 1. --- XTREE (server-side) bug fix: close a window of opportunity for an invalid memory reference (leading to SIGSEGV or GPF) in an obscure case where XTROP_REPLACE is used to replace an existing set of rows with an empty set. 2. --- ATSD licensing refinement: ATSD now uses the ATE machine name (if available) as the console/device name (as shown in SYSTAT/C). Previously it was using a name constructed from the ATSD service login and memory address, which was resulting hitting the license limit one node too soon (in cases where some nodes had multiple instances). ============================================================================ A-Shell Release Notes Version 6.1.1406.1 (26 Mar 2015) ============================================================================ 1. --- GDI printing bug fix/enhancement: //TEXTRECTANGLE (syntax two) now supports TRF_BOTTOM with multi-line (wrapped) text. Previously bottom alignment only worked with TRF_SINGLELINE; otherwise it reverted to the default top alignment. ============================================================================ A-Shell Release Notes Version 6.1.1406.0 (26 Mar 2015) ============================================================================ 1. --- XTREE enhancement: a new field, XTR'LEFTINDEX, has been added to the XTRCTL parameter to allow the application to control the horizontal scroll position on entering the tree. The field is mapped at the end of XTRCTL (taking one byte out of the FILL), as indicated here for edit [133]: map2 XTR'CTLID,B,2 ! [132] A-Shell ctl # map2 XTR'LEFTINDEX,B,1 ! [133] Left-most visible column map2 XTR'UNUSED2,X,14 ! [133] was 15 ! (total size = 128) (The updated XTREE.MAP and XTREE.SDF files are available via the SOSLIB repository, although you can update your own manually based on the above excerpt.) The field acts analogously to XTR'TOPINDEX, substituting the left-most visible column for the top-most visible row. When set by the application, XTREE will attempt to set the horizontal scroll so that the specified column (first column = 1) is visible at the left edge of the display window. This however will be overridden if necessary to make the target column (XTR'TARGCOL) visible, or if it is simply impossible to accommodate. As with XTR'TOPINDEX, if the XTR'LEFTINDEX field is non-zero on entrance, it will be updated on exit to indicate the left-most column that is partially or wholly visible on exiting the tree. Since the field resolution doesn't support fractional columns, this may result in a partial-column shift when exiting and re-entering. (You can avoid that by either setting the field back to zero, or specifying the XTF_NOREDRAW flag.) 2. --- Internal preliminary work on support for new PDF-X drivers. ============================================================================ A-Shell Release Notes Version 6.1.1405.6 (25 Mar 2015) ============================================================================ 1. --- XTREE/ATE (client-side) bug fix: the row update optimization was creating a bogus extra row when using XTROP_REPLACE and the first row being loaded didn't match the existing first row. Problem has been present for a long time, but most likely only became visible after updating both the server and client beyond 6.1.1400.3. 2. --- INFLD/ATE (server-side) bug fix: in some cases, fields without an explicit MAXCHARS specification weren't returning any data. (Introduced in 1405.3) ============================================================================ A-Shell Release Notes Version 6.1.1405.5 (25 Mar 2015) ============================================================================ 1. --- XTREE diagnostic feature: defining the environment variable XTRNOOPT1=1 on the server side will disable a particular row optimization (for testing purposes). ============================================================================ A-Shell Release Notes Version 6.1.1405.4 (23 Mar 2015) ============================================================================ 1. --- EVENTWAIT bug fix: Was using excessive CPU time when TIMER option active. ============================================================================ A-Shell Release Notes Version 6.1.1405.3 (19 Mar 2015) ============================================================================ 1. --- INFLD / ATE bug fix: The maximum field length was being artificially limited to 456 bytes when in ATE mode. ============================================================================ A-Shell Release Notes Version 6.1.1405.2 (14 Mar 2015) ============================================================================ 1. --- PDFX bug fix: Save.Type,3 (delete after email) was causing various problems when used with Email.Type 4+. At best it was causing the process to wait a long time before giving up, and in the case where the driver was running in background (such as on an ATSD server), it was simply hanging indefinitely. With this patch, it works as expected with Email.Type,4. For Types 5 and 6, the delete option is just ignored (since it can't be coordinated with the async MAPI interface to the email client). ============================================================================ A-Shell Release Notes Version 6.1.1405.1 (11 Mar 2015) ============================================================================ 1. --- (ATSD) The FORCE command, and some SEND command variations, were failing to work on jobs running under ATSD. Note that even with the fix, FORCE will not work properly if the target is in an ATE client-side GUI operation. 2. --- Runtime bug fix: setting a dynamic overlay variable to a zero-extent array no longer generates a subscript out of range error. 3. --- XTREE refinements: clean up a few minor internal issues related to cases where you are rapidly entering/exiting a tree (such as with ExitChars and SelChgExit). 4. --- PDFX bug fixes/refinements: - The waiting dialog (added in 6.1.1401.0) was causing the session to hang when running PDFX on an ATSD server (under certain Windows Server versions). Now when the file takes more than 5 seconds to appear in the directory, it starts displaying a status message on the bottom status line, and waits up to 40 seconds before giving up. For local Windows operation, it uses the session status line (rather than the bottom status line) to display the waiting status message. - Specifying a file in an Email.AttachFile statement that does not exist was in some cases causing the session to crash. 5. --- FTP2.SBR / ASHNET.DLL 1.7(147) refinement: you can now override the default timeout for FTP2.SBR (60 seconds) by defining the environment variable FTP2TIMEOUT as the desired timeout in seconds, e.g. .SETENV FTP2TIMEOUT=10 Note that this is implemented entirely in ASHNET.DLL. ============================================================================ A-Shell Release Notes Version 6.1.1405.0 (03 Mar 2015) ============================================================================ 1. --- Revisions to file auto-close behavior with respect to SBXs: - ASQL connections are now auto-disconnected using the same set of rules used for the auto-closing of normal files (described below). - By default, files (and ASQL connections) are auto-closed only when a RUN file terminates (i.e. not on return from an SBX). - If the AF_SBXASRUN flag is set at the time a file is opened within an SBX, that file will be auto-closed (or auto-disconnected for ASQL) when the SBX returns. Note that while this behavior is intended as a convenience for unexpected aborts within an SBX, auto-disconnecting an ASQL connection does not auto-close the ASQL library itself. (That probably won't matter to the application, but may prevent the library from being unloaded until the A-Shell process finally terminates.) - In a nested SBX call (where an SBX calls another SBX), if the AF_SBXASRUN flag is clear when the file is opened, then it will be auto-closed or auto- disconnected on return from the last SBX that was called with the flag set. For example, if A.RUN XCALLs B.SBX, which sets the AF_SBXASRUN flag and XCALLs C.SBX, which clears it, then any files subseuqently opened in C.SBX will be closed when B.SBX (not C.SBX) returns. 2. --- Revisions to ASFLAG behavior. Previously, the ASFLAG options were cleared at the start of each SBX. They are now passed from the current program (parent) to the SBX (child). As before, flags set within the SBX do not affect the caller, except for AF_EXITSBX and AF_SETCTRLC. 3. --- Eliminate the AF_SQLPERSIST flag in ASFLAG.SBR (introduced in 6.1.1404). 4. --- Print filter bug fix: the $PREFIX and $SUFFIX macros (introduced in 6.1.1398) were failing to get set by the prefix and suffix parameters in the SPOOL or EZSPL subroutine call. (Values passed as parameters in the XCALL should override any corresponding settings in the printer init file.) 5. --- Windows Print filter bug fix: changes to the copies and switches within a print filter (under Windows) were not having the desired effect if the print filter returned with STS=1 (to proceed with printing). 6. --- CGI bug fix: the parameter passed to the CGIOP_STDOUT call was being truncated at 4095 bytes. ============================================================================ A-Shell Release Notes Version 6.1.1404.2 (01 Mar 2015) ============================================================================ 1. --- XGETARG(S) refinement: use of XGETARG or XGETARGS in a global (non SBX, not function/procedure) context no longer generates an invalid syntax or unsupported function error. Instead, it just acts the same as it would in a valid context where no arguments were passed, i.e. it sets any specified receive parameters to null. 2. --- EVENTWAIT accelerator bug fix: accelerators were being ignored for controls without the MBF_KBD flag, limiting the ability to use accelerators with MBF_SHLEXC or MBF_CMDLIN controls. Also, when using the EVW_ACCEL flag, it was treating them as case sensitive (when it shouldn't). ============================================================================ A-Shell Release Notes Version 6.1.1404.1 (24 Feb 2015) ============================================================================ 1. --- APEX bug fix: window size and position wasn't being saved/restored properly when the "Force Main Window To Wait" option was set. (They were getting saved relativel to the desktop but restored relative to the parent window.) ============================================================================ A-Shell Release Notes Version 6.1.1404.0 (23 Feb 2015) ============================================================================ 1. --- Enhancement/change to ASQL: database connections are now auto-closed when the RUN file terminates (analogous to the auto-closing of ordinary files). Currently this only works for the ASQL/MySQL connector, which must be updated to version 1.4.140. (An ODBC update will follow.) Earlier connectors will just ignore the auto-close request. Note that this is a change in behavior, since database connections were previously left open unless explicitly closed. This behavior was deemed sub-optimal because most applications were not aware of it, with the result that connections would accumulate when programs exited due to other errors. If you want to keep the old behavior, see the new ASFLAG AF_SQLPERSIST (below). Also note that the auto-close behavior applies to SBXs when the AF_SBXASRUN flag is set (again, analogous to the auto-closing of regular files). 2. --- New ASFLAG.SBR flag AF_SQLPERSIST (&h00200000) disables the auto-closing of SQL connections at the end of a program (described above). 3. --- ASQL / MySQL connector enhancement: version 1.4.140 supports a new opcode: SQLOP_DISCONNECT_ALL (24): XCALL SQL, SQLOP_DISCONNECT_ALL, cmdhdr The cmdhdr argument is required as a formality, but the contents are ignored. This opcode is mainly for internal use (to support the auto-close feature described above), but might also be useful in an application error handling routine, particularly if using the AF_SQLPERSIST flag (see above). If SQLOP_DISCONNECT_ALL is passed to a connector that doesn't support the feature, the rc field of the cmdhdr structure will be set to SQLERR_BADOPCODE (9). Side note: the 1.4.140 connector update also fixes a problem parsing the SQLOP_CONNECT connectstring that was causing connection failure for otherwise valid connection parameters due to multiple spaces between the parameters in the string. ============================================================================ A-Shell Release Notes Version 6.1.1403.0 (19 Feb 2015) ============================================================================ 1. --- AUI_CONTROL enhancement: the WS_EX_CONTEXTHELP flag in the winstylex parameter now adds a "?" button to the right end of the capture bar of a dialog; clicking the button sends exitcode -70. Note that to use this feature, you must specify MBF_SYSMENU but not either of the min/max buttons. 2. --- XINNOE bug fix: the prior fix (1402.2) failed to handle dynamic variables and also variables larger than the millicolumn limit (900). ============================================================================ A-Shell Release Notes Version 6.1.1402.7 (18 Feb 2015) ============================================================================ 1. --- AUI_CONTROL bug fix / behavior change: When creating a dialog, the MBF_SYSMENU flag no longer automatically adds the min/max buttons to the title bar. To get this effect, you need to add the MBF_MAXBUTTON and/or MBF2_MINBUTTON flags. (Prior to 1400.1, the min button was added/enabled automatically for modeless dialogs; after 1400.1 it was added/enabled for all dialogs. Now it requires the explicit flags.) ============================================================================ A-Shell Release Notes Version 6.1.1402.6 (18 Feb 2015) ============================================================================ 1. --- Window state bug fix: minimizing/restoring a maximized dialog by clicking on the task bar button was sometimes resulting in the dialog being restored to the normal rather than maximized position. ============================================================================ A-Shell Release Notes Version 6.1.1402.5 (17 Feb 2015) ============================================================================ 1. --- AUI_CONTROL bug fix: resizing the window was causing custom font weights to be reset to the default weight. 2. --- AUI_CONTROL bug fix: static text controls with the MBF2_CUSTDRAW option were often becoming garbled (due to overwriting) when resizing them. (The problem would clear itself after a display refresh.) 3. --- Tracing improvement: in the MALLOC traces, user memory modules are now labeled "USR:name.ext" instead of just "USRMEM". 4. --- Function key translation bug fix: deleting an IFX (translation) module using XCALL AMOS,"DEL *" or some similar programmatic means, particularly when nested within SBX or AMOS xcalls, was leading to a variety of problems with function key handling. (The least of these was that function keys would stop working properly. Other symptoms were garbage in the input buffer and even memory corruption.) 5. --- XTREE bug fix: close a loophole that allowed an invalid memory reference to occur if a font column (cformat "f") contained a fontidx that had no corresponding font definition. (This was actually an application bug, but XTREE was allowing that to possibly lead to worse problems; now the bad reference is logged to the ashlog.log but otherwise ignored.) ============================================================================ A-Shell Release Notes Version 6.1.1402.4 (12 Feb 2015) ============================================================================ 1. --- Auto_extend bug fix: arrays were being auto-extended on read access. (They should only be auto-extended on assignments, i.e. write access.) Behavior may have been harmless but may have covered up logic errors in applications. Problem was introduced in 6.1.1391.4. ============================================================================ A-Shell Release Notes Version 6.1.1402.3 (12 Feb 2015) ============================================================================ 1. --- ATE / ATSD / AUXLOC printing bug fix: When printing from ATSD to an ATE client (via AUXLOC:), session was getting stuck until the local keyboard mode flag was manually cleared (via the menu). Problem was introduced in 1399.6 but did not affect UNIX/AUXLOC printing. ============================================================================ A-Shell Release Notes Version 6.1.1402.2 (11 Feb 2015) ============================================================================ 1. --- XCALL XINNOE bug fix: the byte following the end of the variable passed to it was being set to null. Also, if the input data was longer than the specified variable, it was overwriting the following memory. (The first problem goes back at least to 6.0, while the second problem was introduced in 6.1.1311.) ============================================================================ A-Shell Release Notes Version 6.1.1402.1 (10 Feb 2015) ============================================================================ 1. --- XTREE bug fix: the context menu checkbox operations ($CBSET, $CBSETDEP, $CBRST, $CBRSTDEP, and $CBUNDO) were, in some cases, causing checkboxes to disappear entirely, or to appear in cells which originally were blank. Also, the operations were unnecessarily slow. ============================================================================ A-Shell Release Notes Version 6.1.1402.0 (09 Feb 2015) ============================================================================ 1. --- File hook enhancement: two new file hook events have been added to hook ISAM add (5) and delete (6) operations. The two events have been added to HOOK.DEF as: define HFE_ISAM_ADD = &h00080000 ! ISAM 5 (add) define HFE_ISAM_DEL = &h00100000 ! ISAM 6 (delete) Note that unlike most of the other file hooks, these don't come in PRE- and POST- flavors. For the ADD hook, the record data supplied to the hook routine (rec parameter) will contain the key rather than the record data. (Since ISAM adds are followed by a WRITE statement, you can hook that to get the contents of the record itself.) For the DEL hook, the record data (of the record being deleted) is supplied to the hook routine in the pre'rec parameter. (The rec parameter should be ignored.) The sample hook program FHOOKTST3.BP and hook subroutine FHOOK1.SBX in [908,50] of the EXLIB have been updated to illustrate both hooks. ============================================================================ A-Shell Release Notes Version 6.1.1401.2 (06 Feb 2015) ============================================================================ 1. --- EVENTWAIT bug fix: function keys were not being picked up cleanly when the timer option was active. (It was waiting for a second keystroke, which then left an extra character in the input buffer.) ============================================================================ A-Shell Release Notes Version 6.1.1401.1 (05 Feb 2015) ============================================================================ 1. --- ATE bug fix: keystrokes added to the end of the ATE launch command line (using the ^M leadin - see 6.1.1343) had stopped working in edit 1400. ============================================================================ A-Shell Release Notes Version 6.1.1401.0 (28 Jan 2015) ============================================================================ 1. --- PDFX refinement: problems with the PDFX writing process falling too far behind the application are now handled by waiting indefinitely for it to catch up. After 10 seconds, a modeless dialog will appear giving the option to cancel the wait if necessary. Previously it only waited a maximum of 20 seconds, which was more than enough except in extreme cases. 2. --- Internationalize the two new 'waiting' dialogs. (See ATEMSG.xxx 027,* for the ATE 'waiting on server' dialog, and SBRMSG.xxx 002,041-042 for the 'waiting on PDFX' dialog.) 3. --- ATEREG.SBX 1.1(102) updated - now supports setting or retrieving ATE configuration values saved in the registry. 4. --- SETATEREG.LIT/GETATEREG.LIT utilities added to the release to provide command line wrappers for setting/retrieving ATE configuration settings from the server. Execute with no arguments or with /? to display help. 5. --- Compiler refinement (edit 740): DEFXCALL now allows all named parameters to be optional, i.e. to be enclosed in braces, e.g.: DEFXCALL MYSBR {,one=1, two=2, three$="3"} Previously there had to be at least one mandatory parameter prior to the "{" marking the start of the optional parameters. 6. --- New Windows/ATE LIT command to launch the Windows explorer for a specified directory location: .EXPLORE {} If no arguments specified, explores current directory. Directory format may be native Windows (relative or absolute), or AMOS-style. Examples: .EXPLORE %MIAME% .EXPLORE SYS: .EXPLORE DSK0:[7,6] .EXPLORE DSK0:2,2 .EXPLORE \\SERVER\PATH .EXPLORE ..\..\BIN .EXPLORE For UNIX/ATE environment, directory must be PC native spec and any environment variables are evaluated relative to the ATE client. 7. --- APN.LIT 1.0(104) refinements: - Now offers to create file if it doesn't exist (i.e. like VUE does) - Supports default extensions even when [p,pn] specified (APN DSK0:A[2,2]) - If no args passed, just launches (or switches to) APN - Now uses LITMSG.xxx 068,xxx for internationalization ============================================================================ A-Shell Release Notes Version 6.1.1400.3 (26 Jan 2015) ============================================================================ 1. --- XTREE/ATE bug fix: attempting to add a new row to a tree during re-entry with XTROP_REPLACE was failing to add the new row due to over-aggressive ATE protocol optimization. Problem resolved by updating either the server or ATE client, or both, to 6.1.1400.3+. ============================================================================ A-Shell Release Notes Version 6.1.1400.2 (22 Jan 2015) ============================================================================ 1. --- XTREE bug fix: exiting via a context menu was failing to update the xtr'xrow parameter for multi-select (XTF_MSEL) trees. ============================================================================ A-Shell Release Notes Version 6.1.1400.1 (21 Jan 2015) ============================================================================ 1. --- MX_FILESTATS bug fix: the bytes parameter was returning an invalid size for files > 2GB and >4GB. Under Windows, the return value was -1 if > 4GB; under both Windows and UNIX it was wrapping around (going negative) > 2GB. 2. --- SIZE.SBR now supports files > 2GB when the returned parameter is any F type. (Previously, it only avoided the 2GB limit for F,6.) 3. --- AUI refinement: Previous, the minimize button for modal dialogs (with the MBF_SYSMENU and MBF_MAXBUTTON flags) was disabled to prevent the user from minimizing the dialog and leaving the parent window in an apparently locked state. Now, the minimize button is longer disabled. Instead, minimizing the dialog automatically minimizes any parent dialogs and the main window. When restoring from the Task Bar, all the non-hidden dialogs are restored. ============================================================================ A-Shell Release Notes Version 6.1.1400.0 (17 Jan 2015) ============================================================================ 1. --- New MIAMEX function MX_CLRINBUF (184), provides a simple way to eliminate all typeahead from both the server and client input buffers. xcall MIAMEX, MX_CLRINBUF {,flags {,buffer}} Where: flags (num) [in] specifies options (sum of): +1) leave kbd locked +2) set ATE master kbd hold - same as TAB(-10,AG_HOLDKBD);"2";chr(127) buffer (str) [out] optional string buffer which will return the characters that were cleared from the local input buffer. Comments: In a standalone Windows or text environment, this just provides another alternative to existing techniques for clearing the input buffer, including TINKEY, GETKEY(0), and INFLD (type "0"). But in an ATE/GUI environment, it provides the additional feature of clearing any input characters which are currently buffered on the ATE client. Those can sometimes create problems when they accumulate silently on the client and then get released to the host unexpectedly. Note that to minimize the chance of missing input characters currently in transit from the client to the server, it sends an AG_ACK request (with a 5 second time limit). Compatibility: requires 6.0.1400.0+ on the server; works with any ATE version. However, for earlier ATE versions, some of the advanced features are unavailable and thus it may not work much better than the existing alternatives mentioned above. 2. --- New extended TAB command AG_CLRINBUF (106) clears the ATE client input buffer: ? tab(-10,AG_CLRINBUF);chr(127); Note that MX_CLRINBUF will automatically issue this command, so you would normally only use AG_CLRINBUF separately in specialized situations. 3. --- ATHTTP.SBR 1.1(104) updated to be more robust about handling keyboard characters at the same time as the file transfers. ============================================================================ A-Shell Release Notes Version 6.1.1399.7 (15 Jan 2015) ============================================================================ 1. --- ATE protocol refinement: throw away type-ahead following a message box, possibly eliminating situations where characters typed ahead of the message box no longer make sense after it. 2. --- ATE network delay / user interface refinement: when AG_HOLDKBD mode "4" is set (see 1399.0.5 below), and ATE will now display a "waiting for ..." message on the session status line (if visible), when appropriate. (Even if not visible, the cursor will be change to the wait cursor while in this state.) The idea is to give the user some indication of what is going on when output is delayed due be network, application, or server problems, and is somewhat analogous to the similar message displayed by most browsers when waiting on a server response. The display is updated every 1 second (adding a dot), and after 15 seconds, a modeless dialog appears that says: Server/network not responding. Click CANCEL to send abort request. Or just wait to see if it recovers. [Cancel] Clicking Cancel sends a ^C to the host, which may (or may not) be useful, depending on the situation and how the application responds to ^C. As soon as any characters arrive from the server, the dialog is removed and the cursor is restored the normal arrow or I-beam. ============================================================================ A-Shell Release Notes Version 6.1.1399.6 (11 Jan 2015) ============================================================================ 1. --- Windows bug fix: close resource leaks. 2. --- Server-side ATE aux port printing refinement: server now waits for ack from client to indicate that it is ready to receive commands after printing. This closes a window of opportunity for an ATE command timeout in the application if it proceeded to perform an operation that required an ATE response while the user was stuck in some dialog created by the printer driver. 3. --- Minor refinements to client-side ATE socket activity tracing. ============================================================================ A-Shell Release Notes Version 6.1.1399.5 (10 Jan 2015) ============================================================================ 1. --- XTREE bug fix: Correct ATE multi-xtree optimization problem resulting in the possible disappearance of trailing rows during a re-entry. (Introduced in 1398.4). 2. --- XTREE bug fix: double-clicking on a "U" (update only) cell wasn't triggering the row-selection exit (i.e. was waiting for ENTER). ============================================================================ A-Shell Release Notes Version 6.1.1399.4 (08 Jan 2015) ============================================================================ 1. --- Compiler bug fix (edit 739) - ++PRAGMA GOLBAL_BEGIN sections were in some cases failing to ever get compiled. (Problem was introduced in compiler edit 738.) 2. --- Minor ATE trace refinements (now logs user response to the "communication may be broken" dialog and flushes the "wait on socket" trace every 5 seconds). ============================================================================ A-Shell Release Notes Version 6.1.1399.3 (05 Jan 2015) ============================================================================ 1. --- Bug fix: passing an uninitialized dynamic variable as a parameter to an XCALL or function was generating a bogus error #64. 2. --- ATE tracing refinement: network read operation now traced (to determine whether an apparent hang occurs in the network read). ============================================================================ A-Shell Release Notes Version 6.1.1399.2 (05 Jan 2015) ============================================================================ 1. --- AUI_CONTROL refinement: custom drawn static controls (MBF_STATIC with MBF2_CUSTDRAW) now support tab expansion. ============================================================================ A-Shell Release Notes Version 6.1.1399.1 (19 Dec 2014) ============================================================================ 1. --- ATE tracing refinement: now shows # bytes received in each network read. ============================================================================ A-Shell Release Notes Version 6.1.1399.0 (18 Dec 2014) ============================================================================ 1. --- New miame.ini option: ATETIMEOUT= This allows you to change the default ATE command/response time out from the standard 7500 milliseconds to something else. (Depending on your network, you may find that 7500 is too low, producing spurous timeout conditions, or too high.) 2. --- Improved ATE handshaking: When both server and client are 6.1.1399+, server sends the client its process id and clock time on connection. Client uses the clock time to adjust the timestamps in the client-side ashlog to match the server's clock. It also logs the server process ID in the client log. (Both of these logging refinements make it easier to match up server and client log entries.) 3. --- Improved ATE logging: in addition to the above item, the client is somewhat more consistent/verbose about logging the reason/trigger for the session termination. 4. --- XTREE bug fix/refinement: Ctrl+Click on an extended checkbox column (T+) now works for clearing as well as setting a block of checkboxes. (Previously it only worked for setting them.) 5. --- ATE enhancement: new AG_HOLDKBD/AG_RELEASEKBD opcode 4 activates a timer in ATE that after 15 seconds of no activity from host (when not otherwise waiting on user actions, such as within INFLD, XTREE, XTEXT, EVENTWAIT, etc.) displays a message box warning the user that communication with host appears to be broken, and giving the option to continue waiting or send a cancel (^C). This can help mitigate a situation where the host application has crashed, leaving ATE in a state which appears to the user to be hung but actually isn't. To activate/deactivate the feature: ? tab(-10,AG_HOLDKBD);"4";chr(127); ! activate ? tab(-10,AG_RELEASEKBD);"4";chr(127); ! deactivate Notes: - Opcode 4 is independent of the existing opcode 2, but the communication timeout monitor is only active when the ATE workstation is in "hold-kbd mode" (i.e. when the AG_HOLDKBD "2" option has been activated or when currently processing an ATE command from the host.) - There are situations where it may be normal for ATE to be left waiting for something from the host for longer than 15 seconds. For example, if the host uses XCALL HOSTEX to launch a child task, it could be left waiting indefinitely for a response, leaving ATE in a waiting state. It is the responsibility of the host application to identify such situations and disable the appropriate AG_HOLDKBD mode(s). 6. --- ATE SSH receive buffer size increased from 64K to 128K, possibly increasing throughput in some streaming situations, such as auxiliary port output. 7. --- AUI_MENU bug fix: the MNUOP_POP opcode (display previously-defined context menu) was failing to disable the command-response timer, thus possibly leading to timeouts and miscommunication between the server and client if the user hesitated for more than the ATE timeout period (default 7.5 secs) while looking at the menu. 8. --- MX_AGWRAPPER enhancement: the wrapper routine now handles certain ZTERM- legacy commands (AG_FTP, AG_SHLEXEC and AG_WINEXEC) more robustly than before. These commands differ from the standard ATE commands for which MX_AGWRAPPER was designed because they only return a single character, rather than a string with a CR terminator. Previously these worked fine in the case of success, because the successful code of chr(13) matched the response termination character expected by AG_MXWRAPPER. But in the case of failure, the chr(3) response would either abort the program or would be ignored. Now the single character error response (chr(3)) is returned in the MX_AGWRAPPER response parameter, as you would normally expect when using MX_AGWRAPPER. 9. --- TABX refinement/workaround: If the user somehow manages to click on a tab label in such a way that the event code trigger is bypassed and consequently the application doesn't know to switch panels (resulting in a mismatch between the actual panel displayed and the highlighted label), you can now rectify the situation by just re-clicking on the correct label. This is a rare situation, generally only possible if clicking rapidly on the labels while other control updating operations are occuring within the TABX control. When it did occur, it previously caused more headache because clicking on the correct label typically caused confusion in the application, which thought that the specified panel was already the active one, thus rejecting the click. ============================================================================ A-Shell Release Notes Version 6.1.1398.7 (13 Dec 2014) ============================================================================ 1. --- ISAM/ISAMA bug fix: paths containing "." (e.g. \\192.168.0.1\VM\TEST") were generating all kinds of errors. (Same fix as 6.0.1271.5) ============================================================================ A-Shell Release Notes Version 6.1.1398.5 (02 Dec 2014) ============================================================================ 1. --- Compiler bug fix (edit 738): remove cmpglobals.tmp file (created during compilation) on exit. (It was leaving these files in each directory where a program was compiled.) ============================================================================ A-Shell Release Notes Version 6.1.1398.4 (27 Nov 2014) ============================================================================ 1. --- XTREE bug fix: eliminate "XTREE Diff Unpack Error" condition (which was actually benign, but definitely a bug). ============================================================================ A-Shell Release Notes Version 6.1.1398.3 (26 Nov 2014) ============================================================================ 1. --- Keyboard bug fix: ALT+#### wasn't working as expected (for entering alternate characters by numeric value) when there were conflicting accelerator definitions. ============================================================================ A-Shell Release Notes Version 6.1.1398.2 (24 Nov 2014) ============================================================================ 1. --- ATE bug fix: OPTIONS=GUI_SPC_IND was conflicting with tool tips and hover menus. ============================================================================ A-Shell Release Notes Version 6.1.1398.1 (24 Nov 2014) ============================================================================ 1. --- XTREE bug fix: users were incorrectly being allowed to hide columns based on the XTUCFG_COLORD flag being set, rather than XTUCFG_COLWID. (Visibility is connected to column width because you make a column invisible by shrinking its width to zero.) 2. --- SUBMIT.LIT 3.3(156) - Improve granularity (and therefore responsiveness) of /W (wait) operation. Display wait times in hundredths of seconds. 3. --- (UNIX / ATE) Minor refinement to ATE tracing and keyboard hold/handling. ============================================================================ A-Shell Release Notes Version 6.1.1398.0 (20 Nov 2014) ============================================================================ 1. --- Language enhancement (compiler edit 733) - support passing arrays by reference to SBX routines. From the perspective of the calling program, the setup is similar to how you would pass an array by reference to a procedure or function (see edit 1389 below). For example: In the calling program, dimx myary(0),ST_MYSTRUCT,auto_extend ! define array ... xcall MYSBX,myary() ! specify in arg list with empty () In the SBX receiving program, you have to specify another dimx statement to declare the surrogate receiving array. The name can be anything, but the array type should match what the caller is sending, and it must have the "byref" clause: dimx locary(0),ST_MYSTRUCT,byref ! define surrogate array The array can then be received using the xgetargs statement: xgetargs locary() The specified local array will then become an alias for the passed array. As with functions and procedures, do not use xputarg to pass the array back. (The local array is effectively the same array as the called array, so any changes to the local array are immediately reflected in the called array.) Notes: There are both compiler and runtime elements of this enhancement so in order to use it, you have to both compile with compiler edit 733+, and run with A-Shell edit 6.1.1398.0+ 2. --- Compiler enhancement (edit 734) - When passing an entire ordmap to an XCALL, you can now use the more natural syntax with a pair of empty (), rather than having to specify a null string, e.g. (""). For example, in the CGIUTL opcode CGIOP_GETPARARY (see edit 1394 below), you can now specify the ordmap using () as in this example: xcall CGIUTL, CGIOP_GETPARARY, status, $req() {,stdin$} The old syntax is still supported, but is now deprecated (and any existing programs using it should probably be changed after updating to this version.) 3. --- Compiler bug fix (edit 735) - In some cases, XPUTARG X,EXPR was generating a spurious "cannot output to inputonly" error. 4. --- Compiler bug fix (edit 736) - A DEFINEd string constant containing an embedded quote ("") was generating syntax error when the constant was used. 5. --- Compiler bug fix (edit 737) - Certain invalid conditional compilation statements were causing the compiler to go into an infinite loop. 6. --- String tokenizer bug fix. The internal routine used for tokenizing strings (strtok, used widely within A-Shell for STRTOK.SBR, ATE, XTREE, and many functions), was not handling quotes embedded in the middle of a field very well. This could have caused a variety of problems, but one in particular is that the following XTREE Advanced Coldef Option was causing XTREE to crash: Title="This isn't a "Good" title" Quotes are now treated as any other character except at the start and end of the field (i.e. immediately following and preceding delimiters). 7. --- Print filter enhancement: The printer init statement COMMAND=SBX:filter,... now supports two optional macro arguments, $PREFIX and $SUFFIX, which evaluate to the current prefix and suffix options. For example, given the following printer init file: DEVICE=TEST COMMAND=SBX:PFILTR,$PREFIX,$SUFFIX PREFIX=TEST.PFX SUFFIX=TEST.SFX the print filter PFILTR.SBX would receive "TEST.PFX" and "TEST.SFX" as the 7th and 8th arguments. (The first 6 arguments to a printer filter are always preset to STS,FSPEC,PRINTER,SWITCHES,COPIES and FORM.) 8. --- AUI bug fix: minimizing the main window was failing to minimize dialogs owned by the main window. (Problem introduced in 6.1.1394.0). ============================================================================ A-Shell Release Notes Version 6.1.1397.3 (06 Nov 2014) ============================================================================ 1. --- CGIOP_STDOUT refinement: binary output is now supported (specified variable must be type X). This provides the possibility of an A-Shell CGI program rendering a download to the browser. (Which has some security advantages over statically storing the file to be downloaded and letting the web server handle it directly.) 2. --- New command: APN.LIT 1.0(103) now included in release package to provide a way to launch an A-Shell Programmer's Notepad (APN) editing session for the specified (i.e. as an alternative to VUE). Syntax: .APN {.ext} If the extension is omitted, it searches for an INI.VUE file using the same path as VUE does (current [p,pn], [p,0], dsk0:[7,0]) and then uses the DEFAULT statement in the INI.VUE for the list of extensions to search. If the INI.VUE is not found, it uses a built-in default list of: .BAS, .BP, .CMD, .DO, .BSI, .BPI, .CPY. .UTL, .INI If APN is not already running, it will then be launched. If the specified file.ext is not already being edited in one of the APN windows, a new window (TAB panel) will be opened containing the file. The focus will then be switched APN to facilitate editing. If the file was already open within APN, the only action will be to set the focus on the specified window. 3. --- Compiler bug fix (edit 732) - Compiler was in some cases emitting a spurious error related to insufficient parameters passed to a function with named parameters. 4. --- APN bug fix (compil.exe edit 732.1) - APN was failing to generate tags for include modules. Note: for main programs, the tags should include all the ++include modules. For ++include modules, the tags should only include the contents of the one module. ============================================================================ A-Shell Release Notes Version 6.1.1397.2 (25 Oct 2014) ============================================================================ 1. --- AUI refinement: MBF2_DLGSTATE now overrides the MBST_xxxx options relating to dialog positioning (e.g. MBST_CENTER, etc.) Previously, MBST_CENTER would effectively override a custom saved position. ============================================================================ A-Shell Release Notes Version 6.1.1397.1 (25 Oct 2014) ============================================================================ 1. --- Compiler bug fix (edit 731): The use of a function with named parameters as a named argument to another routine using named parameters was generating faulty run code (generally resulting in an "invalid syntax code" or worse when trying to execute it.) ============================================================================ A-Shell Release Notes Version 6.1.1397.0 (24 Oct 2014) ============================================================================ 1. --- AUI enhancement: new miame.ini option allows you to make the MBF2_DLGSTATE option be the default for all dialogs: OPTIONS=AUTODLGSTATE Note that if you set it as the default, the only way to turn it off for individual dialogs would be to use MX_SETOPTIONS to clear the flag before creating the dialog (see next). 2. --- New MX_GETOPTIONS / MX_SETOPTIONS flag defined for OPTIONS=AUTODLGSTATE: define GOP2_AUTODLGSTATE = &h00000020 If OPTIONS=AUTODLGSTATE is set in the miame.ini, you can clear it within a program via: xcall MIAMEX, MX_GETOPTIONS, options1, options2 xcall MIAMEX, MX_SETOPTIONS, options1, options2 and not GOP2_AUTODLGSTATE ============================================================================ A-Shell Release Notes Version 6.1.1396.3 (24 Oct 2014) ============================================================================ 1. --- AUI refinement: dialogs with the MBF2_DLGSTATE option are now moved back to the default position if the previously saved position is no longer visible (due to a monitor configuration change). Note that the dialog is considered visible if "enough" of it's caption bar is visible to reasonably be able to spot it and drag it. (This allows you to deliberately set the dialog's initial position so that only a fraction of its title bar is visible.) ============================================================================ A-Shell Release Notes Version 6.1.1396.2 (24 Oct 2014) ============================================================================ 1. --- Compiler refinement (edit 730): LSM file (/LSM) no longer limited to Windows. ============================================================================ A-Shell Release Notes Version 6.1.1396.1 (23 Oct 2014) ============================================================================ 1. --- Compiler bug fix (edit 729): previous patch 727 (for dealing with GLOBAL blocks when not logged into the directory where the program is) failed to handle case where there was no explicit ++include $GLOBALS. ============================================================================ A-Shell Release Notes Version 6.1.1396.0 (22 Oct 2014) ============================================================================ 1. --- A-Shell BASIC language enhancement: Two new 'dot' functions are now supported: .LINENO(channel) .PAGENO(channel) These return the current line # (within the current page) and the current page #, respectively, for sequential output files. Both counters start at 1. These are intended to simplify traditional report coding, particularly for those working with legacy or unfamiliar report programs, by eliminating the need to keep your own line and page counts synchronized with the file contents. Note however that the counting mechanism is based on a hook that covers only the most typical cases. In particular: - For PRINT statements, the .LINENO(ch) value is only incremented by the absence of a trailing semicolon. Line feed characters which are output as data will not be counted. PRINT #CH, PLINE ! counts as 1 line PRINT #CH, PLINE; ! does not count (semicolon) PRINT #CH, PLINE;chr(10); ! does not count - Form feed characters, i.e. chr(12), will be detected anywhere, causing the .PAGENO(CH) value to be incremented, EXCEPT in the first position of the output file. (The assumption there is that you are using the STRIPFF feature in the printer initialization file to ignore a leading form feed.) - XCALL PRINT is supported (although the feature is probably not useful there.) - XCALL PUTBYT is also supported; line and form feed will be detected anywhere. - Any other method of outputting to a sequential file will probably bypass the counter hook. ============================================================================ A-Shell Release Notes Version 6.1.1395.1 (22 Oct 2014) ============================================================================ 1. --- Compiler/APN refinement (edit 725): when compiling with the -so switch (e.g. from within APN), the error output file - .lst - is now removed if there are no errors. 2. --- Compiler bug fix (edit 726): The compiler was treating a missing start value in "FOR I = X TO Y" statements as zero. It now reports it as a syntax error. 3. --- Compiler bug fix (edit 727): Compilation of ++PRAGMA GLOBAL_BEGIN / END was not working properly when not logged into the same directory as the program being compiled. ============================================================================ A-Shell Release Notes Version 6.1.1395.0 (21 Oct 2014) ============================================================================ 1. --- Windows 'C' version enhancement: remove 2GB file size limit. ============================================================================ A-Shell Release Notes Version 6.1.1394.0 (18 Oct 2014) ============================================================================ 1. --- INFLD refinement: trailing space stripping now automatic even for horizontally scrollable GUI fields. Previously it was disabled for all horizontally scrollable fields due to a limitation in the text mode implementation of scrolling. But the limitation doesn't apply to GUI mode. 2. --- CGIUTL.SBR enhancement: new opcode CGIOP_GETPARARY (12) retrieves the entire set of name=value pairs into an ordered map. Syntax: dimx $req, ordmap(varstr;varstr) xcall CGIUTL, CGIOP_GETPARARY, status, $req("") {,stdin$} Note that it does not clear the existing existing map/array, although it will replacing any conflicting elements with key=name. Status returns the number of pairs loaded. As with many other CGIUTL operations, the optional stdin$ parameter specifies the contents of the request, which should be in the form of: name1=value1&name2=value2&...&nameN=valueN Typically it is retrieved using CGIOP_STDIN (op 1). If not specified, CGIUTL will retrieve the request parameters directly from the web server interface. For example, if assuming stdin$ = "fromCurrency=US&toCurrency=Euro", the following code... dimx $req, ordmap(varstr;varstr) xcall CGIUTL, CGIOP_GETPARARY, status, $req(""), stdin$ print "fromCurrency = "; $req("fromCurrency") print "toCurrency = "; $req("toCurrency") will print: fromCurrency = US toCurrency = Euro (Or you can use a foreach loop to retrieve all of the name=value pairs without knowing in advance what to expect.) 3. --- Miame.ini file loading refinement: reorganization and optimization of the logic to process the miame.ini file has shaved hundreds or thousands of microseconds off the typical time. The improvement is probably not noticeable in regular interactive A-Shell startup, but is more significant during APN startup when many files are opened at once. ============================================================================ A-Shell Release Notes Version 6.1.1393.2 (18 Oct 2014) ============================================================================ 1. --- GUI bug fix: the use of hover menus (attached to static icons) was interfering with drag/drop operation in other applications. 2. --- INFLD bug fix: insert operation was in some cases limiting the field width to the XMAX value instead of the MAXCHRS values. 3. --- Command line recall buffer width now matches the active command line buffer width (300) instead of being truncated at 200. 4. --- SYSTAT.LIT 3.1(169) fixes problem in which the /X was acting like /V when specified in addition to /L. ============================================================================ A-Shell Release Notes Version 6.1.1393.1 (17 Oct 2014) ============================================================================ 1. --- Standalone compiler bug fix (edit 722) - some details were missing from the metadata created for APN. 2. --- Compiler bug fix (edit 723) - ++PRAGMA GLOBAL_BEGIN/END was generating spurious compilation error messages if no explicit ++INCLUDE $GLOBALS statement supplied. Tighten up error checking for mismatched or improperly nested GLOBAL_BEGIN and _END. Fix errors compiling an LSX containing GLOBAL_BEGIN and _END sections. ============================================================================ A-Shell Release Notes Version 6.1.1393.0 (04 Oct 2014) ============================================================================ 1. --- ERSATZ definition enhancement: ersatz definition files may now contain ++include statements of the form: ++include dev:file.erz[p,pn] In addition, the dev specified in the ++include statement may then be referenced from within the included file using the pseudu-environment variable %INCDEV%, e.g. ADCJSON:=%INCDEV%:[907,10] The combination of these two enhancements facilitates the ad-hoc addition of modular sets of current-device-relative ersatz definitions. As an example, for the 2014 A-Shell Developer Conference, we created a set of ersatz definitions, in the file ADC.ERZ: ADCARY:=%INCDEV%:[908,61] ADCCGI:=%INCDEV%:[908,62] ADCJSON:=%INCDEV%:[908,63] Because there is no explicit device reference, these ersatz directories can be installed on any available device on the target machine (assuming no conflicting ppns). Let's say we want to use an existing device DSK29:. To install the ersatz definitions copy the ADC.ERZ file to any ppn on DSK29, let's say DSK29:[1,2]. Then just add a ++include reference to it in the main system ersatz.ini: ++include DSK29:ADC.ERZ[1,2] (Note by "main system ersatz.ini, we mean the last one referenced in the miame.ini, since that is the only one that will be reprocessed on the fly, which is an essential part of this scheme.) Now, without relaunching A-Shell, you can use those ersatz definitions, i.e. LOG ADCJSON: Aside from ad-hoc ersatz additions like this, the feature is also useful for maintaining different versions of the same ersatz definitions. For example, you might have a set of ersatz definitions for your application, but you also want to maintain two versions, the stable version and the development version. With this scheme, you can use a single app.erz file containing your ersatz definitions, and just install it (and the associated directories) on two different devices. By avoiding the need to explicitly reference the devices, you avoid the hassle of having to convert the device reference to match the actual device where you installed it, as well as the confusion that occurs when you forget to do that. WARNING: If the applicable ERSATZ statement in the MIAME.INI comes before the DEVICE statement that defines the device referenced in the ++INCLUDE, it won't be resolved until after A-Shell is launched and a subsequent reference is made to the ersatz. (Failed references trigger a re-scan of the ersatz definitions, after a small time interval.) So that generally isn't a problem. BUT, in the case of the APN compiler command line, it only gets one chance to define the ersatzes, so if you are using this technique, move the ERSATZ statement(s) below the DEVICE statements. 2. --- Compiler bug fix/update (edit 720): Correct problems related to new GLOBAL_BEGIN/END. Also, support the new ersatz definition features (see previous item). 3. --- CGIUTL.SBR enhancement: the GET method is now handled transparently, i.e. the query string is retrieved just as if it came via the POST method. ============================================================================ A-Shell Release Notes Version 6.1.1392.0 (03 Oct 2014) ============================================================================ 1. --- New compiler (edit 717) pragmas: ++PRAGMA GLOBAL_BEGIN and GLOBAL_END. These are similar in concept to the existing pragmas PRIVATE_BEGIN and PRIVATE_END, except that they declare a block of variables (and possibly some instructions related to initializing those variables) intended to be visible to any other module in the program. Although non-PRIVATE variables defined outside of functions and procedures are already global, the difference here is that the section of variable and code gets effectively moved to the start of the program (see clarification below) so that the variables are defined and initialized before any other code that may reference them. This feature is intended to help programmers modernize old-style include modules which suffer from the use of un-mapped variables, and/or which are sensitive to the order in which they are included in the main program. Clarification: by default, the GLOBAL_BEGIN/END code is moved to the start of the program. But in some cases that may not be quite ideal, for example where the MAP statements or code require definitions from, say, ashell.def. To give you that flexibility, you can specify the location where you want the global code to be inserted via a special ++include statement: ++include $GLOBALS ! insert GLOBAL_BEGIN/END blocks here This acts like a normal ++include except that instead of referencing a static file, it collects up all the code in the GLOBAL_BEGIN / END blocks and creates a virtual include file on the fly. (Technical note: the global blocks will actually be copied to a temporary file cmpglobals.tmp, which you can examine for debugging purposes.) For include modules with unmapped variables, the recommendation would be to add a GLOBAL_BEGIN/END block to explicitly map the variables used in the module. For example, to take an extremely simple case, imaging an include module containing a routine to close a file: CLOSE'FILE: ! caller sets CH CLOSE #CH RETURN The problem with this module is that it references a variables, CH, which is not mapped or initialized here, thus requiring the calling programs to compile without the /M switch, or to figure out how and where to map/init it. (It probably should be converted to a function, passing the channel explicitly, but that would definitely require changing all of the code that uses this function, which we're trying to avoid.) Without the new pragmas, to fix the unmapped variable problem, could insert a map statement into the module, but unless the module was included at the top of the program, it is likely that code that calls the module would not yet have seen the MAP statement, and thus would still get an unmapped variable reference. And if you did include it at the top of the program, you would also have to insert a GOTO statement and label to jump over the CLOSE'FILE routine, lest it get executed during the program startup. And even then, if the routine was referenced by other included modules, you could easily get into "include sequence hell", where you endlessly shuffle the sequence of ++includes trying to come up with an order that manages to have all the variable definitions occur before they are referenced. Another approach to solving that problem would be to split the module into two parts - a .MAP to be included at the top of the program, and a .BSI to be included at the bottom. That works, but introduces module clutter, which tends to encourage combining the .MAP modules, but that leads to variable definition bloat and general confusion. With the new pragma, we can insert the following at the top of the module: ++PRAGMA GLOBAL_BEGIN MAP1 CH,B,2 ++PRAGMA GLOBAL_END Now, when we compile it, the definition of CH will get moved to the top of the program (or to a specified location - see below) eliminating the forward-reference problem. Existing programs can just be recompiled without any other changes (unless they actually did map the CH variable, in which case that map would have to be removed. But it is likely that any such map statement would be in a common include, so you can probably just add a ++IFNMAP CH conditional to that to fix it in all cases.) Of course this is an extemely simplistic example. In a more realistic case, you may have many variables used within a BSI, some of which are truly local (and should be declared PRIVATE, and others which may require some explicit initialization code). But the principle remains the same - whatever you put between the GLOBAL_BEGIN and GLOBAL_END pragmas will be made globally available to the rest of the program without you having to make any other adjustments to external code, other than recompiling the programs that use this module. Note: the feature requires the /P (or -p) compile switch, but does not require any particular run-time version. (The RUN files can even be AMOS compatible, if you stick with the /RC option.) 2. --- Compiler refinement (edit 718): You may now optionally use procedure-style syntax with the XCALL statement. In other words, instead of: XCALL NAME,ARG1,...ARGN you can instead use: XCALL NAME(ARG1,...ARGN) The advantage of the alternate syntax is perhaps mainly aesthetic, but will seem more natural to programmers coming from other language backgrounds. Another potential advantage is that it would allow APN call tips to be set up for common XCALLs, since the feature is triggered by typing the "(" which normally signals the start of a procedure parameter list. 3. --- Compiler bug fix (edit 719): Edit 716 introduced a problem with PRIVATE DIMX statements which is now resolved. ============================================================================ A-Shell Release Notes Version 6.1.1391.9 (02 Oct 2014) ============================================================================ 1. --- MAJOR Run-time bug fix: Most file i/o operations (read, write, ISAM, etc.) were not working with DIMX record elements. In most cases the operation was mistaking the record variable size for zero and thus not actually doing anything, although in some cases it may have been reading or writing partial records. The bug goes back a long way, probably to 5.1.1190 (when DIMX was made to support reentrancy. Only the run-time system is affected (does not require re-compilation to fix.) 2. --- Compiler fix (edit 716): STATIC DIMX statements now execute only once, regardless of whether the flow of control passes over them multiple times. Previously, you would have gotten a redimensioned array error unless you protected the statement by some kind of conditional logic. ============================================================================ A-Shell Release Notes Version 6.1.1391.8 (30 Sep 2014) ============================================================================ 1. --- Compiler refinement (edit 714): ++MESSAGE and ++ERROR output is now captured when executing in background mode (i.e. from within APN). 2. --- Run-time bug fix: READ (data) statements were not working properly with dynamic variables. ============================================================================ A-Shell Release Notes Version 6.1.1391.7 (30 Sep 2014) ============================================================================ 1. --- MX_GETENV enhancement: passing an empty environment variable name parameter now causes it to return the entire list of environment variable definitions, delimited by a chr(10) character between each NAME=VALUE string. Also, you can now specify a dynamic string variable (S,0) for the return parameter, which will expanded as needed. 2. --- GETENV.LIT 1.0(101) now supports the new MX_GETENV feature, listing all of the environment definitions if no parameter is passed on its command line. 3. --- Compiler/runtime enhancement (edit 712) (EXPERIMENTAL - for testing only! Allow dynamic variables (s,0 and x,0) below the MAP1 level. For example: DEFSTRUCT ST_REC MAP2 SKU,S,10 MAP2 DESCR,S,0 ! variable length!! MAP2 PRICE,F ENDSTRUCT This can be a useful technique for encapsulating data with variable-length components, but it creates an implicit linkage between the structure and the variable length elements that opens the door to various kinds of risks if not handled carefully. The size of the structure is fixed (the variable length field appears to have a fixed length of 16 bytes), but the contents of the variable length member are stored outside the structure, in the dynamic variable pool. The structure can be passed as a parameter to a function, and the variable length elements will remain intact, but at that point they should be treated as read-only. (Both copies of the structure would link to the same variable-length text, but if that text is changed, only the current structure would remain properly linked to the updated text.) Writing the structure to a file would also make no sense; in that case, what would actually be written for the dynamic members would be their 16 byte descriptors, which would be useless outside the immediate context of the program. 4. --- Compiler refinement (edit 713): ++include files without a line terminator on the last line should no longer generate syntax errors. ============================================================================ A-Shell Release Notes Version 6.1.1391.6 (29 Sep 2014) ============================================================================ 1. --- Compiler enhancement (edit 711): new auto-defined macro COMPILER_VERSION equates to the compiler edit (currently 711). This can be used in ++IF conditions to avoid or warn about code that is requires a newer version of the compiler. For example: ++IF COMPILER_VERSION >= 710 TYPEDEF BOOLEAN I,2 ++ENDIF Unfortunately, since the macro was introduced in edit 711, an attempt to reference it's value in a prior version will generate a "conditional expression not constant" error, so that will only be useful going forward. However, you can use ++IFDEF to test if it's defined (and if not, you will know that it is prior to version 711). ============================================================================ A-Shell Release Notes Version 6.1.1391.5 (29 Sep 2014) ============================================================================ 1. --- Runtime bug fix: When the XCALL and XDEBUG traces were both set, AUI_CONTROL was generating a bogus "CTLOP_INFO returns..." trace. Worse, if the ctext parameter for the call was longer than about 1000 bytes, it was overflowing a buffer and possibly crashing A-Shell. 2. --- Compiler bug fix (edit 709): include files with no line terminator on the final line no longer generate bogus syntax errors. 3. --- Compiler enhancements (edit 710): - Two new dot variables: .TRUE and .FALSE may be used as self-documenting replacements for -1 and 0. - New statement DEFTYPE may be used to define an alias for a data type (with optional size), that can then be used in MAP statements and in Function and Procedure declarations. This can be useful in assuring consistency of logical data types through an application. For example: DEFTYPE Boolean I,2 deftype PRICE F,8 Deftype phone ST_PHONE map1 ready,Boolean ! equivalent to map1 ready,I,2 dimx total(10),PRICE ! equivalent to dimx total(10),F,8 map1 cellnum,phone ! equivalent to m1p cellnum,ST_PHONE Function Fn'PiePrice(ala'mode as Boolean) as PRICE ! equivalent to: Function Fn'PiePrice(ala'mode as I,2) as F,8 Note that while DEFTYPE itself is case INsensitive (following the normal rule for keywords), the defined macro symbols are case sensitive (same as those created by DEFINE or DEFSTRUCT). You can compile with the case-insensitive option (/CI or -ci) if you prefer case insensitivity throughout. ============================================================================ A-Shell Release Notes Version 6.1.1391.4 (26 Sep 2014) ============================================================================ 1. --- Runtime bug fix: FOREACH was generating spurious subscript out of range errors. (Problem introduced in 6.1.1389.0) ============================================================================ A-Shell Release Notes Version 6.1.1391.3 (26 Sep 2014) ============================================================================ 1. --- GUI bug fix: dialog context menus were not automatically being deleted when the associated dialog was deleted. ============================================================================ A-Shell Release Notes Version 6.1.1391.2 (24 Sep 2014) ============================================================================ 1. --- HTTP.SBR minor enhancement: increase maximum URL$ length from 260 to 1024. (When using GET syntax, URLs can get rather long.) 2. --- ASHNET.DLL 1.7.146 bug fix: GET requests containing ":##" in the middle of the URL$ were in some cases failing due to confusion in the parser about whether the :## represented a malformed port specification. ============================================================================ A-Shell Release Notes Version 6.1.1391.1 (24 Sep 2014) ============================================================================ 1. --- GUI bug fix: moving dialogs with the mouse was, in rare instances, causing A-Shell to crash. ============================================================================ A-Shell Release Notes Version 6.1.1391.0 (23 Sep 2014) ============================================================================ 1. --- Dynamic X variable refinement: eliminate the extra trailing null byte when initializing/expanding dynamic X variables. The extra null byte was added to dynamic strings to improve compatibility with external library routines expecting "C-style" (null-terminated) strings, but this doesn't apply to X variables, where the extra byte was just a nuisance. (When loading a binary file into an X variable for example, it was throwing off the size and hash.) 2. --- Runtime enhancement (experimental): Allow passing global or module-scope DIMX array of X,0 elements by reference to a function. This is a logical extension of the array-by-reference feature added in edit 1389 (see below). For example: dimx ARY(0),X,0,auto_extend ... call Add'Items'To'Array( ARY() ) ! pass ARY() by reference to function ... procedure Add'Items'To'Array( a() as x0) ! rcv array by reference p = .extent( a() ) + 1 for i = p to q a(i) = next i endprocedure Notes: - The array must have been defined at the global or module-scope (private) level (rather than locally within a function). This is to ensure that the contents remain valid when referenced within another scope (i.e. a called routine). - Currently this only works for X,0 (and not S,0) variables. The restriction may be lifted, but there is no particular need since variable length X variables are practically interchangeable variable length S variables anyway. (The main distinction beween X and S has to do with whether bytes past the first null are part of the variable, but this isn't really a factor when loading string data into dynamic X variables, since the variable size would be trimmed to eliminate any bytes after the trailing null anyway.) 3. --- Compiler enhancement (edit 708): when the /P (or -p) switch is used, it is no longer required that function names start with fn'. The main downside of taking advantage of this option is that it could make your source code harder to understand, since it wouldn't be immediately clear whether a subscripted identifier appearing in an expression, e.g. something = WhatIsThis(idx) is an array reference or a function reference. (The compiler can tell the difference though.) The upside is mainly aesthetic, allowing you to syntactically simplify your functions. This could be particularly helpful in cases where you have class-like collections of related functions and procedures. Thense can now all share a common prefix, allowing you to adopt a simpler but more object-oriented syntax scheme, i.e. object.verb(params). For example, the SOSLIB now contains a set of application message logging procedures/functions (in sosproc:applog.bsi) which all share the common prefix "AppMesg.", i.e. AppMsg.SetFile(), AppMsg.Info(), etc. ============================================================================ A-Shell Release Notes Version 6.1.1390.0 (20 Sep 2014) ============================================================================ 1. --- CGI Enhancement: support for FastCGI protocol. FastCGI if an optimized variation of the normal CGI protcol, which differs primarily in that the application server instances persist across many requests, rather than having to be launched and terminated for each request. FastCGI thus vastly reduces the overhead of servicing web requests, particularly for relatively large/complex application servers (like A-Shell). FastCGI is widely available on common web servers such as Apache and IIS, but almost certainly requires some configuration to enable. (As of this writing, we have only tested it with Apache 2.4 under Windows.) To enable support for FastCGI protocol in A-Shell, change the -cgi command line switch to -cgifast. A-Shell will then determine whether the server is using FastCGI or normal CGI protocol, and will acti accordingly (i.e. support either protocol). Existing A-Shell CGI applications require a minor modification after which they can support either mode as well (without having to be aware of the difference). Since the main objective of FastCGI is to avoid the need to launch a new instance of the application server for each request, you need to introduce a loop into your application so that after servicing a request, instead of exiting, it loops back to wait for another request. In other words, you must convert this: end to this: do xcall CGIUTL, CGIOP_GETREQ, status if status < 0 exit loop end The new CGIUTL opcode CGIOP_GETREQ (10) waits until the request has been received as is ready to process in the normal way. For the first request after the instance has been launched, it will return immediately (be essentially a NOP). For subsequent requests, it waits until another client submits a request (or perhaps the server shuts us down). In the case of normal CGI mode, the second request will return -1, telling the app to shut down (as it would normally do for CGI). 2. --- CGIUTL new opcode CGIOP_GETREQ (10) is used to support FastCGI (see above). Syntax: xcall CGIUTL, CGIOP_GETREQ, status where status is a signed numeric variable that will return 0 if a request is available to process, or -1 if not (in which case the application should terminate). For FastCGI mode requests after the first one for the instance of the application server, this call will sleep until a request is available or the web server tells us to exit, or an error occurs. 3. --- CTIUTL new opcode CGIOP_UNESCAPE (9) is a utility function to convert a string contain HTML escapes (mainly %xx where xx is a hex value) to the ASCII equivalent. This is sometimes useful for logging and other auxiliary functions. Syntax: xcall CGIUTL, CGIOP_UNESCAPE, in, out, status where in is the HTML-encoded string to unescape out is a string variable to receive the output (dynamic string ok) status returns a status code (0 for ok) 4. --- Ashlog bug fix: close loophole which in some cases resulted in the ashlog.log file being written in the %TEMP% or other directory besides the %MIAME% or LOGDIR location. ============================================================================ A-Shell Release Notes Version 6.1.1389.1 (19 Sep 2014) ============================================================================ 1. --- Windows bug fix / enhancement: MX_FINDFIRST was previously failing after the second level of recursive nesting. It now supports nesting up to 20 levels deep. It was also failing to properly handle paths longer than 164 chararacters. ============================================================================ A-Shell Release Notes Version 6.1.1389.0 (04 Sep 2014) ============================================================================ 1. --- Compiler refinements (edits 704-706) - improvements to LSX/LSM format relating to $ordmap and dimx arrays. 2. --- Language enhancement (compiler edit 707 + runtime) : support passing DIMX arrays to functions/procedures by reference. This allows the called routine to have complete read/write/extend access to the array without the overhead of having to actually copy all the array data back and forth between the caller and called routine. Syntax is to specify the array name with an empty pair of parens, both for the actual parameter being passed and for the formal parameter in the routine declaration, e.g. dimx ARY(0),ST_CUST,auto_extend ... call Add'Items'To'Array( ARY() ) ! pass ARY() by reference to function ... procedure Add'Items'To'Array( a() as ST_CUST) ! rcv array by reference p = .extent( a() ) + 1 for i = p to q a(i).field = bla ! a() is effectively alias for passed ARY() next i endprocedure Notes: - Compiler does not currently verify that the array types for the formal and actual parameters match. - Runtime system does verify that the element sizes match. - Feature currently only supported for functions and procedures (not XCALLs) - Do not attempt to use XPUTARG to copy the array back to the caller (makes no sense anyway). 3. --- Runtime enhancement (behavior change) : .EXTENT(array()) now returns the logical extent of an array that has been auto-extended. Previously, it returned the physical extent, which was typically larger due to optimizations in the way arrays are physically extended. Although this is a change of behavior, it's extremely unlikely to have any negative effect on existing programs. It just makes the returned value more useful. ============================================================================ A-Shell Release Notes Version 6.1.1388.8 (20 Aug 2014) ============================================================================ 1. --- Compiler enhancement (edit 697) : new /LSM switch creates a metadata file containing file, function, and variable cross-reference information potentially useful to external programs (particularly APN). 2. ---- Compiler enhancement (edit 698) : display version when running in -so mode (useful in APN). 3. --- Compiler bug fix (edit 699) : ++ELIFMAP, ++ELIFLBL, ++ELIFDEF statements were reporting a bogus error when the prior clause was false. 4. --- Compiler APN-related refinements (edit 700-703) : adjustments to LSM. ============================================================================ A-Shell Release Notes Version 6.1.1388.7 (15 Aug 2014) ============================================================================ 1. --- Internal compiler reorganization. Remove APN-related LSX changes (686,687, 690,691) in preparation for new metadata version. 2. --- XTREE bug fix: Exitchars="?" was not allowing the "?" key to be entered in edit boxes that were restricted to numeric characters, on some keyboard layouts. ============================================================================ A-Shell Release Notes Version 6.1.1388.6 (08 Aug 2014) ============================================================================ 1. --- Compiler bug fix (edit 694) - Revised version of [693] bug fix /jdm ============================================================================ A-Shell Release Notes Version 6.1.1388.5 (08 Aug 2014) ============================================================================ 1. --- Compiler bug fix (edit 692) - detect orphaned NEXT and ENDSWITCH statements at global level. (Previously these were ignored without any error message.) 2. --- Compiler bug fix (edit 693) - close memory corruption loophole related to compilation of DIMX statements within functions. ============================================================================ A-Shell Release Notes Version 6.1.1388.4 (05 Aug 2014) ============================================================================ 1. --- Compiler bug fix (edit 691) - infinite loop during LSX output ============================================================================ A-Shell Release Notes Version 6.1.1388.3 (01 Aug 2014) ============================================================================ 1. --- SIZE.SBR bug fix: The file lookup was inadvertently dependent on the filespec having a trailing null in memory. In cases where the filespec variable had no room for a trailing null, the routine may have returned -1 (not found) in cases where the file actually did exist. 2. --- TRACE.PRINT bug fix: A message length in the vicinity of 300 characters was leading to a buffer overflow that was leading to a variety of malfunctions. Messages will now be truncated at around 400 characters, but it is safe to attempt to output longer messages. ============================================================================ A-Shell Release Notes Version 6.1.1388.2 (30 Jul 2014) ============================================================================ 1. --- XTREE bug fix: ATE optimization of XTROP_REPLACE operations was resulting in the wrong row(s) being updated in sorted trees. (This most likely manifested itself as duplicate rows.) ============================================================================ A-Shell Release Notes Version 6.1.1388.1 (24 Jul 2014) ============================================================================ 1. --- Compiler enhancement (edit 690) - various improvements to the LSX format related to structure mapping, mostly for the benefit of APN. ============================================================================ A-Shell Release Notes Version 6.1.1388.0 (23 Jul 2014) ============================================================================ 1. --- Compiler bug fix (edit 689) - Fix problem with spurious compiler errors introduced in previous version. ============================================================================ A-Shell Release Notes Version 6.1.1387.9 (14 Jul 2014) ============================================================================ 1. --- Compiler bug fixes (edit 682): - spurious errors on DIMX with structure after previous real error; - phase 0 message was incorrectly associated with /N instead of /S; - spurious errors related to memory overflow condition 2. --- Compiler bug fix (edit 683): fix problems with handling non-constant, undefined symbols used in conditional expressions during Phase 0 or in APN tagging mode. 3. --- Compiler bug fix (684,688): overlays in defined structures were failing to compile properly (i.e. were generating spurious compiler errors) when arrays or structure nesting was involved. 4. --- Compiler enhancement (685): LSX file now shows offsets for members within instances of structures. 5. --- Compiler bug fix (686): First $COPY directive in a program was sometimes resulting in a bogus syntax error, and/or real errors that were reported on the wrong line number 6. --- Compiler bug fix (687): Minor aesthetic fix to LSX representation of DIMX structure instances. 7. --- XTREE bug fix: resetting the configuration was sometimes resulting in very tiny row heights. ============================================================================ A-Shell Release Notes Version 6.1.1387.8 (03 Jul 2014) ============================================================================ 1. --- Compiler bug fix (edit 681) - Reduce/eliminate some unnecessary/excessive work area memory allocations. 2. --- Compiler bug fix (edit 682) - Fix a memory corruption problem introduced in edit 678 that was resulting in spurions syntax errors under Linux. ============================================================================ A-Shell Release Notes Version 6.1.1387.7 (02 Jul 2014) ============================================================================ 1. --- Compiler refinements (edit 680) - In background mode (e.g. when called by APN), certain startup errors (like no such file) weren't being captured, thus giving the impression that the program compiled without error (although it was correctly reporting exit code 1 which does indicate an error). - In /P mode, certain errors (like missing ++includes) were resulting in later spurious errors (which was confusing). ============================================================================ A-Shell Release Notes Version 6.1.1387.6 (01 Jul 2014) ============================================================================ 1. --- Compiler refinement (edit 678) - Improve error reporting on missing ++endif (now lists all of the unmatched ++if statements in the stack). - Fix problems with files with no line terminator on the final line (in some cases these lines were being ignored). - Fix a problem with the auto $COPY .VER (see edit 675). 2. --- Compiler refinement (edit 679) - ++PRAGMA ERROR_IF_NOT_MAPPED "FALSE" may now be used to override /M or a previous "TRUE". (Previously it was only possible to enable the /M switch, not disable it.) Note that you can now turn the option on and off multiple times within a program, allowing you to get the benefit of the for new sections of code without being forced to clean up the unmapped variables in all of your code (i.e. in all of your include modules). ============================================================================ A-Shell Release Notes Version 6.1.1387.5 (29 Jun 2014) ============================================================================ 1. --- Compiler bug fix (edit 676) - fix problems falsely treating as existing a structure XXX when there existed a structure XXXY (i.e. when XXX was a subset of the name of an existing structure). Caused ++ifdef statements based on structure definitions to act incorrectly. 2. --- Run time bug fix: close a window in the MX_PWCRYPT routines which may have allowed a memory fault. ============================================================================ A-Shell Release Notes Version 6.1.1387.4 (24 Jun 2014) ============================================================================ 1. --- Compiler enhancement (edit 675) - on first $COPY, attempt to also include .VER if it exists. ============================================================================ A-Shell Release Notes Version 6.1.1387.3 (21 Jun 2014) ============================================================================ 1. --- Compiler enhancement (edits 672,674) Support Madics $COPY directive - similar to ++include but with default extension .cpy and different search path: {current ppn} {Current disk} :[current prog, 3] [200,3] (after [p,3]) {Current disk}:[200,3] DSK43:[1,13] (before DSK10:[1,13]) DSK10:[1,13] DSK10:[2,13] 2. --- Compiler refinement (edit 673) - adjusts edit 668 to allow a locally defined structure variable with same name as a module or global variable provided they are same type of structure. 3. --- INFLD enhancement: new TYPE ||k flag disables internal too-fast input filter (which may otherwise cause characters fed via a burst to be dropped). 4. --- Runtime refinement: set limit of 99 nested func/proc calls (previously was unlimited), as a way of reducing the likelihood and severity of problems caused by accidental infinite recursion. 5. --- Windows/ATE refinement: prevent rogue control characters appearing in an ATE response packet from being confused with terminal driver multi-character lead-ins (which may have caused the terminal to appear hung). ============================================================================ A-Shell Release Notes Version 6.1.1387.2 (20 Jun 2014) ============================================================================ 1. --- Compiler refinement (edits 669-671) - APN-related internal adjustments. ============================================================================ A-Shell Release Notes Version 6.1.1387.0 (10 Jun 2014) ============================================================================ 1. --- GDI Printing Enhancement: single-line TEXTRECTANGLE now supports character wrap in the 90, 180, -90 and -180 rotations. Previously only word wrap was supported and if any lines were too long, the output was way out of position. 2. --- XTREE Enhancement: Vertical radio button groups. Three special Group codes have been set aside for vertical groups: Group=255 (Entire column is a single group) Group=254 (XTF_MLVL: Items with same immediate parent form a group) Group=253 (XFF_MLVL: Items at same level form a group) If the tree is not multi-level, all three of the above act like 255, i.e. only one radio button in the entire column can be selected at a time. Note that as with horizontal groups, enforcement of the only-one-selected- per-group rule occurs only when you change a radio button during editing. (It is up to the application to enforce the rules during loading and display operations.) 3. --- XTREE bug fix: minor adjustments to self-service combo cells. Previously it was possible to get exitcode -43 instead of 29 when selecting the drop-down on a combo on the bottom row. Also, it was possible to display the "..." by hitting down-arrow without exiting the combo. 4. --- XTREE bug fix: in some cases, optimization of returned answer array was failing, resulting in the entire array being transferred back to the host when only a small section of it needed to be transferred. 5. --- AUI_CONTROL bug fix: multi-line static text with MBF_WORDELLIPSIS and MBF2_CUSTDRAW was in some cases leaving an ellipsis on more than just the last line. 6. --- ATE password update fix: When launching an ATE connection that was previously saved under a pre-1385 version, the connection dialog was prompting for the password again. 7. --- Windows keyboard processing refinement: hitting ENTER rapidly while a new dialog was being created was sometimes creating the effect of having hit ALT+ENTER (toggling the main window between normal and maximized). 8. --- Print screen enhancement: APRNTSCRN.SBX 1.0(111) now features the ability to email a copy of the ashlog.log (or other log file) along with the screen capture. The feature is active by default, provided that the ashlog.log file is in /vm/miame/ashlog.log (on the ATE server) or %miame%\ashlog.log (for local Windows). (In the case of ATE, the print screen utility will attempt to FTP the ashlog.log file from the server.) If your ashlog.log file does not match the default location, you must add the following item to your BAS:APRNTSCRN.CFG file to enable/configure it: [OUTPUT] EmailLog= where to blank. Note that since the aprntscrn.cfg file exists on every client PC, updating it requires either transmitting entire new copies to each PC (perhaps with ATSYNC), or you can update just that one field using: ? TAB(-10,AG_XFUNC2);"INIX,BAS:APRNTSCRN.CFG,1,OUTPUT,EmailLog,";logspec$;chr(27); 9. --- AG_FTPSYNC bug fix: the ATSYNC /D option was deleting all the files in the local target directory, regardless of whether they were on the server. Problem was introduced in 6.1.1369 along with several previous enhancements to ATSYNC. (This is internal to A-Shell and doesn't require an update of ATSYNC.LIT.) 10. --- ATSYNC.LIT 1.3(120) refinement: /D now explicitly ignored with /F mode. The delete option doesn't really make much sense when not syncing an entire directory; attempting it could have had strange side effects. 11. --- TELNET.LIT 2.1(143) now cleans up .TMP files in the 001004 directory on exit. (Certain operations, particularly ATSYNC, have a bad habit of leaving behind such .TMP files.) 12. --- FTP2.SBR bug fix: it wasn't properly decrypting the new type 3 encrypted passwords. 13. --- Compiler (edit 668) now flags as an error an attempt to define a local structure whose name matches an auto-externed global or private (module) structure. (Although this would be technically legal, it invites confusion likely to lead to difficult-to-detect bugs, especially when the local and module/global structures aren't even the same layout.) 14. --- Compil.exe (edit 668) supports -so switch to output errors to stdout rather than to a file or window. This makes it easier to interface with certain editors and IDEs. ============================================================================ A-Shell Release Notes Version 6.1.1386.0 (21 May 2014) ============================================================================ 1. --- ATE password security upgrade: all passwords are now automatically upgraded to use the new stronger mode 3 encryption when the configuration is used (except in situations where the mode 2 encryption is required for compatibility with a third-party component). 2. --- ATECFX.SBX version 4.4(171) implements the new password policy described above. It also corrects the premature limit on the configuration name length (was 23, is now 32). 3. --- Large disk bug fix to BLOCKS.SBR: disk sizes between 1 TB and 2 TB were being returned as negative values, and after 2 TB the values wrapped back to zero. Note that in order to take advantage of this fix, the parameters passed to these three subroutines must be floating point (F,6 or F,6) and not binary. 4. --- Large disk enhancement to BLOCKS.SBR: new optional unitscale parameter may be specified to scale the return values to something other than 512-byte blocks (which are pretty useless these days). New syntax: xcall BLOCKS, device, blks, cblks {,tblks {,unitscale}} where: blks (f,6) [out] returns the number of free "blocks" cblks (f,6) [out] returns the number of "contiguous" free "blocks" tblks (f,6) [out] returns the number of total free "blocks" unitscale (num) [in] if specified, may specify a scale factor for the returned "block" units: 0: 512 byte "blocks" 1: 1 KB "blocks" 11: 1 MB "blocks" 21: 1 GB "blocks" Notes: - unitscale values are actually powers of 2 to be used relative to the number of 512-byte blocks. - the unitscale option has also been added to proprietary routines DSPACE and LIBRE (which are approxiamately the same as BLOCKS.SBR) - the overflow problem affected SYSTAT.LIT, with or without the /H (human readable) option 5. --- Compiler (edit 665) cleans up two minor aesthetic problems in the LSX file format. ============================================================================ A-Shell Release Notes Version 6.1.1385.1 (20 May 2014) ============================================================================ 1. --- ATE file transfer bug fix: under obscure conditions, file transfers were displaying a cryptic error message implying an XCALL error, even though the transfer worked. ============================================================================ A-Shell Release Notes Version 6.1.1385.0 (20 May 2014) ============================================================================ 1. --- ASHNET.DLL 1.7.145 update: - supports public/private key authentication for SFTP (via AG_FTP or FTPDLX). - fixes problems with SFTP downloads without explicit localpaths. - fixes a bug in CRYPTO.SBR where the dst parameter was being truncated if needed to allow for an explicit trailing null. - supports new CRYPTO.SBR function to generate public/private key files. Warning: requires ASHW32.EXE 6.1.1385.0+ and should be updated at same time. 2. --- ASHNET2.DLL 2.2.205 update: - supports public/private key authentication for ATE SSH connections. - contains latest OpenSSL library patches (from 1.0.1c o 1.0.1g) - contains latest LIBSSH library patches (from 1.4.2 to 1.4.3). Warning: requires ASHW32.EXE 6.1.1385.0+ and should be updated at same time. 3. --- ATECFX.SBX version 4.4(170) enhancements: - supports storing the private key file spec and passphrase. - all password fields now allow up to 44 characters - private key passphrase and configuration password now use a much stronger encryption scheme (aka "mode 3"). Warning: requires ASHW32.EXE 6.1.1385.0+ and should be updated at same time. 4. --- ATE enhancement: public/private key authentication now supported. For security-conscious environments, this is a much more secure login method (particularly if you disable the traditional name/password login). To configure this type of authentication, generate an OpenSSH-style public and private key, preferably on the PC. (See the CRYPTO.SBR update below for one option.) Transfer the public key file to the server and append it to the file $HOME/.ssh/authorized_keys. (Obviously you'll need some alternate way of connecting to the target system to set this up.) Save the private key file somewhere in your user directory tree (specific to the user). Then in the ATE login configuration dialog, specify the private key file. (If a private, key file is specified and the server supports that method, it will be used in preference to any other authentication method.) As with the login password, you can store the private key passphrase in the ATE configuration to avoid having to type it each time you connect (although if someone gains access to your PC, they'll be able to connect to the server using your credentials). Note that if you connect using private key authentication, that method will be used for authenticating any file transfers invoked directly by or through ATE. (And even if you were forced to enter the passphrase to connect, it will be remembered and not required for file transfers.) 5. --- FTPDLX.SBX enhancment: new parameters for private key authentication: xcall FTPDLX, host, user, password, localpath, hostfile, hostdir, & opcode, status {,port {emsg {,privkey {,passphrase}}}} privkey (string, in) contains the filespec of private key file (in OpenSSH format.) If specified and non-blank, FTPDLX will use public/private key authentication rather than standard password authentication. passphrase (string, in) is the passphrase for the private key. May be omitted if the private key is not passphrase-protected. As an additional enhancement, you may now pass encrypted strings for the password and/or passphrase parameters (using MX_PWCRYPT to encrypt them, using mode 1, 2, or the new mode 3 encryption). 6. --- MX_PWCRYPT enhancement: new encryption mode (3) provides a stronger alternative to modes 1 and 2 for passwords and other short strings up to 44 characters in length. The encrypted strings are a convenient and uniform 68 MIME characters long (plus an ASCII 3 identifying prefix), making them easy to insert into both fixed-length data fields and text files (print files, configuration files, etc.) Based on a blowfish-class, 256-bit, seed-generated key incorporating both randomized "salt" and "pepper", it is strong enough to eliminate the need to hide them from public view. In most of the places where A-Shell currently accepts encrypted passwords (e.g. //PDFX files, EMAILX configuration files, FTPDLX.SBR, etc.) you can now specify a mode-3 encrypted password. See Comments below for details. The calling syntax has been expanded to: xcall MIAMEX, MX_PWCRYPT, PWIN, PWOUT, MODE {,SEED {,KEY}} Where: PWIN (string) [in] The password to encrypt or decrypt. In the case of encrypt, it should be no more than 44 characters. For decrypt, it should contain the prefix byte indicating the encrypt mode followed by the encrypted string, null terminated. PWOUT (string) [out] The encrypted or decrypted result. For encryption, the first byte will be chr(1) for mode 1, chr(2) for mode 2, or chr(3) for mode 3. (This allows generalized decryption logic to know which scheme to use.) For modes 1 and 2, the remainder of the string will equal the length of the PWIN parameter. (There may be embedded control characters, but no embedded nulls.) For mode 3 encryption, the remainder of the string will consist of 68 MIME characters, regardless of the length of the CLRPW string. (Accounting for the prefix and trailing null, you should allow 70 characters for storage.) MODE (num) [in] Indicates the operation and encryption mode. For encryption, specify the desired mode (1, 2 or 3). For decryption, specify 0. (Note, however, that to protect the security of encrypted strings which may be publicly visible in text files, decryption is not supported in the XCALL, except for mode 3 when you supply your own key (which see below). SEED (s,64) [in] (optional, applies to mode 3 only) Affects the way the encryption key is generated. For passwords, you may want to specify the user name as the SEED (making it that much more difficult for anyone to reverse engineer the key or otherwise break the encryption.) May be blank. KEY (x,32) [in] (optional, applies to mode 3 only) The base key used for the encryption or decryption. Note that it is not the actual encryption key; instead, it is used along with SEED and other factors to generate the actual key. May be omitted or set to all nulls when encrypting in order to use the standard A-Shell encryption key scheme (which can be decrypted internally by A-Shell using internal defaults, allowing it to be used in most places where a password is required - see Comments below.) Note however, that while A-Shell internally knows how to construct the key needed for decryption, to protect the security of such encrypted strings, the automatic decryption capability is not exposed in the XCALL interface. If you want to use MX_PWCRYPT for encrypting and decrypting passwords within your application, you will need to use mode 3 and supply your own explicit key for both operations. Note that key is an unformatted 32 byte (256 bit) field, possibly containing nulls. You should use some kind of randomized algorithm to fill the 32 bytes with random values distributed across the bit space, rather than using a simple string like "rosebud". Comments: Note that due to the randomized salt and pepper, successive encryptions of the same password, using the same seed and key, will still generate entirely different encryption strings. To generate a mode 3 encryption string for //PDFX.Email.SMTP.Password, specify the SMTP.Username value as the seed and omit the key parameter. (Also make sure that the SMTP.Username always appears in the printfile prior to the SMTP.Password.) Similarly, for a mode 3 encrypted password compatible with FTP2.SBR, use the FTP user name as the seed. For EMAILX, use the SMTP username as the seed (requires EMAILX.SBR 5.1.128(. 7. --- CRYPTO.SBR enhancement: new CRYPTOP_GENPUBKEY (6) opcode to generate a public/ private key file pair: xcall CRYPTO, CRYPTOP_GENPUBKEY, status, pubkeyfile$, encoding, & privkeyfile$, decoding, cflags, cipher, passphrase$, keybits, cmode Where: pubkeyfile$ and privkeyfile$ (in place of the src and dst parameters for other opcodes) must be set to the filespecs for the generated public and private key files. encoding and decoding should be "" (no options for this opcode). cflags should be set to CRYPF_NONE (output is always to file) cipher should be set to either CRYPTO_CIPHER_RSA or CRYPTO_CIPHER_DSA (3) passphrase$ (in place of the key parameter for other opcodes) must be set to the passphrase to encrypt the private key file (or "" for none.) keybits must be a multiple of 64, between 384 and 4096. cmode determines the format of the public key file: CRYPTO_MODE_OPENSSH (0) OpenSSH format CRYPTO_MODE_RFC4716 (3) RFC 4716 format Notes: For Linux login authentication, the most typical options would be: cipher = CRYPTO_CIPHER_RSA keybits = 2048 cmode = CRYPTO_MODE_OPENSSH 8. --- ATE auto-update refinement: when the command is sent to shut down the current connection in order to run the setup program to install the update, it now sends the flag needed to bypass the "Connection Closed" dialog. (Feature is supported as of ATE 6.0.1258 and 6.1.1317.) 9. --- Compiler bug fix (edit 664) - ++INCLUDE'ONCE was falsely skipping some files if the last N characters of the file.ext matched another. (Same patch as 6.0 compiler edit 538.) 10. --- ATE handshaking bug fix: server was failing to pick up client machine name when client user name or machine name contained a space. 11. --- AUI bug fix: The ALT+key accelerator keys stopped working properly (since 6.1.1381.1). Note that for TABX controls, in addition to the normal accelerator key, use can use ALT-# (where # is the tab number, starting from 1), provided that no other TABX label explicitly uses that # as its accelerator key. 12. --- XTREE bug fix: END/HOME were not triggering SelChgExit. 13. --- XTREE bug fix: Click on inactive tree was resulting in wrong targetrow being returned. 14. --- TELNET.LIT 2.1(142) now supports an ATEAUTH.SBX hook, allowing developers to preconfigure aspects of the connection properties before the dialog is displayed or the connection takes place. If ATEAUTH.SBX exists in the %MIAME%\DSK0\007006 directory, it will be called via: xcall ATEAUTH, CON'NAME$, STATUS where: CON'NAME$ (string) [in] is the name of the connection configuration. STATUS (num) [out] may be set to a non-zero value by the SBX to abort the connection. It is pre-cleared, so the SBX doesn't need to update it unless it wants to abort. ============================================================================ A-Shell Release Notes Version 6.1.1384.3 (30 Apr 2014) ============================================================================ 1. --- XTREE bug fix: expand-state column handling (coldef "=") was processing the wrong column when the answer array data was not loaded (due to optimization). ============================================================================ A-Shell Release Notes Version 6.1.1384.2 (29 Apr 2014) ============================================================================ 1. --- POLYKEY swap feature refinement: the order of cycling through the instances of A-Shell/Windows or ATE is now bases on the chronological order in which the instances where launched. This matches the order that they appear on the Task Bar (assuming your Task Bar is configured to show each instance as a separate button). Previously the order was based on the window handle, but window handle but that was somewhat arbitrary and in cases where there where many instances, confusing or annoying. ============================================================================ A-Shell Release Notes Version 6.1.1384.1 (28 Apr 2014) ============================================================================ 1. --- PDFX Email memory leak in Types 4-6 fixed. Symptoms: missing Content in delivered message and even GPF. (Problem was introduced in 1383.0.) ============================================================================ A-Shell Release Notes Version 6.1.1384.0 (24 Apr 2014) ============================================================================ 1. --- COMIO.SBR enhancement: new opcode (0) to query COM devices, intended to make it easier for applications using COMIO to automatically determine the COM port associated with the device of interest. (In the world of USB-to-COM port interfaces, it is common for the COM port number to be assigned automatically when a device is plugged in, making it otherwise difficult to write code that can adapt dynamically.) Syntax: xcall COMIO, COMOP_QUERY, propid, comary(1), status, count Where: COMOP_QUERY [in] Opcode, defined as 0 (in COMIO.DEF) propid (num) [in] Identifies the property to retrieve in the COMARY, using the symbols defined below (from COMIO.DEF). Note that these should match up with the properties available on the Device Manager Properties dialog Details panel. The idea is to give you the ability to select an additional property (besides the device description property, which is always returned) to help you identify the device of interest. Note that the property id symbols are standard Windows symbols, so if you can't identify them from the symbol name, or by matching it up to properties listed in the Device Manager dialog, then you can probably locate more information via an Internet search.) define SPDRP_HARDWAREID = 01 ! HardwareID define SPDRP_COMPATIBLEIDS = 02 ! CompatibleIDs define SPDRP_SERVICE = 04 ! Service define SPDRP_CLASS = 07 ! Class (tied to ClassGUID) define SPDRP_CLASSGUID = 08 ! ClassGUID define SPDRP_DRIVER = 09 ! Driver define SPDRP_CONFIGFLAGS = 10 ! ConfigFlags define SPDRP_MFG = 11 ! Mfg define SPDRP_FRIENDLYNAME = 12 ! FriendlyName define SPDRP_LOCATION_INFORMATION = 13 ! LocationInformation define SPDRP_PHYSICAL_DEVICE_OBJECT_NAME = 14 ! (PhysicalDeviceObjectName define SPDRP_CAPABILITIES = 15 ! Capabilities define SPDRP_UI_NUMBER = 16 ! UiNumber define SPDRP_UPPERFILTERS = 17 ! UpperFilters define SPDRP_LOWERFILTERS = 18 ! LowerFilters define SPDRP_BUSTYPEGUID = 19 ! BusTypeGUID define SPDRP_LEGACYBUSTYPE = 20 ! LegacyBusType define SPDRP_BUSNUMBER = 21 ! BusNumber define SPDRP_ENUMERATOR_NAME = 22 ! Enumerator Name define SPDRP_SECURITY_SDS = 24 ! Security define SPDRP_DEVTYPE = 25 ! Device Type define SPDRP_EXCLUSIVE = 26 ! Device is exclusive-access define SPDRP_CHARACTERISTICS = 27 ! Device Characteristics define SPDRP_ADDRESS = 28 ! Device Address define SPDRP_UI_NUMBER_DESC_FORMAT = 29 ! UiNumberDescFormat define SPDRP_DEVICE_POWER_DATA = 30 ! Device Power Data define SPDRP_REMOVAL_POLICY = 31 ! Removal Policy define SPDRP_REMOVAL_POLICY_HW_DEFAULT = 32 ! Hardware Removal Policy define SPDRP_REMOVAL_POLICY_OVERRIDE = 33 ! Removal Policy Override define SPDRP_INSTALL_STATE = 34 ! Device Install State define SPDRP_LOCATION_PATHS = 35 ! Device Location Paths define SPDRP_BASE_CONTAINERID = 36 ! Base ContainerID comary (ST_COMARY) [out] Array of structures to return details about the available devices. ST_COMARY is defined in COMIO.DEF as: defstruct ST_COMARY ! structure used in COMOP_QUERY map2 port,s,20 ! e.g. "COM4" map2 descr,s,128 ! e.g. "Prolific USB-to-Serial Port" map2 property,s,128 ! selected additional property to retrieve endstruct The actual array instance can be mapped as: map1 comary(5),ST_COMARY or dimx comary(n),ST_COMARY The size of the array should be sufficient to capture all of the expected COM devices; see count parameter. Note that you must pass the first element of the array, i.e. comary(1), not comary. Depending on the propid, the associated property may be a text string, an array of text strings, or a numeric value. In the case of the array, the elements will be separated with a "|". For the numeric properties, the returned format will be a hex value preceded by "&h". (You can convert that to a decimal number using the VAL() function; you'll have to search the Internet for details on the meaning of the numeric property values.) If the request for the property returns an error, the property string will contain "Error: #", where # will be a Windows System Error code. status (signed num) [out] Returns status codes, as in other COMIO opcodes count (num) [in/out] On input, must specify the number of elements of the comary array (to prevent overwriting memory if there are actually more COM devices than will fit in the array). On return, it will contain the number of COM devices actually copied to the array. The COMIO.BP program in [908,54] of the SOSLIB has been updated to demonstrate the new feature. ASHINC:COMIO.DEF has been added and contains the opcode symbols (COMOP_xxx), the structures, the property ID symbols, etc. 2. --- Add View Log File option to the GUI Control Operations dialog and rename the dialog to Developer Control Operations. The dialog is still accessible via CTRL+SHFT+DBLCLICK (right or left) on some blank area of the main window or dialog. The intent is to make it easier for developers and power users to check for log file messages after a program error, without having to otherwise locate and open the log file. 3. --- Various minor system dialog cleanups. Add traces DEBUG, JOBS, QOP and SYSERR to the Debug Messages Properties dialog. Adjust tab order in several dialogs. 4. --- XTREE bug fix: When loading cells from the answer array, in some cases self-combo cells were being translated using a shared CellListX definition. ============================================================================ A-Shell Release Notes Version 6.1.1383.8 (23 Apr 2014) ============================================================================ 1. --- SPOOL (or EZSPL) refinement: Under UNIX, spooling a print file that is still open does not generate any error or warning, but the spooled output may be truncated if the last block written hadn't been flushed to disk. To avoid this intolerable result that can nonetheless go without notice for an indefinite period, A-Shell now detects if the print file is still open, and if so, flushes its buffer to disk so the spooled output will be complete. It also logs a warning message to the ashlog.log file. It does not, however, close the print file, since that might lead to an I/O-to-unopened error if the file was closed later. (And although that might be a good thing, forcing the underlying bug to be fixed, it's seldom appreciated when a new error occurs in a "working" program after installing an A-Shell update.) Note that the issue didn't affect Windows because in that environment, attempting to spool an open file would generate an error. ============================================================================ A-Shell Release Notes Version 6.1.1383.7 (23 Apr 2014) ============================================================================ 1. --- XLSUTL.SBR refinement to reduce occurrences of false column breaks. (XLSUTL is a system-level routine used internally by the PRTXLS export-to-XLS routine to analyze column layouts. So this patch really only affects the PRTXLS.SBX routine.) ============================================================================ A-Shell Release Notes Version 6.1.1383.6 (22 Apr 2014) ============================================================================ 1. --- AUI_CONTROL bug fix: patch 1383.5 was causing spurious error 1400 (Unable to add tool tip) in certain cases. ============================================================================ A-Shell Release Notes Version 6.1.1383.5 (21 Apr 2014) ============================================================================ 1. --- AUI_CONTROL refinement: CTLOP_CHG with MBST_CHGTIPMNU now supports updating an existing tooltip for a control. (Previously, MBST_CHGTIPMNU only worked for updating context menus that were stored in the tooltip parameter.) ============================================================================ A-Shell Release Notes Version 6.1.1383.4 (19 Apr 2014) ============================================================================ 1. --- XTREE refinement: close timing loophole causing right-click on inactive tree to intermittently fail to trigger exitcode. ============================================================================ A-Shell Release Notes Version 6.1.1383.3 (18 Apr 2014) ============================================================================ 1. --- PDFX refinement: When using Email.Type 5 and 6, any errors will now cause the Debug Message window to be displayed with the error message. Descriptions for MAPI error numbers are listed in the PDFX documentation and also at this Microsoft site: http://msdn.microsoft.com/en-us/library/windows/desktop/hh802867%28v=vs.85%29.aspx 2. --- XTREE refinement: right-clicking on a multi-select tree (whether active or inactive) now preserves the existing selections if you click on one of the selected items (with or without CTRL). If you click on an non-selected item, then the existing selections are cleared. This more closely matches the behavior of Explorer (and also versions of XTREE prior to 1383.0). ============================================================================ A-Shell Release Notes Version 6.1.1383.2 (17 Apr 2014) ============================================================================ 1. --- XTREE refinement: an inactive right-click on a tree now always sends the standard left-lclick exitcode, regardless of whether the xtr'kbdstr field contains an "r". (Normally an "r" is required, e.g. "VK_xrF101", to support right click, and in that case the exitcode is positive rather than negative. But in this case, the only logical application response is to XCALL XTREE in either case, so making a distinction was just leading to application bugs.) 2. --- PDFX refinement: //PDFX,Email.Content field for Type 5 and Type 6 now supports the //SETOPTION,UTF8 flag. In other words, you can specify non-ASCII characters in UTF8 format in the Email.Content field. Notes: - Characters that cannot be expressed as single byte Latin1 characters (e.g. asian, greek, cyrillic, etc.) will appear as garbage unless the local MAPI subsystem and the email client support UNICODE. (This may require further Windows or other subsystem updates/configuration.) - Embedded entity references are not supported in the Content field for any of the Email.Type options. - UTF8 in the Email.Content field is only supported in Type 5 and 6 (not 4). ============================================================================ A-Shell Release Notes Version 6.1.1383.1 (16 Apr 2014) ============================================================================ 1. --- PDFX refinement: when using Email.Type,4 the default values for the these options are changed as follows: //PDFX,Save.ShowSaveDialog,0 //PDFX,Save.WhenExists,overwrite Also, for Email.Type 4 through 6, following default is now set: //PDFX,Save.Type,2 These new defaults eliminate a common source of problems or annoyances when forgetting to specify them. 2. --- XTREE bug fix/refinement: various minor improvements to the handling of the right-click event on active and particularly inactive trees. ============================================================================ A-Shell Release Notes Version 6.1.1383.0 (14 Apr 2014) ============================================================================ 1. --- PDFX enhancement: new Email.Type options 5 and 6 re-implement the original Type options 1 and 2 (i.e. launch the standard email client for sending interactively or non-interactively, respectively). The new implementation uses the latest Windows 7/8 MAPI API routines under direct A-Shell control rather than the MAPI interface built in to the PDFX driver (which didn't work reliably or at all with newer Windows systems). There are still too many variables (different email clients, logon security frameworks, versions of Windows, etc.) to be sure that this will work in your environment, but it has a much better chance of working than the old Types 1 and 2. 2. --- PDFX enhancement: new directive allows specification of additional files to be attached to the email in Types 4-6: //PDFX,Email.AttachFile,filespec filespec is a standard file specification (AMOS or native) for the additional file to be attached to the message. You may have up to 15 //PDFX,Email.AttachFile,filespec statements (i.e. up to 15 additional attachments). ============================================================================ A-Shell Release Notes Version 6.1.1382.6 (03 Apr 2014) ============================================================================ 1. --- INFLD refinement: If the drop-down list of a combo-box would extend beyond the right-most display monitor, it is now truncated at the right monitor edge and a horizontal scroll bar added. 2. --- PDFX Email Type 4 enhancement: The Email.SMTP.UseSLL option can now be set to 2 to invoke the StartTLS protocol. (The port should be set to 25 or another non-encrypted port; the connection starts out in un-encrypted mode and then negotiates a change to TLS encrypted mode.) This change is actually implemented in ASHNET.DLL 1.6.140 (no actual change needed to ASHW32.EXE). 3. --- PDFX Email Type 4 refinement: In response to occasional undiagnosed reports of emails being sent without the PDF attachment, error checking has been enhanced (in ASHNET.DLL 1.6.141) and the SMTP log file will will indicate if there was any problem with the attachment. ============================================================================ A-Shell Release Notes Version 6.1.1382.5 (03 Apr 2014) ============================================================================ 1. --- XTREE bug fix: The previous patch had a side effect of garbage characters appearing in certain editable cells after opening and closing a secondary tree and then reloading the original one. ============================================================================ A-Shell Release Notes Version 6.1.1382.4 (02 Apr 2014) ============================================================================ 1. --- XTREE bug fix: close a memory corruption loophole related to creating a new tree when another already existed, and then closing the new tree and using the vertical scroll bar in the original tree. Was causing a GPF. ============================================================================ A-Shell Release Notes Version 6.1.1382.3 (02 Apr 2014) ============================================================================ 1. --- XTREE bug fix: close a UNICODE-related loophole which was allowing a stack overflow and subsequent GPF) to occur, related to the use of List{X} cells. ============================================================================ A-Shell Release Notes Version 6.1.1382.2 (01 Apr 2014) ============================================================================ 1. --- XTREE refinement: check for illegal XTR'SHOWROWHDR value and if so, reset. (This was mainly a workaround for an application bug.) ============================================================================ A-Shell Release Notes Version 6.1.1382.1 (31 Mar 2014) ============================================================================ 1. --- SORTIT.SBR / BASORT.SBR refinement: existing order of records with equal keys now preserved. (Was upset by previous patch.) ============================================================================ A-Shell Release Notes Version 6.1.1382.0 (30 Mar 2014) ============================================================================ 1. --- SORTIT.SBR / BASORT.SBR bug fix: when using the natural sort, if the record size and key size were the same, and there was no trailing null in the key, it was possible to get an incorrect sort order. ============================================================================ A-Shell Release Notes Version 6.1.1381.9 (29 Mar 2014) ============================================================================ 1. --- XTREE bug fix: Using the mousewheel within a combo cell wasn't working as expected with ScrollMode=Tree. 2. --- Compiler bug fix (edit 662) - Spurious syntax errors when using /P (related to use of SIZEOF and .OFFSET) in func/proc definitions. 3. --- Compiler enhancement (edit 663) - When using /P and /L, the LSX file now contains a list of all the procedures and functions, along with an indicator of how many times they were called. 4. --- ZTXFER.LIT 1.3(107) refinement: now supports filenames that exceed the 10.3 file.ext format. Also now treats server destination of "*" or "*.*" as equivalent to "" (i.e. use file.ext from PC). ============================================================================ A-Shell Release Notes Version 6.1.1381.8 (28 Mar 2014) ============================================================================ 1. --- PDFX refinement: log file now lists name of attachment. ============================================================================ A-Shell Release Notes Version 6.1.1381.7 (27 Mar 2014) ============================================================================ 1. --- Compiler bug fix (edit 661): /P switch was conflicting with conditional compilation, certain pragmas, LSX compilation, and SIZEOF(). 2. --- XTREE bug fix: clicking on an inactive tree was sometimes sending the SelChgExit exitcode rather than the tree's default exitcode. ============================================================================ A-Shell Release Notes Version 6.1.1381.6 (26 Mar 2014) ============================================================================ 1. --- Compiler bug fix (edit 660): issues related to /P and symbol definitions. (Superseded by subsequent edit 661.) ============================================================================ A-Shell Release Notes Version 6.1.1381.5 (25 Mar 2014) ============================================================================ 1. --- XTREE bug fix: Copy selected item to clipboard was marking the clipboard format as ANSI when it was really UNICODE, resulting in garbage when pasting it into most apps. ============================================================================ A-Shell Release Notes Version 6.1.1381.4 (22 Mar 2014) ============================================================================ 1. --- Minor addition of LP TRACE messages to log to help track down a problem with an APEX shutdown due to apparent conflict with a rogue security service. ============================================================================ A-Shell Release Notes Version 6.1.1381.3 (21 Mar 2014) ============================================================================ 1. --- XTREE bug fix: Advanced coldef option Font= was not working correctly. 2. --- Compiler bug fix (edit 657): The /P switch was interfering with the use of conditional compilation statements. In most cases this was benign but in some cases it could have resulted in compilation errors such as "conditional expression not constant". ============================================================================ A-Shell Release Notes Version 6.1.1381.2 (20 Mar 2014) ============================================================================ 1. --- AUI_CONTROL performance refinement: deleting sets of controls (e.g. with CTLOP_CLR, CTLOP_DEL, or CTLOP_PANE) is now faster than before due to some display optimization. ============================================================================ A-Shell Release Notes Version 6.1.1381.1 (19 Mar 2014) ============================================================================ 1. --- AUI_CONTROL refinement: minor adjustment to color logic for checkboxes to help preserve transparency. (For best transparency results, always set the FGC and BGC fields to NUL_FGC and NUL_BGC, particularly in INFLD checkboxes.) ============================================================================ A-Shell Release Notes Version 6.1.1381.0 (18 Mar 2014) ============================================================================ 1. --- Compiler enhancement (edit 655): new conditional compilation statements: ++IFLBL label ++IFNLBL label ++ELIFLBL label These are analogous to the existing ++IFDEF, ++IFNDEF, and ++ELIFDEF statements (as well as ++IFMAP, ++IFNMAP and ++ELIFMAP), except that instead of referring to defined symbols or mapped variables, they refer to labels (used by GOTO and GOSUB) as well as procedure and function names. Note however that when the specified label is meant to refer to a function or procedure name, it must be terminated by an empty pair of parentheses. For example: ++IFLBL MAIN ++MESSAGE The label MAIN is defined ++ELIFLBL MAIN() ++MESSAGE The procedure MAIN() is defined ++ELIF fn'main() ++MESSAGE The function fn'main() is defined ++ENDIF Also note that labels, like variable names, are case sensitive, unless you compile with the /CI switch. 2. --- Compiler bug fixe (edit 656): A function or procedure with the same name as a previously defined symbol was being substituted by the symbol value. This almost certainly let to a compilation error, but may have been confusing. 3. --- ATE enhancement: Various improvements have been made to the ashlog.log file, making it a more useful resource for reviewing the connection history and investigating problems. Session startup and shutdown details in particular are logged, along with an indication of whether the user initiated the disconnect via the File>Disconnect (i.e. |D clickstring) or via the "X" Quit dialog. ============================================================================ A-Shell Release Notes Version 6.1.1380.0 (14 Mar 2014) ============================================================================ 1. --- New compiler feature (edit 654): UNDEF symbol The UNDEF statement causes the specified symbol to be undefined, allowing it to be redefined or to fail a ++IFDEF symbol test. 2. --- AUI refinement: when the "force edit box height to match combo" option is set, the reference height is now reset for each actual combo created. Since the reference combo height is otherwise based on a combo using the default scale and desktop font, this provides the possibility of a workaround for a problem in which the font or scale characteristics of the actual combo boxes in use do not match the default font and scale. To completely take advantage of the feature, if you are using a different font or scale for your combo boxes than for your edit boxes, you should create one of the combo boxes (or a dummy, if necessary), before creating the edit boxes. This will ensure that the combo and edit box heights match. ============================================================================ A-Shell Release Notes Version 6.1.1379.0 (13 Mar 2014) ============================================================================ 1. --- (Windows) New FTP subroutine: xcall FTP2, host, user, password, localpath, hostfile, hostdir, & opcode, status {,port {,emsg}} This is an independent implementation of the FTP (and SFTP) capability previously offered in the FTPDLX.SBR interface. The FTP2 version does not use any COM components (thus no need to register any DLLs), nor any VB modules, nor does it need an ALIAS. It uses only the ashw32.exe executable and ashnet.dll 1.6(138) or higher. Aside from the reduced dependencies, the main advantage of this version is that it allows you to use a single connection for many file transfers, as opposed to FTPDLX, which opens and closes a connection for each individual transfer. This is of little benefit for one transfer, but makes a very significant difference when transferring many files. The parameters are the same as for FTPDLX, with addition of a few new opcode options. All are listed here: XFTPF_GET (&h00000000) ! get XFTPF_PUT (&h00000001) ! put XFTPF_ASCII (&h00000002) ! ASCII mode (else binary) XFTPF_NOERRMSG (&h00000010) ! suppress error dialogs XFTPF_PASSIVE (&h00000020) ! passive ftp mode XFTPF_NOBANNER (&h00000040) ! suppress the transfer banner XFTPF_DEBUG (&h00000080) ! create debug.log (FTPDLX only) XFTPF_SFTP (&h00000100) ! SFTP protocol (else FTP) XFTPF_VERSION2 (&h00010000) ! request FTP2 (FTPSYNC mode only) XFTPF_KEEPOPEN (&h00020000) ! keep connection open (FTP2 only) XFTPF_REUSE (&h00040000) ! reuse prev connection if avail (FTP2 only) XFTPF_CLOSE (&h00080000) ! close connection (no xfer) (FTP2 only) 2. --- (LINUX) EFS security improvement: When ashell enters the interactive dot prompt state, it now (by default) clears the encryption key. This way, if a program should unexpectedly abort and drop to the dot prompt, it will not leave the user with access to encrypted files. You can override this behavior by using one or both of the following new EFS.SBR opcodes: xcall EFS, 14, flags ! set A-Shell/EFS flags xcall EFS, 15, flags ! get A-Shell/EFS flags Currently the only defined flag is: &h0001 (AEFS_CLR_KEY_ON_EXIT) ! clear encryption key on exit to dot prompt The AEFS_CLR_KEY_ON_EXIT flag is set by default. To disable the option (returning to the prior behavior), use xcall EFS, 14, 0 to clear the flag. 3. --- XTREE bug fix: The XTF2_AUTOEXPCOL flag was often leaving a small gap at the right edge of the tree. 4. --- INFLD refinement: when in text mode, the SETDEF options are now displayed in the standard text mode font. Previously, they were displayed in a proportional font if the terminal supported GUI mode. (Note this is a server-side fix.) 5. --- CTLOP_DEL bug fix: deleting a control on a TABX panel and immediately recreating it was sometimes resulting in an overlapped display (i.e. merging the old and new controls). 6. --- TABX bug fix: in some cases, child controls with the default NUL_BGC background color were gettng drawn with the Windows default background (gray) instead of the TABX background. ============================================================================ A-Shell Release Notes Version 6.1.1378.1 (07 Mar 2014) ============================================================================ 1. --- Error location counter bug fix: programs that failed to RESUME after an error were also failing to reset the error location counter, which caused the err(8) function for a subsequent error to report the earlier error location. (The locations in the ashlog were correct though.) ============================================================================ A-Shell Release Notes Version 6.1.1378.0 (06 Mar 2014) ============================================================================ 1. --- XTREE bug-fix/refinement: ListX lists were being terminated by two adjacent delimiters. It now treats the null field as a blank and continues to process items until hitting the tilde marking the end of the clause (matching behavior in earlier versions). 2. --- XTREE refinement: The "Illegal Coldef Option" message box will now only appear once per XCALL (sparing you from potentially many of them if your coldef syntax was badly messed up). ============================================================================ A-Shell Release Notes Version 6.1.1377.9 (06 Mar 2014) ============================================================================ 1. --- AUI_CONTROL bug fix: creating a new control with a tooltip was sometimes (rarely) causing a change in the parent dialog's position in the Z order. ============================================================================ A-Shell Release Notes Version 6.1.1377.8 (05 Mar 2014) ============================================================================ 1. --- INMEMO (and PCKLST text mode) bug fix: they were failing to return the EXTCOD value in some cases. 2. --- Windows error reporting bug fix: in various situations a spurious error 183 (cannot create a file when that file already exists) was being reported. ============================================================================ A-Shell Release Notes Version 6.1.1377.7 (03 Mar 2014) ============================================================================ 1. --- SBR=CCYY:## now defaults to 60 for all situations, as implied by the documentation. Previously this was only true for INFLD and for XTREE date sorting, but not for some date picker controls nor for IDTIM.SBR. (This was most likely a problem in ATE where the local ATE copy of MIAME.INI may not have specified the CCYY option, resulting in the date picker calendar showing a year like 1914 instead of the expected 2014 for a date like 03/03/14.) ============================================================================ A-Shell Release Notes Version 6.1.1377.6 (01 Mar 2014) ============================================================================ 1. --- XTREE bug fix: close a loophole through which a memory fault may have occurred if a context menu was requested while editing a combo or date picker cell. ============================================================================ A-Shell Release Notes Version 6.1.1377.5 (28 Feb 2014) ============================================================================ 1. --- XTREE refinement: clear XTR'XNAVMASK after the FastMax=1 event triggers to avoid inadvertently displaying the tree's context menu if the event leads to a rapid exit and re-entry. ============================================================================ A-Shell Release Notes Version 6.1.1377.4 (27 Feb 2014) ============================================================================ 1. --- TABX display refinement (eliminate some unnecessary repaints or failures to repaint). ============================================================================ A-Shell Release Notes Version 6.1.1377.3 (27 Feb 2014) ============================================================================ 1. --- XTREE bug fix: Clear up some undesirable side effects of the FastMax=1 feature added in 1377.1. ============================================================================ A-Shell Release Notes Version 6.1.1377.2 (26 Feb 2014) ============================================================================ 1. --- AUI display refinement: dragging a main window containing MBF2_DLGNOCAP dialogs now works somewhat smoother than before. ============================================================================ A-Shell Release Notes Version 6.1.1377.1 (25 Feb 2014) ============================================================================ 1. --- AUI_CONTROL bug fix/refinement: The 1376.0 feature that interpreted erow and/or ecol values of <= 0 as being relative to the bottom/right edge has been adjusted to require the values to be < 0. The problem was that for controls with a default minimum size (such as the calendar), some programs may have been setting erow and ecol to 0, counting on the minimum size. The change introduced in 1376.0 was causing such controls to extend to the bottom/right edge of the parent dialog. 2. --- AUI_CONTROL bug fix: MBF_ALTPOS dialogs were initially displaying too tall (and possibly too wide), although they were restoring to the correct size after a resize event. Problem was introduced in 1376.0 3. --- XTREE enhancement/refinement: The Advanced Column Definition clause FastMax=1 now causes the cell to exit after clicking on a new selection in the dropdown list (or after using the up/down arrow keys to change the selection and then hitting ENTER). (This amazing feature eliminates one extra keystroke, thus improving operator productivity immeasurably.) ============================================================================ A-Shell Release Notes Version 6.1.1377.0 (24 Feb 2014) ============================================================================ 1. --- AUI_CONTROL enhancement: tooltips will now automatically wrap at 600 pixels, and you now have the option of manually breaking the lines by inserting chr(13) characters. The display time for a tooltip (normally about 5 seconds) is also now extended by 4 seconds for every 100 characters past the first 100. You may extend the display time to the maximum value of 32 seconds by inserting a "+" at the start of the tooltip string. Note that the maximum tooltip length remains 400 characters. 2. --- XCALL AMOS enhancement: a optional new parameter, CHAINTO$, may be specified (along with the +4 option in the PFLAG parameter) to return the command line that the child program attempted to chain to. (The CHAIN operation is always trapped by XCALL AMOS, forcing the child to return to the parent; this new feature allows the parent to effectively carry out the requested CHAIN operation via a subsequent XCALL AMOS call.) New syntax: XCALL AMOS, cmd {,qflag {,pflag {,chainto}}} where chainto is a string of sufficient length to retrieve the CHAIN statement argument. If the +4 option in pflag is not specified, or if the child program does not CHAIN, the chainto parameter will return "". Also note that this is only possible when the child executes in-process, so unless you have that option forced on globally, you should also specify the +1 option in pflag. 3. --- Static image bug fix: in some conditions, image controls were getting resized to a width of zero (effectively making them disappear). Problem was introduced in 1374.4. ============================================================================ A-Shell Release Notes Version 6.1.1376.0 (21 Feb 2014) ============================================================================ 1. --- AUI_CONTROL enhancement / behavioral change: when using grid coordinates, srow/scol values < 0, and/or erow/ecol values <=0 are interpreted as relative to the bottom and right edge of the parent control. This was already the case for MBF2_PIXCOORDS but now works for grid coordinates. Warning: this does eliminate an ancient but probably unused feature in which negative coordinate values were assumed to be pixels. (If you want to use pixel coordinates, you should use MBF2_PIXCOORDS.) 2. --- AUI_CONTROL enhancement: new flag MBF2_DLGMWFNTGRID (&h00100000) may be used with captionless dialogs based on the main window grid (i.e. without MBF_ALTPOS) to force the text controls within the dialog to use the same font scaling logic as the main window uses. This is mainly of use when the Misc Settings font scaling option is non-zero (i.e. when the main window controls use a font scaled to the main window grid). In particular, if you are using the MX_AUTOPARENT and AUTOTPRINT features to run a non-GUI-aware program in a dialog, this allows you to scale the dialog and the fonts within it to the main window size. 3. --- Bug fix: retrieving the current auto parent setting (see 1374.0) was in some cases resulting in a memory fault. 4. --- MBF2_STICKY bug fix: the sticky logic was allowing controls belonging to the main window to cover the main window's status lines. ============================================================================ A-Shell Release Notes Version 6.1.1375.0 (12 Feb 2014) ============================================================================ 1. --- AUI_CONTROL enhancement: to delete all the children of a dialog (or other parent control), you can now use CTLOP_DEL with the parentid parameter set to the id of the parent whose children are to be deleted, and all other parameters set to null, e.g. xcall AUI, AUI_CONTROL, CTLOP_DEL, NUL_CTLID, NUL_CTEXT$, NUL_CSTATE, & NUL_CTYPE, NUL_CMD$, NUL_FUNC$, NUL_CSTATUS, NUL_SROW, NUL_SCOL, & NUL_EROW, NUL_ECOL, NUL_FGC, NUL_BGC, NUL_FONTATTR, NULL_FONTSCALE, & NUL_FONTFACE$, NUL_TOOLTIP$, parentid This is nearly equivalent to using CTLOP_CLR and setting the ctlid parameter to the parent control id, except that in this case there is no possibility of some child controls being protected. 2. --- MX_AUTOPARENT refinement: TAB(-1,0) now confined to deleting just the children of the auto-parent dialog. Note that the auto-parent dialog setting is normally cleared at the start of each new program, so this change will typically not affect XY=0 but is designed mainly to make it easier to execute existing RUN programs within a dialog. See new AMOS +8 flag added in 1374.0 for a related feature.) 3. --- INFLD/ATE server-side bug fix: the feature which displays negative values in red wasn't working in case of display-only fields in ATE environment. 4. --- INFLD bug fix: right justification for display mode using sunken/static text control wasn't working (broken in 1364.0). 5. --- Dialog positioning bug fix: in multi-monitor environments, certain conditions (including SBR=AUTO_DLG_MAX and dialogs which otherwise would extend slightly beyond the edge of the monitor) were resulting in the dialog being repositioned on the main monitor even if the parent window as on another. 6. --- XTREE refinement: remove Copy/Paste options from cell editing automatic context menu for read-only (cformat "u") cells. 7. --- XTREE bug fix: close a loophole in which XTREE was sending its click code as result of getting the focus as a side effect of some unrelated event (rather than as the result of an explicit click). ============================================================================ A-Shell Release Notes Version 6.1.1374.9 (12 Feb 2014) ============================================================================ 1. --- XTREE bug fix: the earlier (1374.0) fix for cformat "Pl" wasn't complete. ============================================================================ A-Shell Release Notes Version 6.1.1374.8 (10 Feb 2014) ============================================================================ 1. --- ATE bug fix: When switching between ATE 5.x and 6.x, if the configuration under 5.x used SSH without checking the OpenSSH option, it was possible that under 6.x, ATE would fail to connect due to a mismatch of SSH options. 2. --- AUI bug fix: resizing a dialog containing image controls was sometimes leaving redundant remnants of the original image controls still visible. ============================================================================ A-Shell Release Notes Version 6.1.1374.7 (10 Feb 2014) ============================================================================ 1. --- TABX bug fix: children with the MBF2_STICKY flag that were intended to be near the edge of the tab labels were instead covering the tab labels. (This was mostly noticeable with XTREE, which is commonly positioned to occupy the entire tab panel and which automatically has the STICKY flag.) ============================================================================ A-Shell Release Notes Version 6.1.1374.6 (09 Feb 2014) ============================================================================ 1. --- XTREE bug fix: the internal "caret" (current position marker) was getting out of sync with the selected item after certain sequences of events, resulting in an UP or DOWN arrow causing the selected row to jump to the top (rather than move up or down by one as expected). ============================================================================ A-Shell Release Notes Version 6.1.1374.5 (09 Feb 2014) ============================================================================ 1. --- EZTYP/APEX bug fix: In rare cases where the My Documents folder was not defined for the current user in the Registry, and there was no APEX environment definition, EZTYP and APEX preview operations may have reported a confusing "ConsolidatePrintFile" error message indicating seemingly random text for the file that it couldn't open. In such cases it will now use the %TEMP%\APEX directory (or C:\APEX if no %TEMP% defined), and if that doesn't work, at least the error message will contain the actual file spec that it is trying to open. (In the case of EZTYP, even with the error, the preview still worked reasonably well anyway.) ============================================================================ A-Shell Release Notes Version 6.1.1374.4 (08 Feb 2014) ============================================================================ 1. --- ISAM fix/workaround for problem of some old IDX files (presumably generated under AMOS) that have plausible but incorrect values for the number of IDX levels. (These were being taken at face value and leading to ERF 35 errors.) 2. --- EZTYP bug fix: remove spurious "//RESETFONT" message from appearing at top of file display. ============================================================================ A-Shell Release Notes Version 6.1.1374.3 (08 Feb 2014) ============================================================================ 1. --- XTREE bug fix: when using a Mask with an LDF where the decimal point is not the "." was resulting in the digits to the right of the decimal point being set to zero upon loading data into the cell. (Broken in 1365.0) ============================================================================ A-Shell Release Notes Version 6.1.1374.2 (06 Feb 2014) ============================================================================ 1. --- Fix problem which was causing windows that should be hidden to appear. (Introduced around 6.1.1370). 2. --- ATSYNC.LIT/SBX 1.3(119) fixes an issue with it leaving the ATE client in local keyboard mode, which would give the appearance of it being locked if the ATSYNC operation was followed by non-GUI keyboard operations. ============================================================================ A-Shell Release Notes Version 6.1.1374.1 (06 Feb 2014) ============================================================================ 1. --- XTREE/ATE optimization bug fix: when switching between multiple trees, in some cases the optimization logic was resulting in a failure to fully update the ansary on exit. ============================================================================ A-Shell Release Notes Version 6.1.1374.0 (03 Feb 2014) ============================================================================ 1. --- MX_AUTOPARENT now supports an option to return the current auto parent. New syntax: xcall MX_AUTOPARENT, newctlid {,oldctlid} To retrieve the current setting without changing it, specify a literal null string for newctlid, e.g. xcall MX_AUTOPARENT, "", oldctlid In the ATE environment, the feature requires that both the server and client be at least at edit 1374. Otherwise, the oldctlid will be returned as -99. 2. --- AG_AUTOPARENT now returns the current auto parent (in numeric form) as well as the new one, i.e. ? tab(-10,AG_AUTOPARENT);newctlid$,1;chr(127); input "",newctlid,oldctlid Note that the newctlid$ specified by the application may be alphanumeric, while both the returned newctlid and oldctlid will be numeric. Older ATE clients will only return the newctlid value, thus if you are depending on it, you should either verify the ATE edit level, or use the MX_AUTOPARENT version (which will return -99 if either the server or client doesn't support it). Older programs unaware of the new feature shouldn't be affected, since the return value has always been numeric. (The value of "n1,n2" is the same as the value of "n1"). 3. --- New XCALL AMOS pflag option +8 prevents the normal reset of the auto parent setting at the start of the called program. (This makes it easier to launch programs designed to operate in the default or main window and instead force them to operate within a dialog created by the calling program.) 4. --- XTREE bug fix: expand/collapse state feature (cformat code "=") was broken in 1365.0 (another UNICODE casualty). 5. --- XTREE bug fix: cformat code "P" (reserve first position of cell) wasn't working with "l" (lists). 6. --- AUI_CONTROL bug fix: CTLOP_CHG on a dialog with a centering option and a menu was resulting in shrinking of the dialog. ============================================================================ A-Shell Release Notes Version 6.1.1373.9 (02 Feb 2014) ============================================================================ 1. --- XTREE bug fix: ListX feature wasn't loading any list items past the first null item. 2. --- MBF2_STICKY bug fix: it was failing to recognize main window toolbars as off limit (thus allowing sticky controls to extend over them). 3. --- AUI_EVENTWAIT bug fix: it was failing to convert incoming parentid value of 0 to the current auto parent setting. 4. --- Click handling bug fix: The click handler was incorrectly treating the auto parent dialog as modal, even when it wasn't (and thus as ignoring clicks outside of it). 5. --- Windows printing refinement: printing to a non-shareable port (LPTx or COMx) now internally blocks other instances of A-Shell from trying to print to the same port at the same time. (Previously this rare but possible situation was generating a Windows error 183.) 6. --- TABX bug fix: the use of accelerator keys to select a new panel wasn't working reliably. 7. --- MX_NOBUF, MX_FLUSHBUF bug fix: failing to pass a status parameter was leading to a memory fault. (Problem introduced in 1372.0) NOTE: this problem occurred in the SOSLIB SysLog() procedure, which is used by ATEAPX.SBX and possibly many other subroutines! ============================================================================ A-Shell Release Notes Version 6.1.1373.8 (24 Jan 2014) ============================================================================ 1. --- XTREE bug fix: Exitchars feature wasn't working (since 1365.0) ============================================================================ A-Shell Release Notes Version 6.1.1373.7 (18 Jan 2014) ============================================================================ 1. --- XTREE bug fix: left arrow in empty editable tree was causing infinite loop. ============================================================================ A-Shell Release Notes Version 6.1.1373.6 (17 Jan 2014) ============================================================================ 1. --- Eliminate bogus log file warning about a bad free request related to APEX. ============================================================================ A-Shell Release Notes Version 6.1.1373.5 (17 Jan 2014) ============================================================================ 1. --- XTREE bug fix: bogus complaints about COLDEF after using XTROP_REPLACE. ============================================================================ A-Shell Release Notes Version 6.1.1373.4 (15 Jan 2014) ============================================================================ 1. --- XTREE refinement: warning messages about configuration problems are now logged to ashlog.log as well as being displayed in message boxes. ============================================================================ A-Shell Release Notes Version 6.1.1373.3 (14 Jan 2014) ============================================================================ 1. --- APEX bug fix: preview window size/position was not properly being saved and restored, particularly in multi-monitor environments. 2. --- APEX bug fix: changing the printer or printer setup while previewing a file containing //XOFFSET or //YOFFSET commands other than at the top was causing the effect of the last offset command(s) to wrap around to the start of the file. 3. --- Printing bug fix: a UNICODE/ASCII mismatch was causing the printer options displayed (and returned) from the printer selection dialog to be corrupted. ============================================================================ A-Shell Release Notes Version 6.1.1373.2 (13 Jan 2014) ============================================================================ 1. --- XTREE bug fix: close a memory handle leak that was causing A-Shell to eventually run out of memory handles after heavy use. (Introduced in 1365.) 2. --- Increase memory handle buffer from 384 to 512 (mostly to allow for heavier usage of associative arrays, which use 1 handle each while in scope). ============================================================================ A-Shell Release Notes Version 6.1.1373.1 (13 Jan 2014) ============================================================================ 1. --- APEX bug fix: search function was broken by the UNICODE conversion (1365.0) ============================================================================ A-Shell Release Notes Version 6.1.1373.0 (12 Jan 2014) ============================================================================ 1. --- Language enhancement: (compiler edit 651) recognizes two new dot functions: .ARGTYP(argno) .ARGSIZ(argno) These return the type and size of the specified argument passed to the current SBX, function, or procedure. If the specified argno is invalid, the return value will be -1. The argument types are made up of the following bits: define ARGTYP_MASK = &h000f ! mask for types X,S,F,B,I define ARGTYP_X = &h0000 ! X type (mutually exclusive) define ARGTYP_S = &h0002 ! S type (" " ") define ARGTYP_F = &h0004 ! F type (" " ") define ARGTYP_B = &h0006 ! B type (" " ") define ARGTYP_I = &h0008 ! I type (" " ") define ARGTYP_ARRAY = &h0010 ! array define ARGTYP_NOSURR= &h0020 ! no surrogate define ARGTYP_DYN = &h0040 ! dynamic variable define ARGTYP_LOCAL = &h0080 ! local dynamic variable define ARGTYP_SBR = &h0100 ! var within SBX or xcall AMOS Warning: These new functions are not recognized by runtime versions prior to 6.1.1373.0, and will simply return the value of the argno passed. You could use this fact to test if the feature is supported at runtime by passing an illegal argno, such as 999 or -2, to .ARGTYP(argno). If supported, the return value will be -1 (error); else if will match the argno passed. 2. --- MX_SHELLEX refinement: local mode (clisvr = "S" or "L") now supports the waitflag options and the exitstatus parameter. Previously, these only worked in the normal/default (client) mode where the operation is forwarded to ATE via the AG_SHLEXEC command. Also, both modes now support shell commands that require COM initialization. 3. --- Language enhancement (compiler edit 652): NAMED PARAMETERS (aka KEYWORD ARGUMENTS). You can now use named parameters in place of, or in conjunction with the traditional ordered parameters, for all function and procedure calls. Although this feature is really just a syntactic nicety rather than a fundamentally new capability, it nevertheless offers a variety of benefits: - makes code more self-documenting - reduces errors relating to omitting or mis-ordering parameters - allows function to specify default parameter values (besides 0 or "") - allows function to specify mandatory parameters - allows caller to specify just the params of interest, omitting the defaults - the compiler can now detect badly formed function calls The AShell/BASIC implementation of named parameters is similar to that found in other modern languages such as Python, in which the parameter names are extracted from the existing function and procedure definitions (without requiring any syntactic changes to existing definitions). In addition, function and procedure definitons may now specify default values for one or more parameters. Parameters with specified defaults are considered optional parameters, whereas those without defaults are considered mandatory. However, there is one important exception to this rule, required for backward compatibility. Since AShell/BASIC has traditionally treated ALL function and procedure (and xcall) parameters as optional, it will continue to do so unless a function/procedure definition is modified to specify at least one default value. This will become clear with a few examples, but first let's note the following points: - Named parameters are resolved entirely by the compiler. Thus programs using named parameters are backwards compatible back to the 5.0 runtime, and the runtime system has no way of detecting if a particular call used named or traditional ordered parameters. - The semantics regarding optional and mandatory parameters are entirely determined by the function/procedure definitions, and not affected by whether the routine is called with named or ordered parameters. - Since the compiler needs to see the function/procedure definition before any calls which use named parameters, it now makes a new preliminary pass of the entire source to build a table of the definitions. Although this pre-pass is very fast, to avoid inflicting any performance penalty (or risk of side effects) on programmers not using named parameters, the preliminary pass (and thus the named parameter feature) requires a new switch: /P. This in turn requires an update to COMPIL.LIT 1.1(126) - In order to create common utility functions and procedures that might need to be compiled by older versions of the compiler, the /P switch will define a symbol ABC_NAMED_PARAMS=1 which you can use in conditional compilation statements to specify alternate versions of your function/procedure definitions. See example below. - *** Ambiguity/Compatibility Warning: Expressions of the form A=B have always been legal where expressions are legal, and thus Fn'X(A=B) is legal with any version of the compiler, provided that A and B are mapped variables or that (the horror!) you are compiling without the /M switch. The expression evaluates to true (-1) if A equals B, and or false (0) otherwise. Use of the /P switch disables that dubious feature within XCALL and function/procedure calls, and instead interprets the expression as a request to set the named parameter A to the value B. However, there is possibility that calls with named parameters might be compiled under an older compiler (or without the /P switch), resulting in a syntactically correct but semantically confused RUN file. To avoid this possibility, in programs that use named parameters, you should include a conditional compilation test to detect an attempt at compilation with /P and to report it as an error, e.g. ++ifndef ABC_NAMED_PARAMS ++error This program requires compiler 653+ (and /P) ++endif Now for the examples. Consider the following function which takes the names of players at the first, second and third base positions and displays them as a sentence, as in the famous Abbott & Costello routine, i.e. "Who's on first, What's on second, and I Don't Know's on third". function fn'lineup$(first$ as s0, second$ as s0, third$ as s0) as s0 Traditionally, any of the following would be legal invocations of the function, at least from the compiler's perspective: ? fn'lineup$() ? fn'lineup$("Who") ? fn'lineup$("Manny","Moe") ? fn'lineup$(spam$,spam$,spam$,spam$) The first three examples specify fewer than the three expected parameters, but since there is no enforcement of minimum parameter counts, the compiler is happy. (The routine itself can test .ARGCNT to see how many were actually passed.) The fourth example specifies an extra parameter, which the compiler is happy to pass, and the routine may simply ignore (although it also has the ability to retrieve such additional parameters using explicit XGETARG statements). Using named parameters, any of the following are also legal: ? fn'lineup$(first$="Who", second$="What", third$="I don't know") ? fn'lineup$(second$="Jack", first$="Manny") ? fn'lineup$("Eenie", "Meenie", third$="Mo") The first simply adds the names of the parameters, making the code a bit more self-documenting. The second illustrates that you can rearrange the parameters since the compiler can match the names up to their proper positions, and you can also omit trailing parameters (in this case third$, provided it doesn't create a gap). The third example illustrates that you can combine ordered and named parameters, as long as the ordered ones ("Eenie" and "Meenie" in this case) come first. These, however, are illegal: ? fn'lineup$(first$="Who", shortstop$="Curly") ! no such param: shortstop$ ? fn'lineup$(first$="Manny", "Mo", "Jack") ! ordered params cannot follow named params ? fn'lineup$(first$="Tiny", second$="Fats", first$="Tiny") ! parameter first$ specified twice ? fn'lineup$(second$="What", third$="Nobody") ! missing mandatory first$ param The last example above deserves clarification. Although traditionally all parameters were optional, it was never possible with ordered parameters to omit one, other than at the trailing end of the parameter list. Consequently, to preserve runtime compatiblity, we don't want to allow that to happen with named parameters either, at least by default. However, by adding default values for one or more parameters in the function/procedure definition, we can effectively instruct the compiler regarding which parameters are mandatory and thereby have it to more of the work of error checking and standardizing function and procedure calls. To accommodate default values, the syntax for declaring a parameter has been enhanced to: {=defvalue} as {:modifier} For example: function fn'lineup$(first$="Who" as s0, second$ as s0, & third$="I don't know" as s0) as s0 With the updated function definition, we can reevaluate how the compiler would treat the example calls: ? fn'lineup$() ! illegal (missing mandatory second$ param) ? fn'lineup$("Who") ! illegal (" " ") ? fn'lineup$("Manny","Moe") ! ok (missing third$ defaults to "I don't know") ? fn'lineup$(spam$,spam$,spam$,spam$) ! ok ? fn'lineup$(first$="Who", second$="What", third$="I don't know") ! ok ? fn'lineup$(second$="Jack") ! ok (first$ defaults to "Who" and third$ to "I don't know") ? fn'lineup$("Eenie", "Meenie", third$="Mo") ! ok Finally, if we want to make our fn'lineup$() function available in a library where it might be compiled with an older version of the compiler, we can use conditional compilation to specify two versions of the function definition - one traditional (ordered params only) and one modern (with named parameters and default values): ++ifdef ABC_NAMED_PARAMS ! if /P (named params supported) function fn'lineup$(first$="Who" as s0, second$ as s0, & third$="I don't know" as s0) as s0 ++else ! traditional version function fn'lineup$(first$ as s0, second$ as s0, third$ as s0) as s0 ++endif fn'lineup$ = first$ + "'s on first, " & + second$ + ",s on second, and " & + third$ + ",s on third." endfunction 4 --- COMPIL.LIT 1.1(126), COMPLP.LIT 1.1(126): update to support /P switch. 5. --- New bit flag for MIAMEX, MX_COMPIL: &h02000000 /P (preprocess for named parameter support) 6. --- Compiler enhancement (compiler edit 653): XCALLS (internal and SBX) may now use named parameters as described above for functions and procedures. Parameter passing to XCALLs is nearly identical to that for procedures and functions, so the implementation details are nearly the same as previously described. The main difference is that since XCALLs do not have definition statements like functions and procedures do, a new statement had been introduced to allow you to define their parameter names and default values: DEFXCALL xcallname{+|,}pname{|alias}{=defval},pname{|alias}{=defval}... DEFXCALL works similarly to FUNCTION and PROCEDURE definition statements, defining the names of the parameters, their order, and (optionally) default values. But there are several subtle differences, noted below: - Unlike functions and procedures, xcall names are not case sensitive, so neither is the DEFXCALL statement. (This applies to the xcallname and the parameter names, but not to the default values.) The following two statements are therefore equivalent: DEFXCALL MSGBOX,MSG,TITLE="Warning",FLAGS defxcall msgbox,msg,title="Warning",flags - Immediately following the xcallname, you can use a "+" instead of a "," to create a definition specific not just to the xcall name but to the combination of the xcall name with a literal string or numeric first parameter. This is particularly useful with some built-in xcalls like AUI and MIAMEX which have completely different syntax and semantics depending on the first parameter. For example: DEFXCALL AUI+AUI_ENVIRONMENT,opcode,guiflags DEFXCALL AUI+AUI_EVENTWAIT,parentid,ctlid,exitcode,opflags,timer DEFXCALL MIAMEX+MX_FSPEC,spec,locpath,ext,flags,ddb,status - You may define a single alias (alternate name) for any of the parameters. This is useful in cases where documentation or usage evolution has resulted in a parameter having more than one common name. For example, to allow the first parameter to AUI_ENVIRONMENT to be called either opcode or opflags, we could define it as: DEFXCALL AUI+AUI_EVIRONMENT,opcode|opflags,guiflags - As with function and procedure definitions, you can define default values for any parameters, and doing so converts all of the other parameters (those without defaults) to mandatory status. However, there are many existing internal xcalls which have a large number of optional parameters (making both named parameters and defaults extremely useful), which may determine semantics based on the number of passed parameters. To better align the declarative capabilities of DEFXCALL with the ways in which existing XCALLs may have been implemented (hidden from view in most cases), another difference is that DEFXCALL supports an option to separate the parameter list into an initial mandatory group and a trailing optional group by enclosing the trailing optional group in {squiggly brackets}. For example: DEFXCALL TEST1,one,two{,three,four,five} Note that the {brackets} cannot be nested. In the above example, we are indicating that the last three parameters are optional, which has these important semantic side-effects: -- it makes the first three parameters truly mandatory (even if no default values are defined) -- for the parameters in the optional section, even those with defaults defined will be ignored unless the caller specifies one or more parameters beyond that one. A few examples will help clarify this: DEFXCALL TEST1,one,two,three,four,five DEFXCALL TEST2,one,two=2,three,four,five DEFXCALL TEST3,one,two=2{,three=3,four,five=5} DEFXCALL TEST4,one,two{,three=3,four=4,five} All four routines (TEST1 thru TEST4) have five defined parameters, but the semantics and requirements are different in each case. TEST1's parameters are all optional, because no defaults were specified, nor were {brackets} used to identify an optional section. TEST2's parameters are all mandatory, because there is at least one default defined, yet no {brackets} to mark the optional parameters. TEST3 has two mandatory parameters (one and two), and three optional parameters. The default specified for parameter two has no effect, since the parameter (being prior to the start of the {optional} parameters, must be explicitly specified by the caller. The caller can specify 2, 3, 4, or 5 parameters (or more), but if parameter five is specified by name, then parameter four must also must also be specified (since it has no default and gaps are not allowed, even within the optional set of parameters). The default value for parameter five has no effect, since the parameters within the {optional} list are only passed to the routine up to the highest numbered parameter that is actually specified in the call. TEST4 is a more logical version of TEST3 in that it eliminates the two default values that had no effect in TEST3 (two=2 and five=5), and adds one that might be useful (four=4). The following call: XCALL TEST4,100,200,FIVE=500 would be considered legal (the two skipped parameters have defined defaults) and would be converted the equivalent of: XCALL TEST4,100,200,3,4,500 WARNING: Because the semantics of the DEFXCALL statement are somewhat tricky, and because this is all quite new, pioneer developers are invited to experiment with it, particularly with their own SBX calls, but should probably delay using it heavily (especially with XCALLs internal to A-Shell) until it has had a bit more field exercise. At the very least, it will make more sense for MicroSabio to release a standard set of DEFXCALL statements for internal/documented XCALLs to avoid divergence in the way these common routines are used by different developers. 7. --- ISAM 1.1 refinement: To avoid needlessly complaining about an invalid number of index levels in some IDX files created by ancient (particularly AMOS) versions of ISMBLD, and value < 3 or > 9 is now treated as 3 (which was originally the only choice). A warning is logged to the ashlog.log file, along with a recommendation that it be rebuilt, but then it goes on to work as a legacy-format IDX file. Previously, A-Shell complained and returned ERF 35 (smashed index) for any invalid value except 255 (which was, until recently, the only legacy/invalid value we had seen in the field). Note that if the file really was corrupt, it will surely generate an ERF 35 in short order anyway, so the only downside to attempting to treat it as a legacy IDX is that you might miss the warning which used to appear on the screen. ============================================================================ A-Shell Release Notes Version 6.1.1372.7 (10 Jan 2014) ============================================================================ 1. --- Fix missing delimiter in control dump CSV header (from adding tabstop in 6.1.1368) 2. --- Fix problem with failure to load the most user/profile specific copy of the settings (i.e. the same ones that are saved by default). Introduced 1371.0 3. --- Fix problems with control centering logic when parent is a static panel instead of a real window or dialog. ============================================================================ A-Shell Release Notes Version 6.1.1372.6 (07 Jan 2014) ============================================================================ 1. --- PCKLST bug fix: headers in simple-multi-column (non-COLDFX) mode were using the first line of data rather than the intended headers. 2. --- APEX bug fix: various options passed in to APEX, such as orientation, were not actually being recognized. (Problem introduced in the big UNICODE shakeup between 1365 and 1370. ============================================================================ A-Shell Release Notes Version 6.1.1372.5 (03 Jan 2014) ============================================================================ 1. --- AUI_CONTROL bug fix: static images with one of the centering options were failing to get re-centered after resizing the window. ============================================================================ A-Shell Release Notes Version 6.1.1372.4 (03 Jan 2014) ============================================================================ 1. --- AUI_CONTROL bug fix: MBF_AUTOGROW controls were not getting resized properly when the window was resized. 2. --- MX_WINSETTINGS refinement: loading a new .ash file no longer triggers a resize operation unless something which affects sizing has changed. 3. --- AUI_CONTROL bug fix: resizing was causing some static images to act as if they had lost the MBF_NODISTORT option. ============================================================================ A-Shell Release Notes Version 6.1.1372.3 (02 Jan 2014) ============================================================================ 1. --- Static text background color bug fix: When dialogs or windows are stacked, in some cases static text controls created with bgc = -2 were picking up a bogus background color from a control in an underlying window. ============================================================================ A-Shell Release Notes Version 6.1.1372.2 (02 Jan 2014) ============================================================================ 1. --- MX_SHELLEX refinement: local mode (clisvr = "S" or "L") now supports the waitflag options and the exitstatus parameter. Previously, these only worked in the normal/default (client) mode where the operation is forwarded to ATE via the AG_SHLEXEC command. Also, both modes now support shell commands that require COM initialization. ============================================================================ A-Shell Release Notes Version 6.1.1372.1 (01 Jan 2014) ============================================================================ 1. --- INPUT statement bug fix: input lines longer than 32K were causing an overflow condition with unpredictable results. ============================================================================ A-Shell Release Notes Version 6.1.1372.0 (27 Dec 2013) ============================================================================ 1. --- INFLD Enhancement: new type code "|&" works like a "smart" version of "&", re-enabling protected mode on exit only if it was previously enabled. (The "&" feature always re-enables protected mode, which was the way it worked historically under AMOS.) 2. --- MX_NOBUF, MX_FLUSHBUF, MX_FLSET bug fix: if the specified file channel was not open, it was failing to update the STATUS parameter. (This would only be a problem if the calling program was re-using a previously-set variable, in which case it might be fooled into thinking that the specified file was open when it was not.) The workaround (to avoid the problem without updating A-Shell) is to just set STATUS=0 before the XCALL MIAMEX,... ============================================================================ A-Shell Release Notes Version 6.1.1371.1 (23 Dec 2013) ============================================================================ 1. --- Eliminate initial window 'flash' when launching A-Shell/Windows (or ATE) with -z switch. ============================================================================ A-Shell Release Notes Version 6.1.1371.0 (20 Dec 2013) ============================================================================ 1. --- New A-Shell/Windows command line switches: -nc removes the caption bar (creating a captionless main window) -nrs removes the resizing border of the main window 2. --- AUI_WINDOW enhancement: new optional parameter winsts returns the min/max/norm status of the window: xcall AUI, AUI_WINDOW, opflag {,lft,top,rgt,btm {,rows,cols {,tst,bsts & {,cid,hg,vg {,monitors {,winsts}}}}}} If specified with one of the query opflags, winsts will return one of: SW_HIDE (0) - window is hidden SW_SHOWNORMAL (1) - window is neither minimized nor maximized SW_SHOWMINIMIZED (2) - window is minimized SW_SHOWMAXIMIZED (3) - window is maximized Example: ! retrieve status of main window xcall AUI, AUI_WINDOW, SW_QUERY, 0,0,0,0, 0,0, 0,0, 0, 0,0,0, winsts switch winsts case SW_HIDE ... 3. --- AUI_CONTROL enhancement: static text controls (without images) can now have context menus attached (with or without the hover/auto-show feature). Use the same syntax as documented in the tooltip parameter for image controls. 4. --- Compiler fix (edit 649) eliminates a window of opportunity for ambiguity between references to top-level structure variables (generally in parameter lists) and dynamic overlays. For certain structures containing &hfffffffe at an offset of 8 from the start of the structure, the runtime variable interpreter was misinterpreting the structure as a dynamic overlay, resulting in the passing of garbage data in place of the structure (at best) or a segmentation fault. The problem stemmed from a historical decision to use a bit in the RUN file variable map descriptor area to indicate structures, which was useful during compilation but never actually used at runtime. Once all the available bits in the variable type word got used up, we decided to "multiplex" that bit with the dynamic overlay bit, mainly in order to avoid a change to RUN hash of existing programs. But at this point, a change in the RUN hash seems less objectionable than the risk of amgiguity, so we're biting the bullet and just doing it. Note: the only known case of the ambiguity causing a problem is in the new INFLD ST_INFCLRX structure when the dbrgb field was set to -2, but the potential for other such amgiguities was wide open. A recompilation is therefore recommended for any program using defined structures. (This recompiled RUN will be free of the potential problem while remaining compatible with all previous versions of the runtime system.) Also note: the 6.1.1371.0 runtime reduces the chance of ambiguity, even without recompiling, by checking for another signature condition. It fixes the problem with ST_INFCLRX, but still leaves the window open a crack, so the recompilation suggest remains the best one. 5. --- ATE bug fix: the session status bar wasn't always being displayed on startup even when specified in the configuration. 6. --- EVENTWAIT refinement: tabbing through a scrollable dialog, putting the focus on a button now fully scrolls the button into view. (Previously this was only working for editable controls.) 7. --- AUI_CONTROL bug fix: resizing the window was sometimes resulting in incompletely redrawn controls, particularly TABX controls (or their descendants). Also there is now somewhat less thrashing during resizing. ============================================================================ A-Shell Release Notes Version 6.1.1370.0 (12 Dec 2013) ============================================================================ *** UNICODE / XTREE / APEX update now considered stable. *** 1. --- ZTXFER.LIT 1.3(106) enhancement: now supports PC to Windows server file transfers using the AG_GETFILEDATA protocol introduced in 6.1.1357 and vastly improved in 6.1.1370.0. PC to server file transfers are now typically 1 MB/sec, without requiring any special servers or ports. For the UNIX server world, it also supports a new /2 switch to invoke the new FTP/SFTP protocol (implemented in ASHNET.DLL 1.6.139) if it is available. 2. --- XCALL GET enhancement. Under Windows, when the 'raw' flag is set for console input, a new high-performance input routine is used that vastly improves input speed. (Mainly of interest with the AG_GETFILEDATA command as implemented in ZTXFER - see above.) 3. --- GDI printing refinement: //TEXTOUT, //TEXTCENTER, and //TEXTRECTANGLE now treat an unmatched leading quote as a literal character. Previously it was stripped. 4. --- Windows memory leak fixed: each update to the system status line was burning a GDI object handle. 5. --- ATSYNC 1.3(117) enhancements: In SBX mode, the normal /L message ("See ...") is eliminated, allowing for totally silent operation. For all other cases, it now reports the total time of the transfer operation (making it easier to see how much faster sync operations are with the /V2 switch.) 6. --- MSGBOX refinement: an intermittent problem with the closure of the dialog triggering the equivalent of a click event (by setting focus on an underlying clickable control) has been eliminated. 7. --- Fix a problem with conversion of files with no extension to native format. ============================================================================ A-Shell Release Notes Version 6.1.1369.1 (09 Dec 2013) *** BETA *** ============================================================================ 1. --- ASHNET.DLL 1.6.139 bug fix: close a resource leak that was causing a handle to be burned up on each sequence of FTP/SFTP transfers. 2. --- ATSYNC refinement: 0-byte files are now transferred just like any other files. Previously they were flagged to be transferred but then skipped by the actual transfer routine. Note: patch is entirely inside ashw32.exe so no update to ATSYNC.LIT needed. ============================================================================ A-Shell Release Notes Version 6.1.1369.0 (08 Dec 2013) *** BETA *** ============================================================================ 1. --- ASHNET.DLL Update: 1.6.138 supports an alternate FTP implementation initially intended to speed up ATSYNC transfers by maintaining a single connection over multiple transfers (instead of connecting/disconnecting on each one). As the new implementation is still a bit experimental, it is only used if requested by a specific switch. Currently the only program that supports that switch is ATSYNC.LIT 1.3(116) - see below. 2. --- ATSYNC.LIT 1.3(116) supports a new /V2 switch which requests the new FTP implementation in ASHNET.DLL 1.6.138. Note that if the switch is specified, it will still use the old (FTPDLX) implementation if the ASHNET.DLL is not version 138+. Preliminary testing suggests that using the /V2 switch can significantly reduce the amount of time it takes to synchronize many files. 3. --- New miame.ini setting, OPTIONS=STR0 causes numeric conversions to string, whether implicit or explicit, via str(x), to retain the leading zero for fractional values between -1 and 1. Normally the leading zero is stripped in all cases. For example, if x=0.5 and y=-0.3, str(x) and str(y) would normally return ".5" and "-.3" respectively, whereas with OPTIONS=STR0 set, the output would be "0.5" and "-0.3". ============================================================================ A-Shell Release Notes Version 6.1.1368.2 (05 Dec 2013) *** BETA *** ============================================================================ 1. --- XTREE bug fix: changing a checkbox cell to a blank cell (by setting the value to " " and re-entering the tree) was in some cases resulting in a numeric digit displaying in the cell instead of the cell being blank. ============================================================================ A-Shell Release Notes Version 6.1.1368.1 (05 Dec 2013) *** BETA *** ============================================================================ 1. --- ATSYNC refinement: differences in the timestamp between the server and PC copy of the file are now ignored if the hash is the same. (This eliminates unnecessary transfers caused by meaningless differences in the clocks between the server and client.) 2. --- ATSYNC 1.3(115) enhancement: A new switch, /NOTIME, may be used to disable any use of the timestamp to decide whether the file needs to be transferred. (This is now a moot point, except when the /NOHASH switch is also used, in which case the determination will be based solely on the file size.) Note that the /NOTIME switch will be ignored for ATE versions prior to 6.1.1368.1. 3. --- COPY.LIT 3.3(138) refinement: Under UNIX, COPY shells out to the cp shell command in order to preserve UNIX file copy behavior (and especially the file timestamps). In some cases, cp may report a non-zero return status suggesting an error, but the file actually copied. (For example, it may not have allowed preservation of the timestamp for some reason.) COPY was reporting such incidences as a failed copy; it now double-checks to see if the file was copied and if so, counts it accordingly. It also checks the timestamp and if not matching, reports the discrepancy. ============================================================================ A-Shell Release Notes Version 6.1.1368.0 (04 Dec 2013) *** BETA *** ============================================================================ 1. --- AUI_CONTROL enhancement: support vertical scrolling in dialogs by setting the WS_VSCROLL (&h00200000) flag in the winstyle parameter when the dialog is created. The scroll bar is initially disabled, but is automatically enabled and configured as fields are added to the dialog that extend beyond the bottom of the visible dialog. Users can scroll the dialogs using the scroll bar. AUI_EVENTWAIT will also auto-scroll the dialog as needed to bring the newly focused control into view. 2. --- AUI_EVENTWAIT enhancement: clickable static text controls are now highlighted to indicate when they have the focus. The default hightlight effect is a dotted line around the perimeter of the control. As an alternative, you can specify the new flag EVW_ULFOCUS (&h00800000), which changes the highlight effect to the combination of bold+underline. Note: PNG and GDIPLUS images are excluded from this treatment on the theory that they are amenable to a more sophisticated highlighting approach. 3. --- XTREE bug fix: using XTF2_ANSEQDATA in a non-editable dialog was resulting in the first few bytes of the answer array being ovewritten on return. 4. --- XTREE bug fix: using XTF2_ANSEQDATA with physcally different ansary and data arrays was resulting in a failure of the ansary to override the data aray on XTROP_CREATE or XTROP_REPLACE. 5. --- AUI_CONTROL bug fix: close loophole allowing "escaped" symbols, such as %22 for a double quote, to appear in the control instead of the un-escaped character. 6. --- AUI_CONTROL enhancement: two new opcodes, CTLOP_TABSET (13) and CTLOP_TABCLR (14), for setting and clearing the MBF_TABSTOP property of a control: xcall AUI, AUI_CONTROL, CTLOP_TABSET, ctlid ! set MBF_TABSTOP for ctlid xcall AUI, AUI_CONTROL, CTLOP_TABCLR, ctlid ! clr MBF_TABSTOP for ctlid AUI_EVENTWAIT should skip over controls that do not have the MBF_TABSTOP property when using the keyboard navigation controls. Note: the rules for auto-initializing the MBF_TABSTOP property when creating new controls are a big vague; the new opcodes allow you to be explicit. Also note: the control dump now contains a column making it more obvious which controls have the tabstop property (which show up with a numeric value of the control # offset by 5000). Currently there is no way to change this tabe order (which generally matches the order in which the controls were created), but it may be added in a subsequent update. 7. --- AUI_CONTROL bug fix: MBF_HCENTER with text buttons (where it is theoretically redundant) was resulting in right-justification. 8. --- MBF_TOOLBAR enhancement: it is now possible to split the top and bottom toolbars into two separate toolbars so as to left justify one set of buttons and right-justify the other. (Within any single toolbar, all of the buttons get justified as a group.) To accomplish this, set the ecol parameter to the desired ending column (main window column grid units) for the left toolbar, and ecol to the starting column for the right toolbar. All the other coordinates should remain zero (as they do for the normal toolbar configuration). Note that to avoid a seam in the middle where the two toolbars meet, you may want to set the TBSTYLE_FLAT option in the dwstyle parameter. 9. --- AUI_CONTROL enhancement: it is now possible to use negative erow and ecol coordinates for a child control to position the bottom/right edge relative to the client area of the parent. This is particularly useful with TAB controls, where the usable panel area is reduced by the size of the labels, which may be hard to predict in advance. For example, to position an MBF2_DLGNOCAP panel over nearly the entire client area of a parent tab control, leaving a 5 pixel border between the edge of the MBF2_DLGNOCAP panel and the parent TABX panel, you could set the four coordinates to 5, 5, -5, -5 (and set the MBF2_PIXCOORDS flag). ============================================================================ A-Shell Release Notes Version 6.1.1367.2 (02 Dec 2013) *** BETA *** ============================================================================ 1. --- AUI_CONTROL refinement: logic for defaulting background color of nested controls (when requested color < 0) slightly improved to correct some situations of static control backgrounds not matching the parent when the parent itself is inherenting its background color from another parent. 2. --- VUE refinement (edit 356): turn cursor on when entering editing mode. (In some cases it was possible to end up with an invisible cursor, making editing difficult.) ============================================================================ A-Shell Release Notes Version 6.1.1367.1 (30 Nov 2013) *** BETA *** ============================================================================ 1. --- ATE refinement: AG_PLAYSOUND now supports the standard image file search path and %env% vars. 2. --- XTREE bug fix: various problems related to checkboxes. In particular, it is now possible (as expected) to remove or reinstate a checkbox by changing the corresponding answer array cell to a " " (blank) or a numeric value when re-entering. ============================================================================ A-Shell Release Notes Version 6.1.1367.0 (23 Nov 2013) *** BETA *** ============================================================================ 1. --- ATE enhancement: new AG_PLAYSOUND (105) command to force ATE client to play a sound file: ? TAB(-10,AG_PLAYSOUND);fspec,flags{rtnsts};chr(127) fspec and flags are the same as for the existing MX_PLAYSOUND. rtnsts may be set to non-zero if you want to get the return status in the keyboard buffer. Otherwise (if 0 or omitted), there is no response. Note that fspec must be a PC native filespec. 2. --- ATE refinement: MX_PLAYSOUND now automatically redirects to the ATE client. 3. --- AUI_CONTROL bug fix: replacing a control using CTLOP_ADD was in some cases failing to update the existing tooltip (if there was already an instance of the same control). 4. --- INFLD GUI refinement: When displaying a field using a static text control instead of an edit control (i.e. when |G specified but not |E or ||C), the static control now has the same wrap characteristics as the edit control. Previously, if the font was small enough and the amount of text sufficient, it would have wrapped in the display (even though it would not have wrapped during editing). 5. --- XTREE bug fix: ScrollMode=Tree wasn't working as documented for the non- editable trees. 6. --- AUI bug fix: clicking on an MBF2_GDIPLUS (or PNG) icon control which had an associated hover menu was causing the control to temporarily disappear. ============================================================================ A-Shell Release Notes Version 6.1.1366.0 (13 Nov 2013) *** BETA *** ============================================================================ 1. --- AG_FTPSYNC protocol enhancement: now supports the ability to create a batch of transfers consisting of an arbitrary list of host files, each with a default target PC location, which can be overridden at the file level. This protocol is normally only use internally by A-Shell utilities such as ATSYNC.LIT, which has been upgraded to take advantage of it. 2. --- ATSYNC.LIT 1.3(114) enhancement: new /F{ILES} switch allows you to replace the HostDir parameter with a file containing the list of files to transfer: .ATSYNC HostDir{,PCdir}/FILES The layout of the HostDir file should be a series of lines in the following format: hostfile{,pcfile} Each hostfile specification may be in either AMOS or native format and may be partially or fully qualified. The pcfile specification can be omitted, in which case the files will be transferred to the directory specified by the PCdir parameter on the ATSYNC command line. To override that, provide a fully qualified PC filespec in the pcfile parameter. You may insert a ";" at the start of the line to comment it out. ATE will create a log file called %ATECACHE%\ateftp.log for each file transfer, using the format: status,hostfile,pcfile Where status will be 0 for a successful transfer, else an error code. Hostfile and pcfile will be the fully qualified host and PC file specifications for the transfer. If you specify the ATSYNC /L switch, the ateftp.log file contents will be appended to the list file. Otherwise, you can retrieve it manually using AG_FTP or some other method. ============================================================================ A-Shell Release Notes Version 6.1.1365.4 (08 Nov 2013) *** BETA *** ============================================================================ 1. --- XTREE bug fix: the combination of List=... and Fold=Upper was causing it to crash when entering the affected cells. ============================================================================ A-Shell Release Notes Version 6.1.1365.3 (07 Nov 2013) *** BETA *** ============================================================================ 1. --- XTREE bug fix: Numeric masks containing the Euro symbol were causing the corresponding field to be blank. 2. --- XTREE bug fix: When more than one field had a date format mask, all but the last one were getting corrupted. ============================================================================ A-Shell Release Notes Version 6.1.1365.2 (06 Nov 2013) *** BETA *** ============================================================================ 1. --- XTREE bug fix: Advanced Coldef Option ParentID= was broken in 1365.0 ============================================================================ A-Shell Release Notes Version 6.1.1365.1 (05 Nov 2013) *** BETA *** ============================================================================ 1. --- XTREE UTF8 enhancement: Two new cformat codes allow you to override the default character set at the column level: "1" interprets the column data as ANSI/Latin1 "8" interprets the column data as UTF8 The overall default character set for the tree is ANSI/Latin1, unless the XTF2_UTF8 flag is set, in which case it is UTF8. Note: the entire coldef string is interpreted according to the default character set for the tree, so you cannot mix UTF8 and Latin1-encoded titles even though the corresponding columns are individually set with "1" or "8". Two new sample programs, XUTF8B and XUTF8C illustrate both cases of mixed UTF8 and Latin1 columns. 2. --- XTREE bug fix: columns with formatting masks were failing to load properly (introduced in 1365.0). ============================================================================ A-Shell Release Notes Version 6.1.1365.0 (04 Nov 2013) *** BETA *** ============================================================================ 1. --- New GDI printing directive supports printing UTF8-encoded printfiles: //SETOPTION,UTF8 When specified, the remainder of the file is considered to be in UTF8 encoding (which is compatible with 7 bit ASCII characters (0-127), but interprets bytes with the 8th bit set as a lead-in to a multi-byte sequence supporting the entire range of UNICODE code points). When printing files which start with the special 3 byte sequence EF EB BF, UTF8 mode is activated automatically. (This is a semi-standard protocol for identifying UTF8-encoded text files, favored by Microsoft.) 2. --- DLL replacements: SftTree_IX86_A_70.dll replaced with SftTree_IX_U_70.dll SftPrintPreview_iX86_A_20.dll replaced with SftPrintPreview_IX_U_20.dll The new _U_ versions are the UNICODE versions. The old _A_ (ANSI) versions are no longer used but may be left in the bin directory to facilitate running older versions of ashw32.exe. 3. --- XTREE enhancement: support for UTF8-encoded characters. You may now display and edit non-Latin1 characters (Cyrillic, Greek, Korean, etc.) in XTREE by specifying the new XTF2_UTF8 (&h00200000) flag and then using the UTF8 encoding for special characters in the data array, file, and/or ansary. If you don't specify the XTF2_UTF8 flag, XTREE will assume that any characters > chr(128) are Latin1-encoded (as it has in the past). Note: the column widths specified in the COLDEF parameter remain in units of 8-bit bytes, so if you expect a column to contain UTF8-multi-byte-encoded characters, make sure to expand the column width accordingly. Although this change is not intended (or expected) to have any deleterious effect on existing programs, it did require considerable replumbing of the XTREE and other A-Shell internal code and thus all developers are advised to run it in-house for awhile before releasing it to end users. See new SOSLIB sample program XUTF8A.BP. ============================================================================ A-Shell Release Notes Version 6.1.1364.3 (17 Oct 2013) ============================================================================ 1. --- XPUTARG bug fix: specifying an I,4 variable in an XPUTARG statement was resulting in a corrupted value being passed when the actual value was greater than 16,777,215 (i.e. required more than 3 bytes). (Same patch as 6.0.1271.0) ============================================================================ A-Shell Release Notes Version 6.1.1364.2 (15 Oct 2013) ============================================================================ 1. --- TABX control refinement: a new cstate flag MBST_NOREDRAW (&h04000000) may be specified in a CTLOP_CHG operation to prevent the normal refresh/redraw of the client area of the TABX control. This is mainly useful for eliminating "flicker" when enabling/disabling panels other than the current one (since those operations do not really require a full refresh). ============================================================================ A-Shell Release Notes Version 6.1.1364.1 (14 Oct 2013) ============================================================================ 1. --- GUI bug fix: controls with clickstring VK_TAB were failing to generate the expected result (i.e. EXITCODE 7). ============================================================================ A-Shell Release Notes Version 6.1.1364.0 (14 Oct 2013) ============================================================================ 1. --- XTREE enhancement: the PopupMenu options $CBSET, $CBRST, and $CBUNDO now return EXITCODE=-48 and XTR'XVALIDATE=3 when validation (conditional or unconditional) is active for the column. $CBSETDEP and $CBRSTDEP return XTR'XVALIDATE=4. 2. --- ATE bug fix: TAB(-10,AG_RELEASEKBD);"2";chr(127); was clearing the wrong bits in the keyboard status register, leaving the keyboard in a strange state. 3. --- ATE refinement: when the keyboard is locked into local mode (using AG_HOLDKBD with argument "2"), ^C no longer clears the local hold and is simply queued up as would be the case for other keyboard characters, either to be consumed by a local input operation or eventually forwarded to the host when the hold is removed. ============================================================================ A-Shell Release Notes Version 6.1.1363.2 (12 Oct 2013) ============================================================================ 1. --- XTREE refinement: setting COLDEF="" when re-entering an existing tree will now re-use the previously-specified COLDEF definition. ============================================================================ A-Shell Release Notes Version 6.1.1363.1 (08 Oct 2013) ============================================================================ 1. --- Compiler refinement (edit 647): when a function or procedure def occurs (illegally) within an extended IF or FOR statement, the compiler now reports the location of the unterminated IF or FOR statement. (Otherwise, it may have occurs countless lines or even modules previously, since there otherwise no limit to the size of the body of a FOR or IF statement, making it very difficult to find the problem.) ============================================================================ A-Shell Release Notes Version 6.1.1363.0 (08 Oct 2013) ============================================================================ 1. --- Stack tracing bug fix: When stack tracing was active (SET TRACE XDEBUG ON and SET DEBUG), if the call stack needed to be expanded (typically an indicator of a program out of control), and the expansion required moving the stack, the result was an A-Shell crash (rather than an eventual stack overflow error). 2. --- AUI_CONTROL refinement: controls without text (such as icons with no labels) can now still have an accelerator key by inserting it at the start of the tooltip string. For example, to use the accelerator key "H": TOOLTIP$ = "&H Show History" or: TOOLTIP$ = ">&H Show History\" Note that the accelerator key will not display in the tooltip, so you may want to include some kind of textual hint, i.e. TOOLTIP$ = "&H Show History (Alt-H)" 3. --- AUI_CONTROL enhancement: hover/context menus (associated with image controls) may now contain submenus. To indicate the start of a submenu, set the command string for the parent item to "[SUB]". To indicate the end of a submenu, define a dummy menu item whose text is "[ENDSUB]" (the command will be ignored). For example, to define a two level hover/context menu similar to the following: Item 1 Item 2 > Sub-Item 1a Sub-Item 1b Item 3 Item 4 > Sub-Item 2a Sub-Item 2b the definition string (in the tooltip parameter) should be coded something like: TOOLTIP$ = ">tooltip string\" & + "Item 1,VK_xF101;Item 2,[SUB];" & + "Sub-Item 1a,VK_xF201;Sub-Item 1b,VK_xF202;[ENDSUB],;" & + "Item 3,VK_xF103;Item 4,[SUB];" & + "Sub-Item 2a,VK_xF301;Sub-Item 2b,VK_xF302;[ENDSUB],;" Sub menus may be nested up to nine levels deep, and a single hover/context menu may contain up to 99 total sub menus. 4. --- AUI_EVENTWAIT refinement: use of the eventwait timer was intermittently interfering with other timer-based events (such as the automatic display of a hover menu). ============================================================================ A-Shell Release Notes Version 6.1.1362.9 (07 Oct 2013) ============================================================================ 1. --- AUI_CONTROL refinement: when a modal dialog is removed, the logic for establishing the new active modal dialog (if any) is now more resistant to cross-generational and incestuous relationships between the dialogs. For example, previously, if you created a modal dialog and specified it's grandparent as the parent, then on removal of the dialog, the grandparent would have become the active modal dialog, instead of the dialog which was previously the active modal dialog. (The result would have been similar to a lockup since the modal focus would have been on the wrong dialog.) 2. --- XTREE bug fix: modal trees (those that get deleted as soon as you make a selection) were not returning the correct selection. (Problem was introduced in 1362.8.) 3. --- XTREE refinement: When entering a tree in response to a click event, if the opcode is set to XTROP_RESELECT and the XTF_NODREDRAW flag is set and the XTR'TOPINDEX field is set to 0, the scroll position will now be preserved, even if the selected item is scrolled out of view. This is mainly a benefit for the case where you use the scroll bar on an inactive tree. Previously, after dragging the scroll bar down, re-entering the tree would have reset it to the top, which was irritating or confusing to the user. ============================================================================ A-Shell Release Notes Version 6.1.1362.8 (05 Oct 2013) ============================================================================ 1. --- XTREE bug fix: when multiple trees are present at the same time, under some situations, clicking on a tree would send the wrong tree's activation click string, or possibly no click string at all. ============================================================================ A-Shell Release Notes Version 6.1.1362.7 (02 Oct 2013) ============================================================================ 1. --- XTREE bug fix: in trees with fixed row height, the row height was not being recalculated after an initial display with a private-to-user scale factor, leading to the possibility of rows that were unnecessarily tall or too short so as to clip the character display. ============================================================================ A-Shell Release Notes Version 6.1.1362.6 (12 Sep 2013) ============================================================================ 1. --- AUI_CONTROL bug fix: newly created image controls weren't auto-deleting conflicting image controls. ============================================================================ A-Shell Release Notes Version 6.1.1362.5 (12 Sep 2013) ============================================================================ 1. --- INFLD bug fix: INFLD was crashing on certain permuations of read-only fields when no INFCLR parameter passed. (Problem was introduced in 1360.2 or after.) ============================================================================ A-Shell Release Notes Version 6.1.1362.4 (11 Sep 2013) ============================================================================ 1. --- AUI_CONTROL bug fix: custom-drawn static controls (MBF_CENTER, MBF2_CUSTDRAW, MBF2_ROUNDRECT, MBF2_ELLIPSE) weren't respecting transparency, resulting in a solid black background in some cases. (Problem introduced since 1358.4.) 2. --- Big-endian compiler bug fix (edit 646) - sizes of auto-mapped variables shown in the LSX file were byte-swapped (i.e. wacko) on big-ending (AIX) machines. ============================================================================ A-Shell Release Notes Version 6.1.1362.3 (05 Sep 2013) ============================================================================ 1. --- INFLD bug fix: close a loophole which allowed an inactive, read-only, select-only combobox value to be changed via the drop-down button. 2. --- ISMBLD.LIT/SBX 2.1(138) bug fix: when using the SBX interface to build a file on another disk, if the IDADEV parameter was empty, it was erroneously putting the IDA on the current logged-in disk rather than the target disk. (The LIT and SBX are identical files, but the problem only affected the XCALL interface.) 3. --- PRTXLS.SBX 1.0(156) refinement: the 'original' worksheet is now 'protected' against changes. ============================================================================ A-Shell Release Notes Version 6.1.1362.2 (01 Sep 2013) ============================================================================ 1. --- AUI_CONTROL refinement: for static controls in the main window, if BGC and BGC are 0, or BGC = -2, treat BGC as RGB_TRANSPARENT (which avoids a timing problem with the active transparency logic at paint time possibly picking up a different transient screen background color if the application is rapidly changing the screen background color while painting is going on). ============================================================================ A-Shell Release Notes Version 6.1.1362.1 (01 Sep 2013) ============================================================================ 1. --- XTREE refinement: the XTF_ENTESC flag (ENTER exits tree when on last row now considers the TotalLines, i.e. treats the last row as the one before the totals start.) Also, close loophole where the XTF_TOTALS flag wasn't ensuring that the TotalLines was at least 1. ============================================================================ A-Shell Release Notes Version 6.1.1362.0 (31 Aug 2013) ============================================================================ 1. --- AUI_IMAGE enhancement: new opcode IMGOP_PAGEINFO (12) returns the number of pages in a multipage TIF file: xcall AUI, AUI_IMAGE, IMGOP_PAGEINFO, handle, status, filename, pages where: handle is ignored (here just for uniformity with other opcodes) status (F,6) [out] returns status (0 for success) filename (str) [in] file to examine (as for opcode 1) pages (num) [out] returns the number of pages in the file. 0 indicates that the number is unknown (or more likely, the file does not support multiple pages) Note: for ATE, both server and client must be at least 6.1.1362.0 to support this feature. 2. --- AUI_IMAGE enhancement: IMGOP_LOAD (1) supports optional parameter to specify page number: xcall AUI, AUI_IMAGE, IMGOP_LOAD, handle, status, filename {,pageno} where pageno (num) [in] may specify the page number (of a multi-page TIF) to display. The first page is considered 1. (0 is also treated as 1.) Note: for ATE, both server and client must be at least 6.1.1362.0 to support this feature. Also note that since each page could potentially have a different configuration, in order to retrieve information on the page (with IMGOP_INFO), first load the page using IMGOP_LOAD. 3. --- AUI_IMAGE enhancement: IMGOP_LOADDISP (4) supports optional parameter to specify page number: xcall AUI, AUI_IMAGE, IMGOP_LOADDISP, handle, status, srow, scol, & erow, ecol, flags, filename {,pageno} The pageno parameter is as for IMGOP_LOAD (see above). Note: for ATE, both server and client must be at least 6.1.1362.0 to support this feature. 4. --- GDI printing enhancement: //IMAGE directive now supports an optional page number for selecting the page within a multipage TIF file: //IMAGE, imagespec, left, top, right, bottom {,flags, borderwidth, imagespec2, rotation, pageno} As with the AUI_IMAGE functions above, the pageno parameter is optional; first page is considered 1 (but 0 or nothing is treated the same as 1). Note that to use APEX as a multipage TIF image viewer, you would need to first use the AUI_IMAGE IMGOP_PAGEINFO operation (see above) to determine the number of pages, then generate a series of //IMAGE directives, one for each page (probably separated by page breaks). ============================================================================ A-Shell Release Notes Version 6.1.1361.1 (30 Aug 2013) ============================================================================ 1. --- XTREE bug fix: self-service combos fixed (broken in 1358.1-2) 2. --- INFLD refinement: Passing V param as string "" now treated like "1", i.e. main window with no x2 adjustement. (This makes it easier to just pass a standard alphanumeric parent control id without needing special logic for the main window case.) 3. --- INFLD bug fix: ||S (select only combos) were sometimes giving spurious "invalid selection" errors when switching from an initial choice to one a longer one. 4. --- Click handling bug fix: Fix problem where clicks on controls within modeless dialogs were in some cases being ignored if there was also a modal dialog active. (Such clicks should only be ignored if the modal dialog is a child of the clicked-in modeless dialog.) Problem introduced in 6.1.1356.3. ============================================================================ A-Shell Release Notes Version 6.1.1361.0 (23 Aug 2013) ============================================================================ 1. --- AUI_CONTROL MBF_TOOLBAR new feature: you may now center or right justify the buttons in a horizontal toolbar control by adding the MBF_RTJUST or MBF_HCENTER flags when creating it. 2. --- AUI_CONTROL MBF_TABX enhancement: The BGC parameter now determines the tab panel background color if no labels are defined. This makes the TABX panel with no labels a more general container alternative to a static frame or captionless dialog. 3. --- AUI_CONTROL MBF_TABX enhancement: Individual labels may now be hidden using the new hidden=1 labeldef attribute. Hiding a label is a possibly useful alternative to disabling it, while still allowing the corresponding panel to be selected programmatically. 4. --- AUI_CONTROL MBF_TABX refinement: label-less TABX controls can now be stacked in the same way that captionless dialogs can, although in this case the upper left corners must be the same. (Otherwise, controls on lower panels may bleed through to the top.) This dubious-sounding technique could be useful in a case where separate modules or even programs are sharing a display space but don't know anything about each other, making it difficult to share a single TAB control.) Note that each of the stacked TABX controls must have the same parent and must specify the MBF2_NOAUTOPARENT flag (just as you would if stacking MBF2_DLGNOCAP dialogs). 5. --- ISMDMP.LIT 2.0(142) now warns when the dump-to-file operation terminates for an unexpected reason. It also warns about invalid/inconsistent IDX levels (generally arising from much older files) and treats them like the standard 3 level, 512 byte IDX block so they can be successfully dumped and rebuilt. ============================================================================ A-Shell Release Notes Version 6.1.1360.4 (21 Aug 2013) ============================================================================ 1. --- INFLD/AUI_CONTROL refinement: disabled edit controls are now handled by the default Windows display logic (typically a dark gray on light gray effect). Previously disabled edit controls were handled like non-disabled edit controls if the ST_INFCLRX structure was used to override the edit control display color (which was confusing because it obscured the distinction between enabled and disabled controls). ============================================================================ A-Shell Release Notes Version 6.1.1360.3 (21 Aug 2013) ============================================================================ 1. --- XTREE bug fix: The EnterGoto clause (when jumping to the next row) was interfering with the XTF_ENTESC flag (which should cause ENTER from the last editable field of the last row to exit). 2. --- XTREE refinement: XTF_ENTESC now exits from the last cell as expected, even when the XTF_NOZEROEX flag is set. ============================================================================ A-Shell Release Notes Version 6.1.1360.2 (21 Aug 2013) ============================================================================ 1. --- INFLD enhancement: new structure ST_INFCLRX (defined in INFLD.SDF) may be used in place of the INFCLR parameter to define arbitrary foreground and background (RGB) colors that will be used by INFLD when displaying (and optionally when editing) the field. The structure format is as follows: defstruct ST_INFCLRX map2 sig,s,2 ! must be set to "x1" to activate map2 flags,b,2 ! INFCLRXF_EDTCLR (=1) to use d?rgb for edit also map2 dfrgb,b,4 ! display foreground map2 dbrgb,b,4 ! display background endstruct Notes: - The sig member must be set to "x1" or the structure will be ignored. (It allows A-Shell to distinguish between the ST_INFCLRX structure and the old INFCLR structure, which is still supported.) You may set it to "" if you are passing the new structure but want to continue to use the default color logic. - The d?rgb colors are used when INFLD displays the field (either after or instead of editing), and also when "editing" read-only fields. In addition, they will be used for editing other field types if the flags member is set to INFCLRXF_EDTCLR (1). - To override only the background or only the foreground color, set the other color field to -2. - In the ATE environment, both server and client sides must be updated to 6.1.1360.2+ for this to work. Otherwise it will revert to the old behavior (using default colors). - The new structure is intended for the GUI environment; for text mode programs, you should stick with the old INFCLR structure. 2. --- Compiler bug fix (edit 644): An ++IF (or ++ELSEIF ) clause followed by a CASE -### statement was leading to a spurious syntax error. 3. --- Compiler bug fix (edit 645): A ++INCLUDE statement whose filespec was followed by some spaces and then a ":" was leading to an illegal syntax error in the run program. ============================================================================ A-Shell Release Notes Version 6.1.1359.6 (14 Aug 2013) ============================================================================ 1. --- Further adjustment to INFLD read-only mode for combo boxes. 2. --- Update internal doc 'help' links. ============================================================================ A-Shell Release Notes Version 6.1.1359.5 (13 Aug 2013) ============================================================================ 1. --- INFLD GUI refinement: read-only mode (TYPE |r) now applies to date and time pickers, up/down controls, and combo boxes. Previously it only worked for normal edit controls. ============================================================================ A-Shell Release Notes Version 6.1.1359.4 (13 Aug 2013) ============================================================================ 1. --- XTREE cell editing bug fix: exiting from a cell with both validation and a context menu exitcode was returning exitcode -7 (instead of the context menu exitcode). Problem was introduced in 1359.2. ============================================================================ A-Shell Release Notes Version 6.1.1359.3 (12 Aug 2013) ============================================================================ 1. --- INFLD/GUI bug fix: pixel coordinates (IMXF_PIXCOORDS) were sometimes being mistaken for milli-grid units in local A-Shell/Windows mode. 2. --- TABX control cleanup fix: deleting a TABX control was failing to automatically delete internal copies of controls on saved panels. (The problem only occurred when deleting the TABX control explicitly with CTLOP_DEL, rather than implicitly with TAB(-1,0), and had no obvious symptom, other than mysterious "zombie" controls showing up in the control dump.) ============================================================================ A-Shell Release Notes Version 6.1.1359.2 (09 Aug 2013) ============================================================================ 1. --- XTREE cell-editing type-ahead refinement: characters keyboard in the interval between exiting one cell (and returning to the application for validation) and entering the next are now reprocessed in the expected order. (Previously it was likely that a character keyboarded just after entering the new cell would be processed prior to the typeahead.) 2. --- XTREE cell-editing fix: left and right arrow keys now work as expected when using Infdef=2 (exit on left arrow from left edge of field), Infdef=L (exit on right arrow from right edge of field), and Infdef=|L (exit on right arrow from anywhere in field). Note that these arrow navigation commands which are sensitive to the position of the cursor within the field are not Windows-standard and therefore not especially recommended, but are (grudgingly) supported for the indulgence of users unable to give up their old text-mode INFLD capabilities. The normal (and preferred) keyboard commands to move to the next or previous fields are TAB and SHIFT-TAB, respectively. ============================================================================ A-Shell Release Notes Version 6.1.1359.1 (08 Aug 2013) ============================================================================ 1. --- TABX control painting bug fix - the reinstatement of support for AUI_IMAGE images in dialogs in 1357.1 was causing painting problem with TABX controls. ============================================================================ A-Shell Release Notes Version 6.1.1359.0 (06 Aug 2013) ============================================================================ 1. --- Toolbar enhancement: new button attributes to improve rendering of disabled and hot images: ImgDis={,} ImgHot={,} The rop parameter (short for Rendering OPtion) determines the algorithm used when automatically rendering the button images in the disabled (gray) or hot (highlighted) states. Set rop to 0 (or omit the clause entirely) for the default effect appied by Windows, or set it to 1 for an alternate effect applied by A-Shell. The optional suffix clause may be used to specify separate images for the disabled and/or hot version of each button. A-Shell will look for image files matching the base image, with the specified suffix. For example: Img=clickme.png~ImgDis=0,_d In the above case, the file clickme.png will supply the normal image. A-Shell will look for clickme_d.png for an alternate image to use when the button is in the disabled state. If the clickme_d.png file is not present, the disabled version will use the same base image as the enabled version, with the standard Windows disabled/gray effect. Note: rop option 1 requires GDIPlus, which is activated automatically for 32 bpp images (see toolbarattribute ImgSiz=w,h,bpp). Otherwise you must explicitly specify the MBF2_GDIPLUS option in the AUI_CONTROL ctype2 parameter when creating the toolbar. 2. --- Toolbar change: bottom toolbar is now positioned above the bottom status and session status lines (if present). 3. --- New AUI_EVENTWAIT option: EVW_ENTER (&h00400000) causes the ENTER key to return exitcode=33, instead of acting like a click on the currently focused control. This might be useful to implement a default action that was independent of the currently-focused button. Note that you can identify the currently-focused button from the returned ctlid parameter. 4. --- ATSYNC 1.2(112) now works both as a LIT and as an XCALL (just copy the LIT to SBX). The XCALL syntax consists of just one parameter containing the command line otherwise passed to the LIT, i.e. CMD$ = "MYICONS:,%ATE%\myicons /P/L" xcall ATSYNC, CMD$ to retrieve the exit status, you can call it via XFUNC, i.e.: STATUS = XFUNC("ATSYNC", CMD$) STATUS values: 0) OK 1-200) Basic error <0) internal errors in protocol 30000+) FTPDLX error codes Note that if you'd like to customize the display, contact us for the source code. ============================================================================ A-Shell Release Notes Version 6.1.1358.4 (05 Aug 2013) ============================================================================ 1. --- XTEXT bug fix: XTEXT control was removing an existing control with the same upper left coordinate (which is correct) even when the XTF_POPUP flag as set (in which case it should float about the other controls and therefore not conflict with any requiring deletion). 2. --- INFLD checkbox bug fix: checkboxes with non-standard colored backgrounds were reverting to the standard gray background after INFLD editing/redisplay. ============================================================================ A-Shell Release Notes Version 6.1.1358.3 (04 Aug 2013) ============================================================================ 1. --- ATSD refinement: generation of unique condev IDs now more robust in non-ATE environments where the server is unable to identify the client workstation ID. Previously, it was possible (although not likely) that two sessions launched simultaneously in such an environment might end up with the same ID (based on the ATSD user name). 2. --- XTREE bug fix: shifted-function key exitcodes were not being shifted by 16 in some cases (causing, say SHIFT-F# to return the same exitcode as F#). ============================================================================ A-Shell Release Notes Version 6.1.1358.2 (04 Aug 2013) ============================================================================ 1. --- XTREE bug fix: cell validation wasn't always taking place when navigating with the keyboard (rather than the mouse). Problem introduced in 1350.3. 2. --- XTREE bug fix: FastMax option wasn't working in combos when the field started out blank?? ============================================================================ A-Shell Release Notes Version 6.1.1358.1 (31 Jul 2013) ============================================================================ 1. --- Compiler bug fix (643): fix problems with nested ++IF clauses and with ++IF clauses containing more than one ++ELIF clause. 2. --- AUI_CONTROL bug fix: resizing a static control with the MBF2_CUSTDRAW or centering options was not always clearing the background (resulting in fragments of the previous display of the control in a different size). 3. --- XTREE bug fix: After resizing a dialog containing a tree, in some cases a subsequent re-entry (XTROP_RESELECT) with the XTMF_INTHEIGHT flag (in XTR'MISCFLAGS) set was resulting in the tree height being resized based on earlier size of the dialog). 4. --- GDI printing memory handle leak: Use of //TEXTCENTER or //SETOPTION,EMBEDDED-ENTITY-REFERENCES was resulting in the loss of a memory handle for each print request. (Eventually this could have led to an out-of-memory-handles condition, after a couple hundred print requests.) ============================================================================ A-Shell Release Notes Version 6.1.1358.0 (30 Jul 2013) ============================================================================ 1. --- Compiler enhancement (642): new variations of ++INCLUDE : ++INCLUDE'IF'EXISTS ++INCLUDE'ONCE'IF'EXISTS As the name implies, these operate just like ++INCLUDE and ++INCLUDE'ONCE except that if the file is not found in the normal search path, it is just skipped. 2. --- Toolbar enhancement: background transparency is now automatic for all image formats. (Previously it only worked with PNG ARGB images.) To force the background to remain opaque, you can add the new btndef (button definition) clause: opaque=1 e.g. tbdef$ += "img=clickme.bmp~opaque=1~lbl=Click me~" ... ============================================================================ A-Shell Release Notes Version 6.1.1357.1 (26 Jul 2013) ============================================================================ 1. --- AUI_IMAGE bug fix: was failing to actually display images in dialogs. (AUI_CONTROL images were not affected.) Problem introduced in 6.1.1321.4 (Nov 2012). 2. --- Compiler bug fix (edit 641): ++ELIF wasn't working in the standalone version of the compiler. 3. --- TABX bug fix: After activating a different tab panel, neither scrolling of tab labels nor resizing of the tab control was working. 4. --- Tracing refinement: XCALL parameter handler now logs a warning when the dynamic memory pool containing one of the parameters is moved as a result of updating the parameter. (This can lead to corruption during the update of remaining dynamic parameters in the same XCALL. Only prevention for problem is to pre-size the dynamic output parameters if more than one.) ============================================================================ A-Shell Release Notes Version 6.1.1357.0 (22 Jul 2013) ============================================================================ 1. --- XTREE enhancement: context menus (defined with PopupMenu=) may now specify icons, using the same syntax as for AUI_MENU, i.e., by prepending an image specification clause enclosed in vertical bars to the menu text string, i.e. PopupMenu={|imgspec{=size}|}text,cmd; ... For example: PopupMenu= "|refresh::ashico1|refresh data,VK_xF502;" & + "|delete.png=16|delete item,VK_xF503;" ... As with AUI_MENU, when no {=size} clause is present, the system default menu icon size will be used (typically 16). Older versions of Windows may also limit the size to 16x16, while newer versions allow 24x24, 32x23 and beyond. 2. --- B64DEC.SBR bug fix: when decoding, the output size was always being rounded up to the next multiple of 3, with null byte padding. This generally had no effect, but for binary data, the decoded data often had one or two extra null bytes appended to the end. 3. --- New file transfer capability for the ATE/ATSD environment (where client-to server transfers are otherwise inconvenient due to the typical lack of an FTP service): xcall MIAMEX, MX_ATEFILEXFR (=183), hostfile, pcfile, status Providing that both the server and ATE client at least 6.1.1357, uses the keyboard channel to send the raw data from the client to the server, independent of routers, firewalls, etc. The status parameter returns the number of bytes output to hostfile. Negative numbers constitute system error codes, or one of these: -99 platform error (only supported on ATSD/ATE) -98 invalid options -97 unable to allocate memory -96 timeout while waiting for data -95 ATE client version too old -94 File transferred but hash doesn't match original -1 pcfile not found 0 No transfer because hostfile already matches pcfile The feature is somewhat experimental at present, and may be expanded to support other variations. ============================================================================ A-Shell Release Notes Version 6.1.1356.5 (20 Jul 2013) ============================================================================ 1. --- Click filtering refinement: Clicks on controls belonging to windows not within the current modal dialog are normally ignored, unless they come from a modeless dialog. (The idea is that modeless dialogs operate outside of the normal dialog hierarchy.) This rule has now been modified slightly to ignore clicks from a modeless dialog which is a parent of the current modal dialog. In other words, if a modeless dialog launches a modal child dialog, the user will have to terminate that modal child dialog prior to interacting again with the original modeless dialog. ============================================================================ A-Shell Release Notes Version 6.1.1356.4 (19 Jul 2013) ============================================================================ 1. --- XTREE bug fix: the input buffer is no longer cleared on exit with exitcode -51 (set by the ExitChars= Advanced Coldef option). This was interfering with the operation of buttons that sent plain text strings intercepted by XTREE. 2. --- Toolbar refinement: ImgDir= specification may now be in AMOS format or include %env% variables. 3. --- Toolbar refinement: Attempting to add a toolbar in a position already occupied by a toolbar now automatically deletes the prior toolbar. Previously they stacked up in a way that wasn't functional. ============================================================================ A-Shell Release Notes Version 6.1.1356.3 (19 Jul 2013) ============================================================================ 1. --- MX_BROWSEFOLDER bug fix: was crashing A-Shell after selecting a folder. (Problem introduced in 6.1.1355.0) ============================================================================ A-Shell Release Notes Version 6.1.1356.2 (18 Jul 2013) ============================================================================ 1. --- Toolbar control refinement: you can now create toolbars using one of the sets of button images which are built-in to Windows. (Each toolbar can contain images from one of these built-in sets, or can contain discrete images loaded from PNG files, but not a mixture.) To use one of the built-in image sets, include the file ashinc:toolbarstd.def, set the ImgDir= attribute to the identifier for one of the sets (e.g. IDB_STD_SMALL_COLOR), and each img= attribute to the identifier for one of the buttons within that set (e.g. STD_FILEOPEN). For example: ! toolbarattributes: ctext$ = "@" ctext$ += "Imgdir="+IDB_STD_SMALL_COLOR+"~" ! std small color images ctext$ += "ImgSiz=16,16,24~~" ! 16x16, 24 color ! buttons ctext$ += "id=fnew~img="+STD_FILENEW+"~tip=New file~cmd=VK_xF601~~" ctext$ += "id=fopen~img="+STD_FILEOPEN+"~tip=Open files~cmd="VK_xF602~~" ... ============================================================================ A-Shell Release Notes Version 6.1.1356.1 (16 Jul 2013) ============================================================================ 1. --- GUI control alignment bug fix: when the top status bar was visible, GUI objects were appearing one line too high. (Problem introduced in 1356.0 during integration of toolbars into grid.) 2. --- Toolbar refinement: vertical bars now work (using dwstyle CCS_LEFT and CCS_RIGHT) ============================================================================ A-Shell Release Notes Version 6.1.1356.0 (15 Jul 2013) ============================================================================ 1. --- New AUI_CONTROL type: MBF_TOOLBAR (&h00008000), which creates a Windows-typical toolbar across the top of the parent window. As with the MBF_TAB and MBF_TABX controls, the ctext parameter is used to specify attributes for the toolbar as a whole and a list of definitions for the buttons. The CTLOP_CHG opcode can also be used after the toolbar is created to add or enable/disable buttons. Unlike most other controls, the coordinates are ignored - the size and position is automatically determined (based on the size of the buttons and any label text, and the size of the main window). Toolbars are anchored to the top, left, bottom, or right edges of the main window according to the CCS_xxx flags specified in the winstyle parameter. ctext syntax: ctext = {@global-attribs~~}{op:}{btndef~~} ...{btndef~~} where global-attributes ImgSiz=,,~ defines the width, height and bit depth of the images ImgDir=~ (optonal) defines the default directory for images ImgCount=~ (optional) # of images to prepare to handle op (optional) may be "+:" (to append), or "=:" to change the specified button. Not used when creating the toolbar initially. (A button deletion opcode may be added later, but for now, the only way to delete a button is to delete the entire toolbar.) btndef each btndef defines the attributes for a single button; the attribute clauses are separated by tilde, with two tildes marking the end of the button definition: lbl=~ cmd=~ img=