============================================================================
A-Shell Release Notes Version 6.4.1546.2 (08 March 2017)
============================================================================
1. Log file cleanup: Remove spurious XTREE trace (validate=#, exitpending=#)
from the ASHLOG file. (It is now correctly conditioned on the XDEBUG TRACE
flag.)
============================================================================
A-Shell Release Notes Version 6.4.1546.1 (07 March 2017)
============================================================================
1. ATE-based SFTP bug fix: Recent updates to the ashnet library which
implements SFTP2 "version 2" transfers resulted in a change to the return
status on a successful single-file transfer (from 0 to 1), which was causing
some file transfer front-ends, like ATSYNC (with the /V2 switch) and
ZTXFER (with the /2 switch) to report a spurious failure code 1 even when
the file was successfully transferred.
============================================================================
A-Shell Release Notes Version 6.4.1546.0 (07 March 2017)
============================================================================
1. 6.3 development cycle now officially at an end; version advanced to 6.4.
(At this point there should be only bug fixes to 6.4)
2. XTREE server-side optimization bug fix: under certain conditions,
using XTROP_REPLACE to effectively delete rows (by supplying a new array
with fewer items than the previous array) was deleting the wrong item
due to sorting.
============================================================================
A-Shell Release Notes Version 6.3.1545.7 (06 March 2017)
============================================================================
1. TABX/INFLD bug fix: redisplaying (recreating) an INFLD-based checkbox
on a TABX control wasn't displaying the updated state.
============================================================================
A-Shell Release Notes Version 6.3.1545.6 (02 March 2017)
============================================================================
1. COMPIL bug fix (edit 794) - the compiler was failing to report an error
when a variable type other than F,6 was used as the return variable in
a LOOKUP statement. (The runtime system, consistent with AMOS behavior,
has always returned the value in F,6 format. This fix to the compiler will
help prevent unexpected results when another variable type is advertently
specified.)
2. HOSTEX.SBR refinement: a new suffix character, "^", allows for a slight
variation in the Windows behavior that you otherwise would get without
specifying any suffix character. In both cases, the parent session waits
for the child to exit, but in the case of the "^" suffix, it does not try
to get the focus back when the child returns, and it doesn't notify any
sibling A-Shell sessions when the user transmits keystrokes or mouse events
while waiting that are ignored by the child while the parent is waiting.
This addresses an exotic situation with child processes that have no
user interface support but which take long enough that it becomes likely
for the user to either switch to another session in the meantime, or to
try mouse or keyboard actions in the suspended parent session which then
interfered with a sibling A-Shell session.
============================================================================
A-Shell Release Notes Version 6.3.1545.5 (02 March 2017)
============================================================================
1. XTREE bug fix (server-side): file-mode multi-select trees were failing
to return any selections in some cases.
============================================================================
A-Shell Release Notes Version 6.3.1545.4 (28 February 2017)
============================================================================
1. TABX bug fix: deleting controls by id or name, which were not part of
a TABX control, wasn't working properly when there was a TABX control present.
2. TABX/wallpaper bug fix: the main window wallpaper area wasn't being
refreshed while a TABX control was present.
3. The default Copy/Paste context menu (introduced in 1539.0) is now
disabled in the presence of XTREE. (The two were conflicting).
============================================================================
A-Shell Release Notes Version 6.3.1545.3 (28 February 2017)
============================================================================
1. MX_FILESTATS bug fix: remote files (on the ATE workstation) with commas
in the file name were not being recognized.
2. ERASE.LIT 3.4(130) fixes a display glitch in the /? help display
affecting the the /F switch documentation. Also, all the internal messages
have now been internationalized (via LITMSG.xxx).
============================================================================
A-Shell Release Notes Version 6.3.1545.2 (27 February 2017)
============================================================================
1. XTREE bug fix: editable cell background color was reverting to white
instead of a shade of the display color. (Bug introduced in 1545.0)
2. Bug fix: further revision to the bitwise operator fix in 6.3.1545.1.
============================================================================
A-Shell Release Notes Version 6.3.1545.1 (27 February 2017)
============================================================================
1. Bug fix: the bitwise operator combinations AND NOT and OR NOT were
giving unexpected results when one of the operands was less than &h80000000
and the other was >= &h80000000. (Problem was introduced in 6.3.1516 along
with support for B6/I6 variables.)
============================================================================
A-Shell Release Notes Version 6.3.1545.0 (22 February 2017)
============================================================================
1. XY.LIT 1.0(102) adds usage help display, supports XY x,y syntax.
2. ISMUTL.LIT 1.4(140) adds a new feature to allow dumping directly from
the DAT file rather than from one of the indices. This can be useful in
the rare case where the IDX file has become damaged, which could interfere
with the ability to dump or rebuild it by the normal means.
3. ISMUTL.LIT 1.4(141) adds an option, when dumping directly from the DAT
file, to dump just the active records (default), or just the deleted
records, or all the records. The latter two options might be useful
in exotic data recovery or other operations. For example, if you
accidentally deleted some records, you could dump just the deleted records
and then reload them (effectively un-deleting them). Or if you have a large
file containing many deleted records, you could split it into two files --
one for the active records and one to archive the deleted records -- by
dumping the active and deleted records separately and then using them to
build two new files from scratch.
4. EDIT$() bug fix: the +2 flag (to remove control characters) was also
removing any characters with the 8th bit set. (Bug introduced in 6.3.1534.)
5. libashtls.so.1.1.209.el7 added to the -el7 release. This matches the
latest GNUTLS for that platform (3.3.24, aka ligbnutls.so.28).
============================================================================
A-Shell Release Notes Version 6.3.1544.9 (22 February 2017)
============================================================================
1. TABX bug fix: when attempting to redundantly add a child control to a
TABX panel, the returned control id was incorrect.
============================================================================
A-Shell Release Notes Version 6.3.1544.8 (20 February 2017)
============================================================================
1. TABX bug fix: close a loophole in a recent optimization that was causing
an XTREE to fail with error 207 when recreating an already existing tree
on a TABX panel.
2. File handling bug fix: close loophole in which closing an SQL file within
a nested SBX routine might result in the disappearance of the last file
opened from the file table (generally leading to I/O to Unopened File error.)
============================================================================
A-Shell Release Notes Version 6.3.1544.7 (17 February 2017)
============================================================================
1. LIBASHTLS.DLL 1.1(209) - TLS support for TCPX updated to use latest
stable GNUTLS (3.4.9). From a library compatibility standard this is known
as GNUTLS-30 (previously we were using -26). (Linux versions to follow.)
============================================================================
A-Shell Release Notes Version 6.3.1544.3 (14 February 2017)
============================================================================
1. Further TABX paint refinement: deleting controls on a TABX panel
using the wildcard method (setting text = "*" and specifying a rectangle
within which to delete) was failing to visually remove them until some
other action triggered a refresh (which may have been too late to prevent
visual overwriting/overlapping of newly added controls) /jdm
============================================================================
A-Shell Release Notes Version 6.3.1544.2 (12 February 2017)
============================================================================
1. FTP2 bug fix: XFTPF_DEL operation was failing due to bogus complain about
library version.
2. ASHNET.DLL 1.10.158 fixes a variety of minor issues and adds several
minor refinements to FTP2, mostly in the area of wildcard and sync operations.
============================================================================
A-Shell Release Notes Version 6.3.1544.1 (12 February 2017)
============================================================================
1. ISAM-A bug fix: GET'PREV following a not-found lookup error on another
file was causing the GET'PREV to return the current rather than previous
record. The new library version is 6.11q (as shown in ISMUTL). The bug was
exposed by the previous ISAM-A patch (see 1542.3)
============================================================================
A-Shell Release Notes Version 6.3.1544.0 (10 February 2017)
============================================================================
1. Various refinements to the TABX display refresh logic to reduce the
flickering and other display anomalies.
2. HTTP.SBR now exposed to Linux via libashnet.so.1.9.157. (See notes for
CRYPTO under 6.3.1539.0 below for installation details.)
3. FTP2.SBR now exposed to Linux via libashnet.so.1.9.157.
4. HTTP.SBR refinement: filespecs passed in the request and response
parameters are now folded to lower case. (The documentation has always
noted that they are to be native filespecs, but since case doesn't matter
in the Windows world, folding them to lower avoids a common mistake when
porting a working application from Windows to Linux.)
5. FTP2 enhancement: wildcards are now supported in the SFTP protocol;
previously they were only supported for the FTP protocol.
6. FTP2 enhancements: new opcode options:
define XFTPF_RECURSE = &h00200000 ! recurse subdirs (with wildcards)
! [273] Following are mutually exclusive (SFTP only) M=missing, N=newer, S=size
define XFTPF_SYNC_ALL = &h00000000 ! all matching files
define XFTPF_SYNC_M = &h01000000 ! all files that don't exist in dest
define XFTPF_SYNC_MN = &h02000000 ! all files that don't exist in dest, or are newer in source
define XFTPF_SYNC_N = &h03000000 ! only files that exist in both places but are newer in src
define XFTPF_SYNC_MS = &h04000000 ! all files that don't exist in dest or are different size
define XFTPF_SYNC_MNS = &h05000000 ! all files that don't exist in dest or are different size or newer
define XFTPF_SYNC_DELM = &h0F000000 ! with XFTPF_DEL, only remote files not existing locally
The above opcode options apply only to the SFTP protocol (XTFPF_SFTP), and
only come into play when a wildcard is specified in the relevant source
argument and the destination is just a directory. The wildcard source
argument acts as the first level of filtering on files to be transferred,
with further filtering determined by the XFTPF_SYNC_xxx options.
Note that unlike most of the XFTPF_xxx flags, which are coded as unique bits
and thus could theoretically be combined in any way (provided it makes
functional sense), the XFTPF_SYNC_xxx options are all mutually exclusive
(i.e., choose only 1). Also note that XFTPF_SYNC_DELM only applies in
conjunction with XFTPF_DEL.
When doing wildcard transfers or remote deletions, the status parameter
now returns (on success) the number of files transferred or deleted, rather
than just zero. Also, the emsg parameter in that case will contain a list
of the files transferred or deleted (delimited by line breaks).
See new FTPTST program (SOSLIB:[907,33]) for testing.
============================================================================
A-Shell Release Notes Version 6.3.1543.5 (07 February 2017)
============================================================================
1. Fix some anomalies in validating new style licenses.
2. XTREE refinement: missing semicolon at end of PopupMenu definitions now
supplied automatically. (It only a problem when concatenating multiple
indexed PopupMenus.)
============================================================================
A-Shell Release Notes Version 6.3.1543.4 (03 February 2017)
============================================================================
1. TABX control update/correction: minor adjustments to the new TABX
control implementation. Note that the SftTabs_IX86_A_60.dll is no longer
supported due to compatibility issues with the new _65.dll.
2. PCKLST/XTREE bug fix: close a loophole in which an empty first line
of the file (in file mode) was causing the data load to terminate without
displaying any data. Note that this fix is to the server side. (Absent the
fix, the workaround is to just make sure that the first line of the file
contains at least one space if nothing else.)
============================================================================
A-Shell Release Notes Version 6.3.1543.3 (03 February 2017)
============================================================================
1. XTREE bug fix: checkboxes in property sheets were displaying and acting
like read-only numbers rather than checkboxes. (Introduced in 6.3.1530.0)
============================================================================
A-Shell Release Notes Version 6.3.1543.2 (02 February 2017)
============================================================================
1. AUI_CONTROL bug fix: static controls with palette colors (e.g. values
in range of 0-79 rather than RGB values) were not displaying the right
color in many cases.
2. AUI_CONTROL bug fix: static panel background colors were not displaying
as opaque in the presence of wallpaper, even when the panel was within a
dialog. (Wallpaper generally requires transparent backgrounds but only
for controls that are directly on the wallpaper and intended to bleed
through.)
============================================================================
A-Shell Release Notes Version 6.3.1543.1 (31 January 2017)
============================================================================
1. XTREE bug fix: close loophole allowing an infinite loop when a column
title contained a ":" character. (Bug introduced in 6.3.1537.0)
============================================================================
A-Shell Release Notes Version 6.3.1543.0 (31 January 2017)
============================================================================
1. MSGBOX.SBR enhancements - up to 5 buttons, customizeable button labels
or icons, tool tips, time delay, time out, optional hyperlink field, colors,
fonts, etc. New syntax:
xcall MSGBOX, msg, title, btnflag, iconflag {, miscflags, rtncde, &
{mxflags, timeout, timein, url, iconspec, &
btn1, btn2, btn3, btn4, btn5, tip1, tip2, tip3, tip4, tip5, &
fontface, fontscale, fgc, bgc}}
The original arguments msg thru rtncde remain as before. If 6 or fewer
arguments are specified, it continues to use the original MSGBOX
implementation (based on the standard Windows Message Box for GUI
environments, or INMEMO for plain text environments).
Otherwise (i.e. if the mxflags argument is specified), the routine uses
a new implementation entirely internal to A-Shell. For GUI environments,
the new implementation is similar to an extended version of the standard
Message Box; for plain text environments it uses the same INMEMO
implementation as before. Note that many of the new features will be
ignored in the plain text version (icons, tooltips, fonts, hyperlinks, etc.)
New Parameters:
mxflags (num) [in] - flags related to extended options:
MBX_RCBTNO &h10000000 ! return 101-105 for buttons 1-5
MBX_FRCTXT &h20000000 ! force plain text version
MBX_TI1 &h00100000 ! time-in delay on button 1
MBX_TI2 &h00200000 ! time-in delay on button 2
MBX_TI3 &h00400000 ! time-in delay on button 3
MBX_TI4 &h00800000 ! time-in delay on button 4
MBX_TI5 &h01000000 ! time-in delay on button 5
timeout (num) [in] - if not zero, sets the timeout (in seconds) on the
default button (at which point the button is auto-clicked). Except in
the case of icon buttons, the button will show the countdown progress.
See comments regarding pausing the countdown.
timein (num) [in] - used in conjunction with the MBX_TIx flags (see mxflags)
to specify a time (in seconds) before which one or more buttons are unable
to be clicked (i.e. disabled). This is useful when you want to make sure
the message box stays on the screen for at least a certain number of seconds,
either so that the user can read the message, or perhaps to prevent the
possibility of accidentally clicking a button before understanding the
consequences.
Note that the timeout and timein values run concurrently. Setting them
both for the same button will result in the visual countdown starting with
button disabled. When the timein value expires, the button becomes enabled
but the countdown continues. (It only makes sense for the timeout value
to be >= timein value.)
url (str) [in] - optionally specified a clickable hyperlink that appears
beneath the message text and above the buttons. The visible text may be
the same as the target url, or you may use HTML format to display something
other than the actual link, e.g.
http://www.microsabio.com
MicroSabio Home PageMicroSabio Home Page
The third example shows the proper HTML format (with the url field quoted).
Note that to embed such quotes within a BASIC quoted string you need to use
double-double quotes (""). The second example (without the extra quotes) is
supported for convenience.
iconspec (str) [in] - optionally specifies an icon (native Windows filespec
or iconname::icondll, e.g. "warning:ashico1") to be used instead of the
standard one based on the iconflag value (which will be ignored if iconspec
is non-null). If neither an iconflag no an iconspec is specified, the
message box will have no icon.
btn1 - btn5 (s,32) [in] - optional text or icon to display for up to 5
buttons (assuming you want to override the default button text corresponding
to the btnflag parameter). Although you can mix text buttons and icon buttons, it probably
works (or looks) best if you stick to one or the other. For icons, you can
use the native Windows filespec of the .ico file or the iconname::icondll
format for an icon within an icon library (like ashico1.dll). Note the 32
byte limit on the length of each field; for ico filespecs, to fit within
32 characters you may need to drop the directory from the path and either put
the icon in the current directory or in the default A-Shell icon search
path (e.g. the cache, permcache, or icons subdirectories).
tip1 - tip5 (str) [in] - optional tool tips for up to 5 buttons.
fontface (str) [in] - optional font to use
fontscale (num) [in] - optional font scale adjustment in percent. 0 is
treated the same as 100 percent. In modern high-res environments, you
may find that increasing the font size makes for a more readable message.
Note that the font scale does not affect the title bar, but it does affect
nearly everything else in the message box.
fgc (num) [in] - optional RGB value to use for the message text.
bgc (num) [in] - optional RGB value to use for the background of the message.
Comments: Aside from the features documented above, another advantage of the
enhanced message box (vs the standard Windows message box) is that although
it forces you to respond to the message box before returning to the
application (i.e. it is task modal), it allows you to access the A-Shell
menu bar, for example, to use the Print Screen utility.
Pausing the countdown: in the case of a countdown (see timeout parameter),
the user may want to pause the countdown in order to allow more time to
study the message, seek help etc. This can be accomplished by right-clicking
on the affected button, which suspends the countdown and displays a simple
context menu containing the single option "Resume". Although this may not
be obvious to the interested user, if you don't supply your own button
tooltip, one will assigned automatically saying "Right-click to pause
countdown". (It may still not be obvious to the user but at least they
have a fighting chance of stumbling on it.) If you supply your own tooltip,
you may want to include wording to the same effect.
2. New release of the DLL underlying TABX control (SftTabs_IX86_A_65.DLL,
previously SftTabs_IX86_A_65.DLL).
3. New LIT commands:
MUSER.LIT 1.0(100)
LOGON.LIT 1.0(100)
MUSER maintains a database of user info, and LOGON provides a menu-driven
text-mode logon portal for A-Shell. Together they simulate the logon scheme
used under AMOS. Most A-Shell users rely on the Windows or UNIX logon scheme,
thus eliminating the need for a separate emulation of the AMOS logon. But for
those who have integrated aspects of the AMOS logon into their application
logic, the A-Shell emulation of the feature may be useful.
Note that although both AMOS and A-Shell store the user database in the
file OPR:USER.SYS, the file layouts are not compatible. Thus you'll have
to manually enter all the users when porting from AMOS. Also, several of
the AMOS-centric fields in the USER.SYS are ignored.
Also note that when you use LOGON to log on as a user defined in the
USER.SYS database, A-Shell will replace the native operating system logon
name with the name specified in LOGON.LIT. (This name will apply within
A-Shell, but will not affect the real identity of the user from the host
operating system perspective.)
4. New SBX: FNDUSR.SBX 1.0(101) emulates the AMOS subroutine of the same
name, acting as a companion to MUSER.LIT and LOGON.LIT to retrieve
information about the current (or another user) from the database. Usage:
xcall FNDUSR, user'name, status, user'map
user'name (str) [in/out] is the name to look for. (If blank, the current
user is retrieved.)
status (f,6) [out] returns 0=success, else unable to locate user
user'map (struct) [out] returns attributes of found user:
MAP1 USER'MAP
MAP2 USER'NAME,S,20
MAP2 USER'FLAGS,F,6
MAP2 USER'ROOT'PPN,S,10
MAP2 USER'ROOT'DEVICE,S,10
MAP2 USER'MAIL'PPN,S,10
MAP2 USER'MAIL'DEVICE,S,10
MAP2 USER'MAIL'CPU,S,10
MAP2 USER'PRIV,F,6
MAP2 USER'CLASS,F,6
MAP2 USER'EXP,F,6
MAP2 USER'CPU'TIME,F,6
MAP2 USER'CONNECT'TIME,F,6
MAP2 USER'KRAM,F,6
MAP2 USER'DISK'READS,F,6
MAP2 USER'DISK'WRITES,S,6
MAP2 USER'PAGES'PRINTED,F,6
MAP2 USER'DEFAULT'PROTECTION,F,6
MAP2 USER'DEFAULT'PRIORITY,F,6
MAP2 USER'DEFAULT'LANGUAGE,F,6
MAP2 USER'DEFAULT'PROMPT,S,20
The above structure is also defined as DEFSTRUCT ST_USER_MAP in
ASHINC:USER.DEF
5. Bug fix: close a loophole in which an un-mapped array might cause a
GPF or segmentation fault when first accessed, depending on whether the
string stack had been auto-expanded and to where. (Note that we recommend
mapping all variables, especially arrays, but such unmapped variables
remain legal and thus must be supported for backward compatibility.)
6. New MIAMEX function MX_LANGUAGE (190) to retrieve or set the current
language:
xcall MIAMEX, MX_LANGUAGE, op, lang {,status}
op (num) [in]
Operation: 0=get, 1=set
lang (str) [in/out]
For the get operation, returns the current language name. (Note that
this is the name defined within the LDF file, not the name OF the LDF
file. For example, the ENGLSH.LDF file contains the name "ENGLISH")
For the set operation, must specify the name of the LDF file to load.
This can be either an unadorned filename, like "ENGLSH" (in which case it
will look for DSK0:lang.LDF[1,6]), or a complete filespec. Note that
although the status parameter will indicate if the file was found, the only
to really evaluate the success of the operation is to use GTLANG.SBR to
retrieve all the attributes of the new language.
status (num) [out]
If specified, returns 0 for success, else -1 if the specified LDF is
not found.
7. SET.LIT 1.2(161) enhancement: now supports setting/display language:
SET LANGUAGE {lang}
If lang not specified, it displays the name of the current language.
Otherwise if tried to load the specified language file, interpreting
lang as the LDF file name (i.e.g the same way that MX_LANGUAGE does).
Thus, while SET LANGUAGE may return "SPANISH", to set the language to
Spanish you may need to use SET LANGUAGE SPANSH (assuming the LDF file
name is DSK0:SPANSH.LDF[1,6]).
8. DATES.SBR bug fix: was outputting mm/dd/yy when it should have been
mm/dd/ccyy (i.e. when the output string length >= 10).
============================================================================
A-Shell Release Notes Version 6.3.1542.3 (25 January 2017)
============================================================================
1. ISAM-A bug fix: GET'NEXT/GET'PREV (and FIND'NEXT/FIND'PREV) were not
operating as expected after a seek operation hitting the end of file (e.g.
after a FIND or GET to a key past the last key, or after opening the file
with the END'FILE modifier). At that point, instead of GET'NEXT and FIND'NEXT
failing with status -3, they were locating the last key and returns status 0.
And instead of GET'PREV and FIND'PREV returning the last key, they were
returning the 2nd to the last key.
New ISAMA version is 6.11p (as reported in ISMUTL.LIT).
============================================================================
A-Shell Release Notes Version 6.3.1542.2 (22 January 2017)
============================================================================
1. XTREE bug fix - fix bug (introduced in 6.3.1536.0) in which clicking on
a checkbox or radio button in an inactive tree was toggling the visual state
of the element, but not returning the updated state in the answer array.
============================================================================
A-Shell Release Notes Version 6.3.1542.1 (20 January 2017)
============================================================================
1. XTREE bug fix - close loophole in which an empty shared list column
might result in truncation of the answer array results.
============================================================================
A-Shell Release Notes Version 6.3.1542.0 (16 January 2017)
============================================================================
1. AUI_CONTROL enhancement: auto-countdown buttons. To enable this feature,
append "<##>" to the text of a button (ctype MBF_BUTTON), where ## is the
desired length of the countdown in seconds. The button display will be
updated each second with the remaining length of the countdown until it
reaches zero. At that time, the "<##>" suffix will be removed entirely,
and one of the following two events will occur:
a) If the button was initially disabled (MBST_DISABLE), then it will become
enabled. (This might make sense in a situation where you want to prevent the
user from prematurely or accidentally triggering an action with serious
consequences.)
b) If the button was initially enabled, then the click event will be
triggered.
2. ASHNET.DLL 1.9.157 bug fix: resolve various problems with the plain
FTP protocol support in the FTP2.SBX routine. The ASCII/BINARY and
PASSIVE/ACTIVE options weren't working, nor was the simple PC-to-host
option. (Presumably the excuse for this oversight was that hardly anyone
uses plain FTP anymore, preferring SFTP instead.)
3. XSHLEX.SBX added to distribution to provide a standardized robust way
of doing a "Shell Execute" (i.e. launch the application that goes with a
specified file or URL object), without having to consider which platform
you are on. This doesn't provide much advantage over MX_SHELLEX for those
in a pure local Windows environment, but for developers programming
across various environments, it eliminates the need for logic to deal
with local/remote and file transfer considerations. (For
example, in an ATE environment, it detects if the object is a file on
the server, and if so, transfers it automatically to the ATECACHE directory
when it then launches the corresponding app.)
Syntax:
xcall XSHLEX, objectspec {,status,action,parms,dir,showflags, &
waitflag,clisvr,exitstatus}
The parameters all correspond to the equally named MX_SHELLEX parameters
(which see for specifications). Only the deviations/extensions from the
MX_SHELL parameter descriptions are noted below. Also note that the order
of the first two parameters is reversed from MX_SHELLEX (reducing the
mininum syntax to a single parameter).
objectspec (str) [in]
File or URL to launch. Unlike MX_SHELLEX, the file spec may be in
AMOS format; the routine will figure out if it is relative to the server
or the client. If on the server in an ATE or ZTERM connection, file will
be transferred to the client for launch (using ATEAPX.SBX).
status (num) [out]
Combines status codes returned by MX_SHELLEX, with those of ATEAPX.SBX
(which is used for file transfer if necessary) and adds a few more. The
best reference (both for documentation and actual program usage) is the
function Fn'Shell'Exec'Status'Description$() in the new SOSLIB fnshellex.bsi
[https://bitbucket.org/microsabio/soslib/src/bb6659e417127151e863126f35cf6213cba5ccce/907010/fnshellex.bsi?at=default&fileviewer=file-view-default]
function.
action, parms, dir$, showflag, waitflag, exitstatus (same as for MX_SHELLEX)
clisvr (str) [in]
Similar to MX_SHELLEX usage, except that if omitted or blank, the
routine will attempt to figure out if objectspec is a file on the
server or client. If the application knows the object is on the client PC,
it can set it to "C" (for client) to avoid the self-determination logic.
Comments:
The new fnshellex.bsi module (see link above) contains a
convenient wrapper function Fn'Shell'Exec(objectspec$) for maximum simplicity,
e.g.
STATUS = Fn'Shell'Exec(objectspec$)
4. SHLEXC.LIT 1.0(103) enhanced (using XSHLEX.SBX which see above) so that
it now works in server environments (with ATE or ZTERM clients), auto-
transferring the file to the client if necessary. Requires XSHLEX.SBX and
ATEAPX.SBX in BAS:
5. xMASCB.SBR routines fixed to support the dynamic string stack.
6. XTREE PopupMenu enhancement: individual menu items may now be marked
as disabled with a "!" at the start of the item text, i.e.
PopupMenu=!disabled item,VK_xF999; ...
7. XTREE PopupMenu enhancement to support sub-menus. Syntax is the same as
for Hover/Context menus, i.e. set the cmd field (of the text,cmd; menu
item pair) to "[SUB]" to mark the beginning of the submenu, and the text
field of a subsequent item to "[ENDSUB]" to mark the end of the submenu.
For example:
coldef$ += "0~0~ ~SH~PopupMenu=" &
+ "!Retire\tF2,VK_xF501;" &
+ "|arrow_right_green::ashico1|Peacetime,[SUB];" &
+ "|photo_portrait::ashico1|Visit\tF3,VK_xF502;" &
+ "|signpost::ashico1|Pass Through,VK_xF503;" &
+ "[ENDSUB],;" &
+ "-----,;" &
+ "|gear::ashico1|Wartime,[SUB];" &
+ "Attack,VK_xF504;Lay Siege,VK_x507;" &
+ "[ENDSUB],;" &
+ "-----,;" &
...
The above defines a PopupMenu which looks something like:
Retire F2 (disabled item)
Peacetime (submenu with icon)
Visit F3 (submenu item with icon)
Pass Through (submenu item with icon)
--------------------- (separator)
Wartime (submenu with icon)
Attack (submenu item)
Lay Siege (submenu item)
--------------------- (separator)
...
8. XTREE enhancement: indexed PopupMenus. These allow for column- and/or
row- specific context menus to be assembled by concatenating one or
shared partial indexed menus. To accomplish these three new variations
of the PopupMenu syntax are introduced:
PopupMenu:?=lbl1,cmd1;lbl2,cmd2;...lblN,cmdN
PopupMenu={+}?{???}
PopupMenu={+}###
(where each ? is replaced by an alphabetic character A-Z, and ### is
replaced by a column number).
The first variation defines a full or partial menu to be indexed by the
letter replacing ?. The definition can be attached as an Advance Coldef
Option clause to any column definition (zero column or a real column).
Unlike the standard PopupMenu definition syntax, the resulting menu is
not automatically invoked; it only becomes available for reference via
one of the other syntax options associated with a real column.
The second variation may be associated with a real column, indicating
that the context menu for that column should be made up of the previously
indexed menus associated with the ? character(s). The optional "+" prefix
prepends the global PopupMenu to the start of the column-specific menu.
For example:
PopupMenu=+AQZ
indicates that the context menu for the column should be made from the
global PopupMenu, combined with the indexed PopupMenus A, Q, and Z.
The third variation indicates that the specified column ### (current row)
contains the list of indexed PopupMenus to be used for this column, thus
allowing the possibility of a different set of context menu items for each
cell. Note that the specified column ### would normally be hidden, but it
doesn't have to be.
See the EXLIB sample program XTRA21 for an example.
9. SIZE.SBR bug fix: The variations to count the number of lines (flags
1 and 2) were incorrectly including the byte count.
10. DYNLIB.SBR enhancement: automatic convertion from ANSI to/from UTF8
now supported via the "A" (read only) and "a" (read/write) codes. (This
is used in the Linux version of the LIBXL API to handle accented and other
special Latin1 characters.)
11. KILL.LIT 2.2B(125) now supports localization; see LITMSG.xxx 039,###
for message customization.
12. SORT.LIT 1.1(106) now supports localization; see LITMSG.xxx 056,###
for message customization. Also, the display has been updated to show the
number of records sorted.
13. ISMBLD.LIT/SBX 2.1(143) bug fix: SBX version wasn't putting the IDA on
the same device as the IDX when the fspec contained a device specification
and the IDADEV parameter was blank.
============================================================================
A-Shell Release Notes Version 6.3.1541.0 (21 December 2016)
============================================================================
1. XTEXT enhancement - new flag TXF_SILENT (&h00100000) eliminates the user
interface and causes the operation to exit immediately. This is mainly
useful in conjunction with TXOP_CREATE to convert a file from one format
into another.
============================================================================
A-Shell Release Notes Version 6.3.1540.0 (19 December 2016)
============================================================================
1. New feature - "Group Licensing". This allows fine tuning of the license
usage by providing a means of reserving and/or limiting the license usage
relative to license groups. For example, in a 15 user license, you can
reserve 2 license for "admin" users, and limit the "remote" users to no
more than 5 licenses.
When group licensing is enabled (in the license code), A-Shell will call
BAS:ASLICGRP.SBX on startup (if it exists) to determine which license
group the current user should be assigned to, and also to specify the number
of licenses that each group should be allocated or limited to.
See the sample ASLICGRP.SBX source code in [907,52] of the SOSLIB for
details on the calling interface.
2. SYSTAT.LIT 3.2(175) will display the group each job is assigned to,
if applicable, with the /CU switch.
3. INFLD enhancement: TYPE code |& ('smart' re-enabling of protected fields),
when specified in the INFDEF string, now affects BASIC INPUT fields.
(Normally, the INFDEF options only apply to XCALL INPUT, XCALL INFLD, etc.)
This can be handy in an application that uses protected fields along with
BASIC INPUT, assuming that the BASIC INPUT does not deactive the protection
(which INFLD would otherwise do).
4. AG_WALLPAPER now supports PNG and other image formats for main window
wallpaper. This was always the case for dialog wallpaper (see 6.3.1527
below), but previously, main window wallpaper was limited to BMP files.
============================================================================
A-Shell Release Notes Version 6.3.1539.0 (11 December 2016)
============================================================================
1. Windows UI refinement: blocks can now be marked starting from the lower
right corner and dragging to the upper left. (Previously, only marking down
and to the right was supported.)
2. Window UI refinement: right clicking on a dialog or the main window will
now generate a generic copy/paste context menu if there is not a custom
context menu already defined.
3. XTREE refinement / enhancement: the Advanced Coldef Option Dspwid may
now be explicitly set to 0 (Dspwid=0) to produce an effect similar to hiding
the column (Cformat "H"), except that the column is still technically
visible (just 1 pixel wide). This allows you to manually resize it with the
mouse (not possible for truly hidden columns), and also may be useful in
exotic situations. For example, you may have a column that you want to
leave essentially invisible for rows where it is empty, but let it spill
over to subsequent columns for rows where it is not empty.
4. CGIUTL bug fix: HTML decoding of an explicit string request passed to
CGIOP_GETPARX or _GETPARARY was failing if the string length was > 2K.
5. CRYPTO.SBR enhancements:
- XCALL syntax upgraded to enable the initialization vector (iv)
and replace the salt parameter with aad (additional authentication
data) and authtag:
XCALL CRYPT, opcode, status, src, decoding, src, encoding, cflags &
{, cipher, key, keybits, cmode, padding {, cbsrc &
{, iv {, aad, authtag}}}}
iv (string or X) [in]
Initialization vector for optional use with CRYPTOP_ENCRYPT/DECRYPT
opcodes with the AES cipher (all cipher modes except ECB). For
cipher modes other than GCM or ECB, it should match the cipher
block size, i.e. 16 bytes for AES (128 bits, not to be confused
with the key size). For GCM cipher mode, 96 bits or less
is recommended for best efficiency and interoperability. In all
cases, it should be unique for any given key, preferably randomly
generated. For GCM, it is only necessary that each IV not be used
more than once. The same iv used for the encryption must be supplied
to the decryption. The iv may be specified as raw bytes (preferably
using an X format variable), or as a string of hex digits (in which
case the CRYPF_IVHEX flag must be specified.)
aad (string, null terminated) [in]
Additional authentication data for use with the new GCM cipher
mode (see below). Must be in the format of a string of hex
digits. This is typically used to provide an identifying label or
other association for the encrypted text, with the intent of making
sure that the decrypted text is not just valid, but valid for a
particular context/use. A corresponding authentication tag is
generated (by combining the aad with the message and hashing and
encrypting it) and output to the authtag parameter. The aad does
not have to be kept secret, but both it and the corresponding
authtag must be provided to the decryption routine in order to
authenticate the result. The aad parameter can be null, but a
unique authtag will still be generated and must be passed (along
with the null aad) to the decryption.
authtag (string, 33+ bytes) [in/out]
Required for AES-GCM encryption/decryption. During encryption,
an authentication tag is generated from the combination of the aad
and the message text and output to this parameter in the form of
a string of 32 hex digits. This computed value must then be passed
along with the origional aad to the decryption.
- New cipher modes (cmode) added for use with the AES encryption algorithm:
CBC - Cipher Block Chaining (block)
CTR - Counter Mode (stream)
CFB - Cipher Feedback (stream)
OFB - Output Feedback (stream)
GCM - Galois/Counter Mode (stream)
-
Note that the stream cipher modes (CTR,CFB,OFB,GCM) do not require or
use padding and thus ignore the padding parameter (use of CRYPT_PAD_NA
recommended for clarity). Without padding, the encrypted text is the
same size as the plain text (assuming the same encoding). The block
cipher modes (ECB and CBC) do require one of the other padding options,
all of which will increase the encrypted text size up to a multiple of
the block size (i.e. a multiple of 16).
- CRYPTO.SBR now supported on the Linux platform, in addition to Windows.
Requires /usr/lib/libashnet.so.1 -> /libashnet.so.1.9.156
- New symbols in ashinc:cipher.def
define CRYPTO_MODE_CTR = 4 ! Counter Mode
define CRYPTO_MODE_CFB = 5 ! Cipher Feedback
define CRYPTO_MODE_OFB = 6 ! Output Feedback
define CRYPTO_MODE_GCM = 7 ! Galois/Counter Mode
define CRYPF_IVHEX = &h0800 ! IV is hex-encoded (else binary)
define CRYPTO_PAD_NA = -1 ! padding not applicable. (Use with
! stream cipher modes CTR,CFB,OFB,GCM)
Note that all of these CRYPT-related enhancements require ASHNET.DLL 1.9.156+
(for Windows) or libashnet.so.1.9.156 (for Linux).
============================================================================
A-Shell Release Notes Version 6.3.1538.1 (05 December 2016)
============================================================================
1. XTREE bug fix / refinement: Cformat code "o" (to allow previous column
to spill over into the current one) was not working in file mode when the
column also had a cell background color (Cformat "B").
============================================================================
A-Shell Release Notes Version 6.3.1538.0 (28 November 2016)
============================================================================
1. Language enhancement (compiler edit 792) : new dot variables .LINENO and
.LOCATION :
.LINENO returns the last line number, similar to err(1) except without
requiring an error. Not to be confused with the dot function .LINENO(ch)
(which returns the physical line # since the last page break in the output
file open on the specified channel).
.LOCATION returns the current program location counter, i.e. the offset
in bytes from the start of the current program (RUN, LIT or SBX) to the
current statement position. Note that the location counter is generally
represented in hex (as it appears in the LSX files created by the compiler
/LF switch), so you would probably want to print it using the
SOSLIB function Fn'Dec2Hex(.LOCATION).
2. File hook enhancement: add new fields chan, location and lineno to
the ST_HOOK_ENV structure passed to the hook SBX. These are mostly motivated
by the desired to use the hook mechanism for application forensics than for
more traditional purposes (export, data audit), i.e. they allow the hook
return to more information context in which the file operation occurred.
The end of the ST_HOOK_ENV structure now looks like this:
map2 user,s,24 ! user name
map2 chan,b,4 ! actual file channel (may not match fileid)
map2 location,b,4 ! location counter
map2 lineno,b,2 ! last line #
Note that the expanded structure does not break compatibility with existing
hook routines, nor do hook routines using the expanded structure lose their
backwards compatibility. (The new fields just won't be available.)
See ASHINC:HOOK.DEF for the updated structure and related symbol defintions.
3. File hook bug fix: the recno field in the ST_HOOK_ENV wasn't being
adjusted for non-zero SCALE factors.
4. New MIAMEX function MX_CALLSTACK (189) to return information about the
call stack. The motivation here, as with the enhancement to the ST_HOOK_ENV
structure, is to allow application routines to identify the context in which
they were called. For example, the file hook subroutine, or an error trapping
routine, might want to identify not just the location where the file operation
or error occurred, but if that location was within a callable routine, the
routine(s) that called it. The syntax:
xcall MIAMEX, MX_CALLSTACK, maxdepth, csarray(1) {, program$}
maxdepth (num) [in/out] should be set to the number of elements in the
csarray(), i.e. the maximum number of stack levels (working backwards from
the current stack frame context) to retrieve. On return, it will be set to
the number of levels in the current stack. (If greater than the number you
originally specified, it indicates that not all of the levels were
returned.)
csarray(1) (array of ST_CALLSTACK) [out] is the first element of an array
of structures defined in ASHINC:CALLSTACK.DEF as follows:
defstruct ST_CALLSTACK
map2 calltype,b,2 ! type of call (see CSTF_xxx)
map2 src'lno,b,2 ! line # at or prior to call
map2 src'loc,b,4 ! location counter at call
map2 dst'loc,b,4 ! target location (for call, fn, proc)
map2 dst'name,s,52 ! name of sbx or AMOS command line
endstruct
Typically csarray() would be defined via:
dimx callstack(MAX_CALLSTACK), ST_CALLSTACK
(MAX_CALLSTACK should be set to the maximum # of levels you want to retrieve.)
program$ (string) [out] optionally returns the main program at the top of
the callstack.
Example:
++include ashinc:ashell.def
++include ashinc:callstack.bsi
define MAX_CALLSTACK = 10
map1 misc
map2 program$,s,10
map2 stackdepth,i,2
dimx callstack(MAX_CALLSTACK), ST_CALLSTACK
stackdepth = MAX_CALLSTACK ! max # levels we can handle
xcall MIAMEX, MX_CALLSTACK, stackdepth, callstack(1), program$
for i = 1 to stackdepth min MAX_CALLSTACK
? Fn'Call'Stack'Descr$(callstack(i))
next i
The Fn'Call'Stack'Descr$() function referenced above is in the SOSLIB
module ASHINC:CALLSTACK.BSI. It creates a one line description of
a call (gosub, procedure, function, xcall, amos statement, etc.) from
one location/context to another. An example showing a context six levels
deep looks like this:
from loc 3B7 call proc() @3DF
from loc 38C fn'() @393
from loc 32B call proc() @331
from loc 4F1 xcall callstack1
from loc 47C fn'() @483
from loc 323 call proc() @41A
Notes:
- In the above example, the program had no line numbers, so they
weren't listed in the output.
- To match up the location counter values to source code lines, see the
LSX file created by the compiler /L switch.
- The entry in the array (shown at the top) describes the level that called
the code that executed the MX_CALLBACK function. So in the above case, the
current code is within a procedure that starts at location 3DF (hex) and was
called from location 3B7. Location 3B7 is within a function that starts at
location 393, which in turn was called from location 38C, etc.
============================================================================
A-Shell Release Notes Version 6.3.1537.1 (27 November 2016)
============================================================================
1. XTREE bug fix: XTROP_REPLACE was resulting in some editable cell data
anomalies after identical changes by the application to both the data and
answer arrays.
============================================================================
A-Shell Release Notes Version 6.3.1537.0 (21 November 2016)
============================================================================
1. XTREE enhancement: You can now define a footer, which is like a mirror
of the header, i.e. a line which remains fixed (not affected by scrolling
or by loading/updating of data or answer lines).
To enable and configure the display of the footer line, two new fields have
been added to the bottom of the XTRCTL parameter structure, which now ends
like this:
...
map2 XTR'CTLID,B,2 ! A-Shell ctl #
map2 XTR'LEFTINDEX,B,1 ! Left-most visible column
map2 XTR'SHOWFOOTER,B,1 ! Show footer
map2 XTR'FOOTERSTYLE,b,1 ! same XTHSF_xxx flags as HEADERSTYLE (6.3.1537+)
map2 XTR'UNUSED2,X,12 ! was 14
! (total size = 128)
To enable the display of the footer, set the SHOWFOOTER field to 1. The
FOOTERSTYLE field can be used to adjust the attributes of the footer, using
the same options as in the HEADERSTYLE field for the headers.`
To define the display contents of each column in the footer, you can append
a clause to the header field of the coldef. The footer clause must begin
with a pair of colons (::) followed by a string of text which has follows
the same syntax as for the header. For example, the following COLDEF excerpt
defines a column starting in position 9, 12 characters wide, with "Qty" in
the header and "Total Qty" in the footer...
COLDEF += "9~12~Qty::Total Qty~#EX~~"
In practice, you might want to replace the generic description "Total Qty"
with the actual total for that column. To do that, you would need to sum
the column in the application (initially, and/or after any changes to the
column), and then the COLDEF string would have to be rebuilt with the
updated footer definition, e.g.
COLDEF += "9~12~Qty::Total: "+TOT'QTY using "#####"+"#EX~~"
(The COLDEF for an existing tree can be updated by just passing the new
COLDEF string in an XTROP_REPLACE or XTROP_RESELECT call.)
You may also define font, scale, and color attributes using the following
new Advanced Coldef Options:
FooterFont= (same syntax as for HeaderFont)
FooterScale= (same syntax as for HeaderScale)
RGBbgFooter= (same syntax as for RGBbgTotals)
RGBfgFooter= (same syntax as for RGBfgTotals)
============================================================================
A-Shell Release Notes Version 6.3.1536.3 (17 November 2016)
============================================================================
1. Fix MBF_VCENTER with static controls (reverted to top-justification in
6.3.1535.0).
2. ASHNET.DLL 1.8.154 refinement: the properties options introduced in
1.8.153 now apply to the HTTPF_REQGET ("simple get") operation as well
as the other operations/modes. (Previously they were ignored for the
simple get.) Also, the default timeout parameters (30 seconds
on connection, 75 on read) now apply to the HTTPF_REQGET operation even if
properties are not explicitly specified. Previously the timeouts were
indeterminate, but definitely shorter than the new defaults.
3. ATHTTP.SBX 1.2(106) removes the 256 byte limit on the length of the
returned response string. The new theoretical limit is 500K, although there
may be other effective limitations based on resources, timing, etc.
============================================================================
A-Shell Release Notes Version 6.3.1536.2 (16 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.2.1428.8)
============================================================================
A-Shell Release Notes Version 6.3.1536.1 (16 November 2016)
============================================================================
1. XTREE performance optimization: updating the answer array on exit from
an editing session is now considerably faster than before. In most cases,
this may not be obvious because it was already fast. But there were some
cases, in particular large XTF_SPLIT trees with an editable expand/collapse
state column (=UH) were the speed up is quite noticeable (from a few seconds
down to a few milliseconds).
============================================================================
A-Shell Release Notes Version 6.3.1536.0 (15 November 2016)
============================================================================
1. ASHNET.DLL 1.8.153 - relink with updated SSL, SFTP and HTTP libraries
to incorporate many minor bug fixes and improvements in the underlying
libraries over the last 11 months. (The DLL is backwards compatible to
A-Shell and ATE 6.2)
2. HTTP.SBX enhancement: rename the Certfile parameter to Properties and
revise its meaning/interpretation to:
Properties (string) [in]
An optional list of name=value clauses delimited by semicolons, e.g.:
name1=value;name2=value2,value3;...;nameN=valueM
To maintain backwards compatibility, if there is no "=" character in the
string, it will be intepreted as the Certfile spec (as before), although
this syntax is now deprecated (replaced with the Cert=fspec clause).
The current list of property names and values is shown below. Note that
the property names are case sensitive, but the values are not. For boolean
values, anything starting with "T" or "1" is considered TRUE; everything
else is considered false. (Note the default values for the case where the
property is not specified.)
Name=value Default Description (* = see Comments)
------------------ ------- ---------------------------------------
Cert= none Specify cert file spec
AllowHeaderFolding True Disables MIME header folding
BasicAuth False Allows HTTP basic authentication *
RequiresSslCertVerify False If true, verify server's SSL cert; if
expired or invalid, abort connection.
SslAllowedCiphers Specify comma-delimited list of allowed
SSL/TLS ciphers *
AutoAddHostHeader False If true, the "Host" header will be added
to the request header for XHTTPF_REQGET
MimicFireFox False If true, headers are added to XHTTPF_REQGET
calls to mimic those used by FireFox
MimicIE False If true, headers are added XHTTPF_REQGET
to mimic those used by Internet Explorer
ReadTimeout 75 Time in seconds to wait while reading the
response from the server before timing out.
ConnectTimeout 30 Time in seconds to wait for the connection
to be established before timing out
Comments (*)
BasicAuth: Basic Authentication is one of many types of HTTP authentication,
but it is often considered a security risk because the name and password
are transmitted in plain text. For an SSL/TSL connection, this may be ok,
but in any case, the default is set to False just to err on the safe side.
SslAllowedCiphers: To limit SSL/TLS connections to a more specific set of
possible ciphers, specify one or more of the following (comma-delimited).
You may also use the special value "best-practices" to request "current
best practices". Currently this means the following, but may evolve over time:
- Any RSA keys must be 1024 bits or more
- All renegotiations must be secure
- All ciphers using RC4, DES or 3DES are disallowed
Available Ciphers
-------------------------------
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_RC4_128_MD5
TLS_DHE_RSA_WITH_DES_CBC_SHA
TLS_RSA_WITH_DES_CBC_SHA
3. ATHTTP.SBX 1.2(105) adds support for the HTTP Properties parameter
(see above), and also for the Certpw parameter.
4. Fix bug (introduced in 6.3.1524) which resulted in spurious error #13
(file already open) errors in certain sequences where a file channel is
closed and then reopened.
5. XTREE performance optimization related to the return of editable cell
data from tree to application. Particularly in the case of XTF_SPLIT, the
improvement could amount to seconds for very large trees.
============================================================================
A-Shell Release Notes Version 6.3.1535.3 (11 November 2016)
============================================================================
1. Fix intermittent crash in CGIUTL opcode 6 (CGIOP_MRGFIL). (Same patch
as in 6.2.1428.7)
============================================================================
A-Shell Release Notes Version 6.3.1535.2 (09 November 2016)
============================================================================
1. Eliminate spurious runtime error when passing .NULL to a function param
expecting an array passed by reference. (Note that the way to test for this
within the function is to check if .EXTENT($ARY()) < 0.)
2. Compiler bug fix (edit 791) - certain obscure syntax errors were putting
the compiler into an infinite loop.
3. (ATE) - Remove the text message "remote connection has been terminated
by host/user". It had become either superseded by the dialog, or superfluous.
============================================================================
A-Shell Release Notes Version 6.3.1535.1 (06 November 2016)
============================================================================
1. Replace old acorn and ate icons with the newer A-Shell and ATE icons.
(For various reasons, the old versions were hanging around and resurfacing
when they should have been replaced long ago.)
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.3.1535.0 (03 November 2016)
============================================================================
1. ATE enhancement: add checkbox option to login panel of configuration
dialog (atecfx.sbx 4.4(176)) to force the login dialog to be called prior
to the connection attempt. This addresses two situations in particular:
- the case where you want to display your custom login dialog prior to
connection even when the login name and password appear to be already set.
- the ATSD case where ATE cannot rely on standard login status information
(or the existence of a name and/or password) to determine if the login dialog
needs to be displayed.
Previously (prior to 6.3.1516) the login dialog was only called after a
login failure. Starting in 6.3.1516, it was called prior to the first
connection attempt if either the name or password field was blank. Now it
is called for the following conditions: 1) the Login Dialog option is
checked; 2) the name and/or password is set to "[INIT]"; 3) under UNIX,
the login credentials passed to the server are rejected.
2. AUI_CONTROL refinement: static text controls with BGC=NUL_BGC (-2) now
inherit the background color of a parent TABX panel even when using
MBF2_CUSTDRAW or MBF_VCENTER.
============================================================================
A-Shell Release Notes Version 6.3.1534.2 (02 November 2016)
============================================================================
1. Compiler refinement (edit 790) - use of .ARGCNT within a PRIVATE_BEGIN /
PRIVATE_END block now generates a compile error. Although the expression
wouldn't technically be illegal, because the PRIVATE block is essentially
called for initialization by whatever function or procedure in the module
gets called first, there's really no good way to predict in advance what
the .ARGCNT value will represent, and thus it is almost certain to create
a discrepancy between the expected and actual behavior.
2. DIR.LIT 3.3(160) enhancement: new /MEMREQ switch displays the memory
required for static variable storage (for programs such as LIT, RUN and SBX
files) in place of the file size. When both /SSIZE (sort on file size) and
/MEMREQ are specified, it also sorts based on the memory requirement.
Note that the value displayed by /MEMREQ is only a total for the combined
sizes of the fixed variables in the program. While this is far short of
of the total operating system memory used by the program (which includes
dynamic variable, stack and other auxiliary memory allocations), it is
a good measure of how large your job memory partition needs to be. (This
is particularly true since 6.3.1518 when the string stack was moved to
dynamic memory.) A reasonable rule of thumb would be to set your partition
size to 300-500K larger than the largest /MEMREQ value for your application.
(Use DIR /MEMREQ/SSIZE to find the largest values; don't forget to also
check the LIT files in SYS: since some of them may have large requirements.)
3. QUTL.LIT 3.1(129) refinement: remove previous maximum of 20000 FLOCK or
XLOCK records and reduce the fixed partition memory requirement from
approximately 700K to 200K by using dynamic arrays.
4. HOST.LIT 2.0(106) refinement: reduce minimum partition memory requirement
from about 265K to 3K and increase the maximum output capture buffer size
(when using /O) from 256K to 512K. Note that the total memory requirement
when using /O has actually increased rather than decreased, but it is only
required when using /O and in that case it is dynamically allocated outside
the memory partition.
============================================================================
A-Shell Release Notes Version 6.3.1534.1 (28 October 2016)
============================================================================
1. ATE refinement: remove previous limit of 1K on length of string returned
by AG_XFUNCS.
============================================================================
A-Shell Release Notes Version 6.3.1534.0 (27 October 2016)
============================================================================
1. Enhancements to EDIT$(expr,flags) function:
- Add new flags &h0040 (unquote) and &h0080 (exempt quoted characters).
- Define symbols (in ashell.def) for the various EDIT$ flags:
EDITF_SPTB &h0002 remove spaces and tabs
EDITF_CTLS &h0004 remove chr(127) & chr(0)-chr(31) except TAB
EDITF_SPTBL &h0008 remove leading spaces and tabs
EDITF_SPTB1 &h0010 shrink spaces & tabs to one space
EDITF_SPTBR &h0020 remove trailing spaces and tabs
EDITF_UNQT &h0040 unquote (and reduce "" to ") *
EDITF_EXQT &h0080 limits action to outside matched quotes **
Notes:
* EDITF_UNQT performs two operations: 1) if the first and last character,
after any other processing (such as removal of leading/trailing spaces and
tabs), are both double quotes ("), then are removed. 2) Any remaining
double double-quotes ("") which are not preceded by a single double-quote
are reduced to a single double-quote ("), unless the string has been
reduced to a single pair of double double-quotes ("").
** Exemption for quoted strings allows for multiple quoted subsections.
This works well with JSON documents, which may contain many individually
quoted strings, yet it may be convenient to remove all the whitespace not
within those quoted strings.
For example:
S$ After EDIT$(S$,EDITF_SPTB+EDITF_EXQT)
--------------------- ------------------------------------------
"name" : "v1 v2" "name":"v1 v2"
"name" : v1 v2 "name":v1v2
"name : v1 v2" ] "name : v1 v2"]
"6"" ruler" "6"" ruler"
S$ After EDIT$(S$,EDITF_UNQT)
--------------------- ------------------------------------------
"6"" ruler" 6" ruler
"6"" ruler":$1.99 "6"" ruler":$1.99
In the last example above, the outer quotes were not removed because
they didn't completely enclose the string, and the "" was not reduced
to " because it followed a " character.
2. XTREE bug fix: when using XTROP_CREATE to replace an existing tree,
not all attributes of the original column definitions were being reset.
This was resulting in some oddities where a column in the new tree might
retain some attributes from the corresponding column in the old tree.
============================================================================
A-Shell Release Notes Version 6.3.1533.2 (25 October 2016)
============================================================================
1. Compiler bug fix (edit 789): revise compiler edit 763 so that it only
uses the 48 bit integer format for large numeric literals that are either
explicitly tagged with the "L" suffix or with the hex (&h) or octal (&o)
prefix. Previously it was using the new format for large numeric literals
expressed in exponential or decimal notation, which was causing unexpected
backwards compatibility problems when compiling under 6.3 and running under
6.2.
============================================================================
A-Shell Release Notes Version 6.3.1533.1 (21 October 2016)
============================================================================
1. Compiler bug fix (edit 788): fix conflicts between /PX, ++IFLBL, and
PRIVATE function declarations. /PX was removing functions that were only
called within ++IFLBL blocks testing for the existence of the function.
And ++IFLBL was not seeing PRIVATE function labels.
2. Runtime bug fix: close a loophole in the space() function whereby it
could cause an invalid memory reference if the first space(x) call was with
x=0. (This was noticed in VUE on an initial ^B command; problem introduced
in 1532.0.)
============================================================================
A-Shell Release Notes Version 6.3.1533.0 (21 October 2016)
============================================================================
1. Language enhancement: .SPLICE statement now allows an optional 4th
parameter to specify the splice position in the destination array:
.SPLICE $dst(), $src(), count, dstpos
where dstpos may be:
-1 (default) indicates end of the $dst() array
0 indicates the start of the $dst() array
n (n > 0) indicates after the nth item in $dst() array
Note that this option only applies when the destination parameter is
expressed as a base array, as in the above example. Attempting to
specify the dstpos parameter when the first parameter is an iterator or
other individual element reference will result in a syntax error.
For example, if $kids() contains the list: "john", "fred", "sally", "pilar"
and $pets() contains the list: "dog", "cat", "mouse", "lizard"
then:
.SPLICE $kids(), $pets(), 1, 0
would splice "dog" to the start of the $kids() array.
.SPLICE $kids(), $pets(), 3, 2
would splice the first 3 pets ("dog", "cat", "mouse") after the 2nd
kid, i.e. in between "fred" and "sally".
.SPLICE $kids(), $pets(), 0, -1
would be the same as
.SPLICE $kids(), $pets()
i.e. would splice all of the pets (count=0), to the end of the kids (-1).
.SPLICE $kids(), $pets(), 0, 0
would splice all of the pets to the start of the kids array.
2. Language enhancement: .SORT $mlist() now implemented:
.SORT $kids()
Sorts according to the collating sequence (just as the ordered map does).
============================================================================
A-Shell Release Notes Version 6.3.1532.6 (20 October 2016)
============================================================================
1. Compiler bug fix/refinement to .SPLICE statement: 3rd argument (count)
can now be any numeric expression; previously only a variable was allowed.
(This was an unnecessary compiler restriction, there was no such limitation
in the runtime system.)
2. Runtime refinement: the .splice statement now accepts limited use of a
reverse iterator, but only when the count is 1.
============================================================================
A-Shell Release Notes Version 6.3.1532.5 (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.2.1428.3)
============================================================================
A-Shell Release Notes Version 6.3.1532.4 (19 October 2016)
============================================================================
1. Windows bug fix: closing a sequential file that had been associated with
a socket via MX_FILESOCK (see 1524 below) was sometimes crashing the session.
2. Fix bug causing corruption of the memory handle table during SBX calls
involving collections and/or recursion. (Introduced in 1532.0.)
============================================================================
A-Shell Release Notes Version 6.3.1532.3 (13 October 2016)
============================================================================
1. Compiler bug fix/refinement (edit 785) - an array received by reference
in a function definition may now be given a default value of .NULL in order
to make the parameter optional (consistent with indirect functions). (Note
that prior to edit 765 the compiler allowed a default value of "".)
============================================================================
A-Shell Release Notes Version 6.3.1532.2 (12 October 2016)
============================================================================
1. Compiler bug fix (edit 784) - ++PRAGMA GLOBAL_BEGIN crashing compiler
if /PX switch used.
============================================================================
A-Shell Release Notes Version 6.3.1532.1 (10 October 2016)
============================================================================
1. Close loophole allowing corruption of the string stack when processing
a very large string constant in an expression.
2. Compiler bug fix (edit 783) - /px switch was conflicting with Private
routines (in some cases removing them from the RUN even if they were
being called.)
3. Standalone compiler bug fix: edit 783 of the standalone compiler
includes two additional fixes/updates:
a) The -px switch is now recognized. Previously it was being treated the
same as -p (which avoided the problem with Private functions) but also
failed to deliver the "tree-shaking" (unused routine removal) benefits.
b) The -igoo (treat all ++include as ++include'once) switch now supported.
4. COMPIL.LIT / COMPLP.LIT 1.1(133) update: /IGOO switch now recognized.
(This was actually implemented in the internal compiler 779 update when
the INCLUDE_GLOBAL_ONCE_ONLY pragma was added.)
5. ATE refinement: the FTP transfer protocol and ports now default based
on the terminal transport protocol and port if the "Link to Transport
Settings" option is set. (This is mainly for the benefit of the ATE Web
Connect protocol where it is easy, and possibly desirable, to not specify
such settings.)
============================================================================
A-Shell Release Notes Version 6.3.1532.0 (08 October 2016)
============================================================================
1. Runtime enhancement: Remove limit on memory handles (previously 500) to
to support very large MLIST structures (which use a lot of memory handles).
2. Improvements to webcaching of DLLs - webcache option can now be enabled
after a failed attempt to load the XTREE or XTEXT dll. (Previously XTREE
and XTEXT gave up after the first failed attempt so wouldn't benefit from
activating webcache and retrying.) A-Shell test web repository
(http://www.microsabio.net/testrepo) now contains copies of the various
DLLs that can be web-loaded.
3. Add CMD:TESTCACHE.CMD as a convenience to make it easy to test the
webcache. Contains the commands:
SET WEBCACHE REPO http://www.microsabio.net/testrepo
SET WEBCACHE ENABLE,ALL,ATE
4. Add missing SftTree_IX86_U_75.dll to distribution.
5. Update check-for-updates module (was reporting availability of 6.2
version on first try before updating itself.)
============================================================================
A-Shell Release Notes Version 6.3.1531.0 (05 October 2016)
============================================================================
1. A-Shell/Windows runtime enhancement: Webcache feature now supports most
A-Shell/Windows DLLs. These are downloaded to the A-Shell executable
directory if it is writeable; otherwise they are downloaded to the
webcache directory.
2. SET.LIT 1.2(158) adds new flags DLL, ALL, and ATE.
DLL flag causes A-Shell to attempt web download of missing DLLs from
repository; if possible, it downloads them directly into the executable
directory, else into the webcache directory.
.SET WEBCACHE ENABLE,DLL
ALL flag sets all options (but not ENABLE itself), equivalent to PROG,
OPENI,LOOKUP,DLL (and any others to come).
.SET WEBCACHE ENABLE,ALL
ATE pseudo-flag tells SET to pass the webcache flags and repo info to
the ATE client. Note that if you want to assign different options and/or
repository directory to ATE, use the following sequence:
.SET WEBCACHE REPO
.SET WEBCACHE ENABLE,,ATE ! forward options & repo to ATE
.SET WEBCACHE REPO
.SET WEBCACHE ENABLE, ! set server options only
3. The following flags has been added to ashell.def for MX_WEBCACHE:
WCDF_DLL &h00000010 download DLLs to bin or webcache
WCFG_ALL &h000000FE all flags (except WCDF_ENABLE)
4. New AG_WEBCACHE (108) command to get/set webcache options from host:
? tab(-10,AG_WEBCACHE);op{,flags{,url}};chr(127);
op is 0 to retrieve and 1 to set. On retrieval, the returned string
will contain "flags,url" (current webcache flags and repo url).
flags is a decimal number containing the WCDF_xxx flags
url, if specified, is the web directory for the repository.
For example:
? tab(-10,AG_WEBCACHE);"1,";(WCDF_ENABLE or WCDF_ALL); &
",http://www.myrepo.com/app1";chr(127); ! enable;set repo
? tab(-10,AG_WEBCACHE);"1,0";chr(127); ! disable
? tab(-10,AG_WEBCACHE);"0";chr(127); ! retrieve
? tab(-10,AG_WEBCACHE);chr(127); ! same (retrieve)
input line, response$ ! input flags,url
5. Important bug fix: assignment to DIMX type B or type I array elements using
INPUT, READ, or XGETARG{S}, wasn't working properly due to a failure to pick
up the correct element size from the descriptor of the array (which differs
between static and DIMX arrays). This was a very longstanding problem (may go
back to the original implementation of DIMX arrays), but was easily overlooked
until 6.3.1516 when the B6 and I6 variables were introduced, because prior to
that, the destination variable size was defaulting to 4 bytes when not set to
another valid size. For the B2 and I2 cases, this would have assigned the
correct value but also overwritten the next 2 bytes in memory (i.e. the next
element in the array). Since 6.3.1516, it was doing nothing (i.e. resulting in
a received value of zero).
6. ZTXFER 1.4(108) now supports /ATE switch to force alternative transfer
protocol (i.e. using ATE terminal channel). This was already automatic for
transfers between an ATE client and a Windows server, but now can be
forced in other situations. (For example, under UNIX, FTP/SFTP transfers
may be blocked by some security or other obstacle, while the ATE terminal
channel would work.)
============================================================================
A-Shell Release Notes Version 6.3.1530.1 (05 October 2016)
============================================================================
1. Important bug fix: using XFUNC$() in a string expression was corrupting
the string stack, resulting in somewhat unpredictable string results.
(Problem introduced with the auto-expanding string stack in 6.3.1518)
2. ATE refinements related to use of the ashell-ate: URL scheme to launch
ATE from a web page. These include:
- The MIAME environment variable is now always set to match the location of
the miame.ini file. (This is virtually always the case anyway, except that
when launched from a URL link, visibility restrictions on the environment
between Windows and the browser were resulting in it reverting to C:\VM\MIAME.)
- The Cache and PermCache directories now default to %MIAME%\Cache and
%MIAME%\PermCache, respectively, if not set. (This was a potential issue
when building a minimal configuration on the fly from the URL.)
- When building the ATE configuration on the fly, you can define pseudo
configuration values LoginSBX= and WebRepo= to cause
ATE to check the web repository for the custom login dialog.
============================================================================
A-Shell Release Notes Version 6.3.1530.0 (04 October 2016)
============================================================================
1. Run-time enhancement: quoted native filespecs now supported with RUN, e.g.
.RUN "/vm/miame/webcache/hello.run"
2. INSTR(spos,subject,pattern,flags) enhancement: two new flags implemented:
INSTRF_ANY &h01000000 Treat pattern as set of characters;
match first one that appears in subject.
INSTRF_ANYQT &h02000000 Same as INSTRF_ANY but ignores characters
in subject between matching quotes.
Note that unlike all of the other INSTR() flags, these do not actually
use the REGEX library. They are instead based on the standard C function
strpbrk(). Example:
PRINT INSTR(1, "DSK0:ABC.RUN /X", ";/ ", INSTRF_ANY)
Of the three characters in the pattern (";/ "), the first to occur in
the subject is the space at position 13.
The above is equivalent to the REGEX character set pattern "[;/ ]"; it
simply eliminates any doubts about REGEX syntax for special characters.
But the INSTRF_ANYQT version is much harder to implement using REGEX.
3. New release of the DLL underlying XTREE (SftTree_IX86_U_75.DLL,
previously SftTree_IX86_U_70.DLL)
4. XTREE enhancement: 3-state editable checkbox columns now support the
extended mode (T3+) which adds the ability to check-all (^A), uncheck-all (^B)
and undo (^Z).
5. XTREE enhancement: extended checkbox columns may now be extended to
a second degree by adding a second "+" (e.g. T++ or T3++). This adds a
3-state checkbox to the header of the column which is automatically set to
the checked state if all the boxes in the column are checked; the unchecked
state if all the boxes are unchecked, or the indeterminate state if there
is a mixture (or if all of the boxes are indeterminate). Clicking the
checkbox in the header cycles through the check-all, uncheck-all,
set-all-to-indeterminate (if 3-state), and back to the origional mixed
state (if applicable).
6. XTREE enhancement: column ordering for all the columns (up to the max
of 100) can now be saved when using the TreeID mechanism with the
XTUCFG_COLORD bit set in the XTR'USRCFG field. Previously the limit was
31 columns, which remains the limit when using the XTR'COLORDER() array
method without the TreeID option.
============================================================================
A-Shell Release Notes Version 6.3.1529.0 (30 September 2016)
============================================================================
1. A-Shell runtime enhancement: auto cache/download of files from a web
directory if not found in the local search path. Downloaded files are
cached in the directory %MIAME%/webcache, which is checked first (as in a
web browser) to avoid the overhead of unnecessary web accesses.
The feature is referred to under the generic umbrella of "WEBCACHE" and
may be enabled and configured via a new SET.LIT option and/or a new
MIAMEX function (both described below).
Option flags determine which types of files are subject to the feature.
By default it applies to images and any other kind of file operation
that currently supports automatic lookup in the cache and permcache
directories. Additional file/type options:
PROG - programs (RUN, LIT, SBX)
OPENI - files being opened for sequential input
LOOKUP - files reference by LOOKUP statement or XCALL SIZE
Currently only a single web directory (at a time) is supported, although
it is conceivable that multiple directories and/or trees may be implemented
in the future.
The webcache directory, like the permcache directory, is not auto-cleared
at the end of the session. But like a typical web browser cache, it can be
cleared with a command. Individual files or files matching a pattern can
also be cleared. Also, as with a typical web browser, the existence
of a file in the cache short-circuits any web lookup for that file; there
is no automatic comparison of file sizes or dates between the cached copy
and the web copy (because this would completely undermine the performance
benefit of the cache). So you have to clear the cache in order to get a
refreshed copy from the web repository.
2. SET.LIT 1.2(157) now supports options to enable/disable, clear, and
otherwise configure webcache feature:
.SET WEBCACHE ! display current webcache settings
.SET WEBCACHE ? ! display usage information
.SET WEBCACHE ENABLE ! enable
.SET WEBCACHE DISABLE ! disable
.SET WEBCACHE CLEAR ! erase all files in local webcache
.SET WEBCACHE REFRESH ! remove files from cache matching spec
.SET WEBCACHE REPO ! set the web repository directory
.SET WEBCACHE