============================================================================ A-Shell Release Notes Version 7.0.1771.0 (10 April 2025) ============================================================================ 1. New dot variable (compiler edit 1067) - .PID Returns the current process ID, same as XCALL GETPID returns. 2. New dot variable (compiler edit 1068) - .ASFLAGS Returns the current set of flags otherwise accessible via XCALL ASFLAG. Note that the dot variable is read only, whereas the XCALL always writes (with a optional read). The two can be used together to avoid having to call the XCALL twice to set a single flag without changing any of the others. For example, to set the AF_SBXASRUN flag without touching the others... XCALL ASFLAG, (.ASFLAGS or AF_SBXASRUN) 3. New "no-PPN" variation of the MIAME.INI DEVICE directive to support individual arbitrary directories as 'devices' without any PPNs. Syntax: DEVICE = dev#:[] path Examples (two no-PPN devices followed by a single-PPN device) : DEVICE = TMP0:[] "%TEMP%" DEVICE = TMP1:[] "C:\TEMP" DEVICE = BIN0:[1,1] "/vm/miame/bin" Note that the no-PPN DEVICE definition syntax is similar to the single-PPN version, except without anything inside the []. When referencing the no-PPN DEVICE in code or on the command line, you never specify the [p,pn], whereas with the single-PPN device, if you don't specify the [p,pn] it will default to your current [p,pn] (probably failing unless it just happened to match the one [p,pn] on the device). The effect is similar to defining a single-PPN DEVICE and then creating an ERSATZ definition to point to that dev#:[p,pn]. The main advantage of the ERSATZ approach is that you can eliminate the device #; the main disadvantage is that it requires two matching definitions (one in the MIAME.INI, the other in an ERSATZ file.) One other advantage to the no-PPN DEVICE is that you can create a series of such definitions using the same base device but different unit numbers (as in the example above) and then perform combined searches on all of the units belonging to that device by just omitting the device # in the wildcard spec. For example, again assuming the above two DEVICE definitions, consider the following: .LOG BAS: .DIR TMP:MYFILE.* Because TMP: is the (automatic) base device for TMP0: and TMP1:, omitting the device # in a wildcard command line context, acts like a wildcard (in this case matching both TMP0: and TMP1:). And since these are no-PPN devices, our current P,PN (7,6) has no bearing on where it searches (as would be the case with a single-ppn ERSATZ definition). Note that although the ground work for this is embedded into A-Shell, to successfully reference such devices at the command prompt you'll need to update the LIT commands: DIR.LIT 3.4(178) COPY.LIT 3.4(149) MOVE.LIT 3.4(149) ERASE.LIT 3.4(138) PRINT.LIT 3.4(139) SIZE.LIT 3.3(103) DEVTBL.LIT 3.3(106) The DEVTBL display was also modernized to eliminate pointless references that only made sense in the AMOS world, and to replace them with indicators of single-PPN and no-PPN devices. Several other LITs were recompiled with minor internal updates at the same time - use UPDCUR to update them. (The updated LITs remain compatible with prior verions of A-Shell.) 4. ASQL enhancement: variation of SQLOP_FETCH_ROW to fetch a result set into a DYNSTRUCT, matching up fields by name or number. Syntax: xcall SQL, SQLOP_FETCH_ROW, cmdhdr, ds where ds is a DYNSTRUCT than has been initialized/bound to a structure definition. To distinguish this variation from others, you must set one of the following flags in cmdhdr.opflags: FETCHR_DYNFLDNUM (&h0080) ! fetch row into dynstruct by field number FETCHR_DYNFLDNAME (&h0100) ! fetch row into dynstruct by field name (These are defined in SQL.DEF, available along with any other relevant utility module updates in 909060 of the EXLIB repository.) Notes: - Although SQL field names are case INsensitive, DYNSTRUCT field names are case sensitive. So if using FETCHR_DYNFLDNAME, the names in the structure definition must match exactly the SQL field names to be fetched. Any mismatches will result in that field/column being ignored. It doesn't interfere with any other field fetch operations, but will cause the new cmdhdr.rc status flag SQLERR_DSFLDUNDEF (32) to be returned. (Note that you may want to use 'AS name' clauses in your query to clean up any such mismatches and to assign matchable names to any calculated result columns.) Arrays are not supported in this mode. - In the FETCHR_DYNFLDNUM (by field number) variation, the result columns are matched up by the sequence number of the fields in the structure, starting at 1. In addition to scalar fiels, single-dimension arrays are also supported, as in the example below: defstruct ST_DEMO map2 custid,s,10 ! field #1 map2 cusname,s,30 ! field #2 map2 lastsales(5),f ! field #3-#7 map2 custype,b,2 ! field #8 If there are more fields in the result set than in the structure, the excess result fields will be ignored, and the SQLERR_DSFLDUNDEF (32) status code will be returned in cmdhdr.rc - The logic for this is in A-Shell rather than the ASQL connector, but does require at least 1.6.148 (MySQL) and 1.6.120 (ODBC) ============================================================================ A-Shell Release Notes Version 7.0.1770.5 (02 April 2025) ============================================================================ 1. Refinement to runtime error detection of deletion of collection element during iteration (first introduced in 1770.0). ============================================================================ A-Shell Release Notes Version 7.0.1770.4 (30 March 2025) ============================================================================ 1. TPRINT/DPRINT/EPRINT bug fix: tab(x,y) positioning within any of these commands was incorrectly limiting the x and y dimensions to the size of the main window even when the current context was a dialog. Note that although this is a GUI display issue, the bug fix is on the server side. (Updating ATE does not solve it; you need to update A-Shell on the server.) An alternate workaround is to increase the main window dimensions using tab(-5,x) or tab(-6,y) to match the dimensions of the target dialog. 2. VIEWASHLOG.LIT 1.0(107) enhancement: new switch /USER: allows extracting (and grouping) log lines by the user login name. 3. INFLD timer bug fix: the patch introduced in 1770.1 for Windows didn't make it over to the Linux platforms. Now resolved. 4. XCALL REGEX refinement: close a loophole where the same variable is passed for both the source and one of the returned sub-matches, interfering with the output of subsequent sub-matches. 5. SRCCOM.LIT 2.0(205) refinements: optimization improvements, both in terms of performance and minimizing the amount of difference reported. Also, add lifesigns. 6. (ATE) silence annoying messages about license failure when not actually connected to A-Shell. 7. SLEEP.LIT 1.0(102) minor update to support /? 8. SLEEPR.LIT 1.0(103) minor internal cleanup and /? display refinement. ============================================================================ A-Shell Release Notes Version 7.0.1770.3 (14 March 2025) ============================================================================ 1. Compiler bug fix (edit 1066) - Several dot functions were generating spurious syntax errors. (Introduced in edit 1065.) ============================================================================ A-Shell Release Notes Version 7.0.1770.2 (14 March 2025) ============================================================================ 1. Compiler / language refinement (edit 1065) - Further refinements to the behavior of the various .ARGxxx(@parm) functions - - The .ARG_PASSED(@parm) status is now inherited, even when the :OUTPUTONLY qualifier is specified. For example: call fn'foo() ! no arg passed end function fn'foo(argx=0 as b2:outputonly) ? "argx=";argx; .ifelse$(not .ARG_PASSED(@argx),"NOT ",""); "passed" call fn'nested'foo(argy=argx) endfunction function fn'nested'foo(argy=1 as b2:outputonly) ? "argy=";argy; .ifelse$(not .ARG_PASSED(@argy),"NOT ",""); "passed" endfunction The above program will display... argx= 0 NOT passed argy= 1 NOT passed ... even though the call from fn'foo() to fn'foo'nested() actually does specify the argy=argx parameter, since the inheritance of the argument passed status carries down to the nested function. Note that this applies to both normal static function calls and dynamic (DYNFUNC) calls. - The compiler now complains when a named parameter is specified to one of the .ARGxxx() functions without the @ prefix. For example, the following ... if .ARG_PASSED(argx) then ... would be flagged as an error if argx was the name of a parameter in the current function. Even though it is technically / semantically legal, it is almost certainly a mistake. (Without the @ prefix, the function would return the status of the argument number, based on the value of argx, rather than the status of the argx paramter.) If you really want to reference the arguments by number, just use another variable (i.e. one that isn't itself a parameter to the current function). 2. LIBASHNET update - libashnet.so.1.14.201 fixes a linkage problem in which XCALL FTP, XCALL HTTP, and/or XCALL CRYPTO calls would abort with a missing function error. (Issue may have affected only only the CentOS-based platforms.) ============================================================================ A-Shell Release Notes Version 7.0.1770.1 (09 March 2025) ============================================================================ 1. INFLD timer bug fix: close a loophole in which the INFLD timer would fail to start until a character was entered, if the previous keyboard operation involved a multi-character translation sequence (such as a function key). 2. Compiler / language refinement (edit 1064) - The :OUTPUTONLY qualifier on a DYNSTRUCT parameter no longer defeats the autobinding when the caller passes a DEFSTRUCT to it. The received DYNSTRUCT variable will be empty (regardless of the default value, if any), but will be bound. For example: defstruct st_cust map2 id,b,4 map2 name,s,30 endstruct map1 cust, st_cust cust.id = 99 cust.name = "Jacob" call fn'foo(ds=cust) ? cust.name ! will be "Finkleheimer" end function fn'foo(ds="" as dynstruct:outputonly) ? ds.name ! will be "" because of :outputonly ds.name = "Finkleheimer" ! valid because ds auto-bound to st_cust xputarg @ds endfunction Prior to this, the references to ds.name inside the function would have generated error 70 (invalid dynstruct reference) because the :outputonly would have defeated the automatic binding. ` ============================================================================ A-Shell Release Notes Version 7.0.1770.0 (27 February 2025) ============================================================================ 1. New dot function (compiler edit 1062) : .ISBOUND(ds) The function returns .TRUE if the specified variable is a DYNSTRUCT that has been bound to a defined structure. 2. Compiler refinement (edit 1063) to treat updates to ordmaps during iteration as errors. 3. Runtime refinement to trigger Basic error 67 (invalid collection operation or reference) when an ordered map key-value pair is deleted during iteration. ============================================================================ A-Shell Release Notes Version 7.0.1769.1 (26 February 2025) ============================================================================ 1. Windows display bug fix to resolve black screen problem on restore from minimized. (Problem related to introduction of support for blink attribute.) 2. Runtime bug fix to eliminate spurious error 70 on assignment of a literal string to an uninitialized DYNSTRUCT. (The operation may not seem sensical but occurs when a dynstruct parameter is given a default value -- typically "" or .NULL -- to allow it to be omitted when using named parameters.) ============================================================================ A-Shell Release Notes Version 7.0.1769.0 (25 February 2025) ============================================================================ 1. New GDI print directive: //INCLUDE,file The directive processes the specified file (DevPPN or native spec) as if it were part of the current file. Similar in concept to the PREFIX= and SUFFIX= printer initialization commands, except this one is embedded in the document. 2. CSV2XL.SBX 2.2(297) new directive: //XL,MergeCells,colfirst=#,collast=#{,rowfirst=#}{,rowlast=#} Merges the specified cells into one. The row parameters default to the next data row following the directive, so it can be inserted just before the data in question, e.g. //XL,MergeCells,colfirst=3,collast=5 data1,data2,data3,,,data6 In the above example, columns 3-5 would be merged and would contain "data3". (Note that you don't normally try to put anything into the cells that otherwise disappear as part of the merge.) 3. CSV2XL.SBX 2.2(298) new directive: //XL,SetPageBreak{row=#}{,col=#} The directive forces a break to occur after the specified row and/or col when the spreadsheet is printed. The default row is the current position. To set a column page break without a row pagebreak, set row=-1. Note that page breaks may be seen in Excel by activating Page Break Preview (from the View menu), or by using the Print Preview. 4. CSV2XL.SBX 2.2(299) new attributes for the existing //XL,SetPrint directive: vfitpages=# hfitpages=# The above two attribute values pairs may be used to set the print scaling to fit the spreadsheet on the specified number of print pages, vertically and horizontally, respectively. For example, to force the output to be scaled so that all the columns fit across a single page width, use: //XL,SetPrint,hfitpages=1 5. CSV2XL.SBX 2.2(300) add support for using the following macros as attribute values in //XL statements, referencing the INI attribute value of the same name: $HEADERSFG $HEADERSBG $TOTALSFG $DEFAULTFONT $DEFAUULTFONTSIZE $DATEFORMAT $TIMEFORMAT $DATETIMEFORMAT For example, to define the INI-defined headers background color as the background for a particular column ... //XL,SetCol,colfirst=7,width=2,bgc=$HEADERSBG 6. CSV2XL.SBX 2.2(301) new directives: //XL,SetLaunch,# //XL,SetAppendSeqno,# These override the Launch and AppendSeqno options from the INI file. Replace # with 0 to disable, 1 to enable. Directives must be placed after any SetINI directive. 7. CSV2XL.SBX 2.2(302) new directives: //XL,AddTotals,# //XL,SplitRow,# //XL,SplitCol,# These override the INI file options of the same names, provided they are placed after all SetCol, SetINI, and SetBanner directives. Set # to 0 to disable, > 0 to enable and/or set to a specific value. Setting AddTotals to 0 disables all totals, overriding the SetCol directives. Setting it to 1 enables totals, but does NOT override the SetCol "total" and "nototal" options, nor the built-in rules for deciding which columns are suitable for totalling (i.e. not text, dates, etc.) The Split options might also be thought of as "freeze" as they control the number of rows and/or columns that remain in position while the others are allowed to scroll vertically and/or horizontally. The default for SplitRow is 1, which freezes the top 1 or 2 rows, depending on whether a banner was defined. Setting it to a larger number freezes the rows less than the specified number (e.g. SplitRow,4 freezes 3 rows.) SplitCol defaults to 0; both 0 and 1 result in no columns frozen. To freeze N columns, set SplitCol to N+1. 8. CSV2XL.SBX 2.2(303) refinements to the //XL,AddSheet directive - The sheetname attribute is now optional, defaulting to "Data". Previously, the operation may have failed entirely. - The target directory (extracted from the dstbook attribute) will now be created if it doesn't already exist. (Note that this only works at the bottom level, i.e. the parent directory must exist.) If the directory creation fails, the spreadsheet will be saved in the current directory. 9. GDI printing memory leak fix -- the //XTEXT directive was not releasing all of the memory used by it, leading to gradual increase in overall memory requirements when printing documents with many //XTEXT directives. (Note that there remains an issue with running out of font or pen handles after about two thousand //XTEXT calls, requiring an relaunch of A-Shell to reset.) 10. Minor bug fix in System Messages dialog: changes to the trace flags in the dialog were not being recognized if the Show System Traces checkbox was unchecked before exiting the dialog. 11. Possible fix to display bug resulting in a blank window after restoring a maximized window from minimized state. ============================================================================ A-Shell Release Notes Version 7.0.1768.7 (03 February 2025) ============================================================================ 1. Compiler refinement (edit 1061) - extend edit 1060 (below) to treat a single "@" as a comment indicator if it is the first statement token on the line, i.e. preceded by nothing other than whitespace and possibly a line number. ============================================================================ A-Shell Release Notes Version 7.0.1768.6 (03 February 2025) ============================================================================ 1. Compiler refinement (edit 1060) - treat "@@@" as equivalent to REM or !, i.e. start of a comment. (This was apparently a 'feature' of some earlier version of AlphaBASIC.) ============================================================================ A-Shell Release Notes Version 7.0.1768.5 (27 January 2025) ============================================================================ 1. XTREE bug fix - rework edit 1768.4 to fix problem with last column width being initialized to zero when XTR.CLOSEDENDED=1, XTF2_AUTOEXPCOL not set, and the column not given a Dspwid value. ============================================================================ A-Shell Release Notes Version 7.0.1768.4 (26 January 2025) ============================================================================ 1. XTREE bug fix - an extra column containing row numbers was in come cases appearing in property sheets. Problem and was introduced in edit 1765 (affecting Windows client side only). ============================================================================ A-Shell Release Notes Version 7.0.1768.3 (24 January 2025) ============================================================================ 1. Compiler bug fix (edit 1059) - the minimum run version in the RUN header was still being unnecessarily set to 1767 in many cases where DEFSTRUCTs were defined but not embedded. ============================================================================ A-Shell Release Notes Version 7.0.1768.2 (23 January 2025) ============================================================================ 1. PolyShell bug fix - A-Shell was locking up when launched by PolyShell. (The problem was actually in A-Shell, starting in edit 1764.0, but only manifested when launched by PolyShell.) 2. PolyShell 1.5(175) - updated to support 64 bit environments. ============================================================================ A-Shell Release Notes Version 7.0.1768.1 (21 January 2025) ============================================================================ 1. Compiler bug fix (edit 1058) - function parameters with default values set to actual variables (e.g. arg1=GTOTAL as f6) were not being compiled correctly, resulting in an illegal syntax error (#34) at runtime. Note that this is somewhat rare and exotic technique, requiring that the variable in question be declared PRIVATE to the module (and thus global to the functions in the module). As part of the fix, attempting to declare a default value that is actually a function (e.g. arg1=fn'foo() as f6) is now tagged as illegal by the compiler. (Previously the compiler let it slip through, triggering another illegal syntax error when called.) 2. ISAM 1.x refinement: auto-expansion of the IDA now fills the new records with nulls. Previously they were essentially filled with garbage. (It doesn't matter to ISAM, but it's cleaner this way. ============================================================================ A-Shell Release Notes Version 7.0.1768.0 (14 January 2025) ============================================================================ 1. License utilitization enhancement for CGI sessions - instead of failing when there are no more licenses available, it now retries several times over a period of several seconds. (Since CGI sessions typically last for a few seconds or less, this provides a much better chance for each CGI request to get serviced during bursts of web activity.) 2. QUTL.LIT 3.1(137) now displays additional statistics (in the STATUS option) that are now captured by A-Shell: JOBTBL.SYS created: Tue Jan 14 10:08:40 2025 Number of job table entries: 2 Highwater job count: 4 Number of license denials: 0 Number of sessions started: 631 Number of sessions ended: 629 CGI sessions: Current: 0 Cumulative: 629 Highwater: 2 Note that these fields will contain garbage (harmless) until the JOBTBL.SYS is recreated using 7.0.1768.0+. 3. Improved tracking statistics for license utilization, particularly for CGI sessions. See the updated ASHINC:JOBTBL.SDF structure definition and QUTL.LIT update (above) for details. 4. CSV2XL.SBX 2.2(296) updated to support the latest LIBXL.DLL 4.5.0 5. PRTXLS.SBX 2.1(224) updated to support the latest LIBXL.DLL 4.5.0 (with APEX). 6. Compiler bug fix / refinement (edit 1057) - - Prior edit 1052 was incorrectly setting the RUN minimum version to 1767 regardless of whether there were any embedded defstructs. - Support added for a new special symbol definition: /C:_NO_MIN_1767=1 When defined (to anything), it doesn't set the RUN minimum version to 1767 even if there are embedded defstructs. (This is safe as long as you compile and RUN under the same architecture.) ============================================================================ A-Shell Release Notes Version 7.0.1767.2 (8 January 2025) ============================================================================ 1. ASHNET.DLL / libashnet.so 1.14.200 updates - - Support UTF8-Latin1 conversion on HTTP response by adding the following to the properties parameter: ResponseCharset=UTF or ResponseCharset=ANSI - Internal support library / protocol updates for OAUTH2, SFTP, FTP2, TLS, CRYPTO, etc. - Support for new XHTTPF_NOTLS13 flag in XCALL HTTP 2. 64 bit runtime bug fix - automatic binding with embedded defstructs wasn't always working after the compiler edit 1052. 3. XCALL HTTP enhancement - new flag XHTTPF_NOTLS13 (&h04000000) specifically disables TLS 1.3 negotiation (making 1.2 the highest TLS level supported). This is a workaround for some exotic problems introduced in some server versions of TLS 1.3. 4. AXL license update, supporting LIBXL library updates thru Oct 2025. ============================================================================ A-Shell Release Notes Version 7.0.1767.1 (7 January 2025) ============================================================================ 1. Compiler bug fix (edit 1056) - fix LSX generation bug introduced in edit 1050 resulting in LSX compilation failure. ============================================================================ A-Shell Release Notes Version 7.0.1767.0 (6 January 2025) ============================================================================ 1. Compiler refinement (edit 1049) - setting an OUTPUTONLY function parameter default to anything other than 0, "", or .NULL now generates an error. Although in theory that should be legal, allowing it runs too high of a risk of it not behaving as the programmer might have expected (due to changes in the way OUTPUTONLY parameters have been handled historically). 2. Compiler refinement (edit 1050) - skip over the body of functions when there is an error in the function declaration. (This eliminates a domino effect that often generates an avalanche of errors that are all secondary to the one error in the declaration.) 3. Language enhancements (compiler edit 1051) - .ARGTYP_READONLY(@argname) or .ARGTYP_READONLY(argno) returns .TRUE if the argument was passed as a literal or stack expression rather than a variable. .ARG_PASSED(@argname) or .ARG_PASSED(argno) returns .TRUE if the argument was actually passed by the caller, rather than auto-set via the default value specification in the function declaration. Note that although this function is fully resolved by the compiler, making it at least nominally backwards compatible, on runtime versions prior to 7.0.1767, it acts as the inverse of .ARGTYP_READONLY(). For example... call fn'foo(arg=9) ... function fn'foo(arg=1 as b2) ? .ARG_READONLY(@arg) ! .TRUE in all cases ? .ARG_PASSED(@arg) ! .TRUE if > 7.0.1766, else FALSE endfunction The argument is readonly because it was passed as a literal value. (The function could try to update it using XPUTARG(@arg1) but it would have no effect, since the value is on the stack.) But readonly or not, it was actually passed, which might be meaningful to the called function. However, prior to 7.0.1767, the runtime is unable to determine that, so it will rely on thereadonly status instead. From 1767 forward, the two flags are independent. 4. INT(x) and FIX(x) rounding refinement: by default, INT(x) will return x+1 when x is within .0000005 of the next higher integer. (The intent here is to make values that would be integers except for a few dropped bits 'stick' to the nearest integer value.) FIX(x) behaves similarly. That works for the vast majority of applications, but poses problems for 'floating-point-aware' math-oriented programs that want as much floating point precision as they can get. For them, the new solution is to execute the following at the start of program (or session; the effect persists across programs): xcall MIAMEX, MX_ROUND, MXOP_SET, -1 ! (MIAMEX, 127, 1, -1) This disables both the 48 bit rounding that normally occurs in floating point calculations (in an effort to match AMOS results), and also disables the "stickiness" factor just described in INT(x) and FIX(x). (Thanks to Bob Fowler for identifying this.) 5. Dot variable refinement: .ASHEDIT now evaluates to not just the edit number but the patch number as well (in edit.patch floating point format). For example, under 7.0.1766.5 it would evaluate to 1766.5. This shouldn't cause any backwards compatibility issues. 6. Compiler bug fix (edit 1052) - programs with embedded defstructs are now compatible across 32 and 64 bit architectures. Previously the structures embedded with the RUN were different depending on which platform it was compiled on, breaking the ability to distribute the same set of RUN files across platforms. Starting with this update, embedded defstructs are compiled as they were in the 32 bit environment, maintaining backwards compatibility there. However, any program with embedded defstructs that gets recompiled in the 64 bit environment will generate an error when attempting to use the embedded defstruct if run on an earlier version of A-Shell in the 64 bit environment. 7. Compiler enhancement (edit 1053) - you may now override the minimum runtime version field in the RUN file header by defining the symbol _MIN_RUN_VER = #### (where #### is the desired minimum version). This can be done either with a DEFINE statement in the source code, or by passing the /C: switch to the compiler. Background: normally the compiler will automatically plug in the minimum run version value based on the language features used in the program. The RUN interpreter will compare that value to the current runtime version, and if not sufficient, will abort with an explicit complaint -- "Program requires minimum A-Shell level ####". This is deemed preferable to getting some cryptic error, such as #34 (Invalid Syntax Code) when the intepreter encounters the unrecognized code. However, there may be times where you know better than the compiler. For example, your program may check the version at runtime and avoid code that requires a later version, in which case you might want to override the minimum version in the header to allow it to run on earlier versions anyway. Or, in the case of embedded defstructs (see compiler bug fix 1052 above), if you distribute RUN programs across older 64 bit A-Shell versions, you may want to force the minimum run version to 1767, to avoid wasting time later trying to figure out why embedded defstructs aren't working. 8. Compiler refinement (edit 1054) - new ++PRAGMA OVERRIDE_OUTPUTONLY causes parameters with the :OUTPUTONLY qualifier and a default value to revert to input/output. This is intended to be transitional feature to support programs that were counting on the behavior prior to compiler edit 1047 (7.0.1765.6) until they can be corrected. After that edit, and without this pragma, the :OUTPUTONLY qualifier was taken seriously, meaning that any value passed in to that parameter would be ignored, and as of compiler edit 1049, attempting to set a default value for an :OUTPUTONLY parameter (other than 0 or "") generates an error. Note that this option can also be set by passing the new COMPIL_OOO flag (&h400000000, defined in compil.def) to the MX_COMPIL function. 9. Compiler refinement (edit 1055) - back out edit 1049 (above), i.e. allow any default value on OUTPUTONLY parameters. (Based on feedback from the field, it was determined that the behavior was only useful in a one-time scan of old code to look for potential problems. And for that, the standalone compiler version 1049 thru 1054 could be used. ============================================================================ A-Shell Release Notes Version 7.0.1766.1 (12 December 2024) ============================================================================ 1. XTREE bug fix: in some cases column one was being initialized to a width of zero (effectively hidden). Introduced in 1765.9 or 1766.0. 2. ATE / UNIX bug fix: hitting ^C was in some cases echoing several "^C" instead of just one. 3. XCALL HOSTEX refinement: the -z switches (for invisible mode) are no longer passed through from the parent to the child if the parent has a GUI dialog present. (GUI programs may launch with the -z switch to eliminate any visual trace of the text mode window, but that doesn't mean that they are running in invisible mode.) Note that this behavior was changed in 1764.1 to match the longstanding documentation, which will now be corrected. ============================================================================ A-Shell Release Notes Version 7.0.1766.0 (09 December 2024) ============================================================================ 1. XTREE enhancement: support property sheets combining H, HH and editable. 2. XTREE refinement: combining cformat codes t (display-only checkbox) and E (editable) is now equivalent to T (editable checkbox). Previously it would have acted like a string during editing. (This makes it easier to toggle the editable option without requiring custom code for each column.) 3. XTREE bug fix: fix multi-level attribute broken in 1765.9 4. XTREE bug fixes: fix miscellaneous problems with property sheets either triggered or revealed by the H and HH support. 5. New EXLIB: sample program XTRPSH.BP [908,021] illustrates use of H, HH options with a property sheet. ============================================================================ A-Shell Release Notes Version 7.0.1765.9 (05 December 2024) ============================================================================ 1. XTREE refinement: non-editable property sheets now support H and HH cformat codes. 2. Compiler bug fix (edit 1048) - structure-type function parameters with default values were triggering spurious compiler syntax errors. 3. XCALL JSON bug fix: opcode 1 was generating a segmentation fault under Debian 12 and possibly other 64 bit platforms. ============================================================================ A-Shell Release Notes Version 7.0.1765.8 (29 November 2024) ============================================================================ 1. XTREE bug fix: ListX fields were not working properly in conjunction with the cformat P code. The fields were displaying the ListX code rather than the description, except when the | character was used. Also, sorting such a column was resulting in the editing-disabled attribute migrating. ============================================================================ A-Shell Release Notes Version 7.0.1765.7 (27 November 2024) ============================================================================ 1. Refinement to the blink support (see 1763.0) to fix a side effect where GUI objects on the same screen as a blinking text field would flicker. ============================================================================ A-Shell Release Notes Version 7.0.1765.6 (24 November 2024) ============================================================================ 1. Compiler bug fixes (edit 1047): - Specifying a default value for a parameter in a function declaration was effectively overriding the outputonly clause. - The :outputonly attribute was making it impossible to specify that parameter by name in a DYNFUNC() call. 2. LIBXL 4.5.0 library update. (Mixture of bug fixes and new features waiting to be exploited later.) ============================================================================ A-Shell Release Notes Version 7.0.1765.5 (20 November 2024) ============================================================================ 1. XTREE refinement: vertical scroll mechanism (see 1765.3) now supports the mouse wheel. ============================================================================ A-Shell Release Notes Version 7.0.1765.4 (19 November 2024) ============================================================================ 1. Bug fix: eliminate bogus complaint in ashlog file about -z switch. 2. Minor refinements to the tracing logic related to JOBTBL access. ============================================================================ A-Shell Release Notes Version 7.0.1765.3 (18 November 2024) ============================================================================ 1. XTREE refinement: fix problems with the vertical scroll sync mechanism (see 1765.0). Scroll syncing is now automatically bidirectional. (The first scrolling operation on the 'master' tree automatically links the 'slave' tree back to the 'master', unless it was already linked to a third tree.) ============================================================================ A-Shell Release Notes Version 7.0.1765.2 (18 November 2024) ============================================================================ 1. (Windows and ATE) Fine tuning of JOBTBL.SYS-related logic to close some loopholes that were allowing various kinds of inter-job conflicts to occur under conditions of high stress such as rapid launches, active CGI servers, etc. 2. Add time of last access to the JOBTBL.SYS to the job table record to provide a better way (especially under Windows) to detect jobs that have exited without clearing their job table entries. LIT commands that access the job table should be updated, particularly SYSTAT and SEND. (Also, although probably not critical, you should update JOBTBL.SDF and JOBTBL.MAP from the BitBucket repository and recompile any programs using using MX_READJCB / MX_WRITEJCB.) 3. SYSTAT.LIT 3.2(187) now displays the time since the last JOBTBL.SYS access, next to the logged-in time in /W mode. (Times much larger than one minute are indicators of a problem.) ============================================================================ A-Shell Release Notes Version 7.0.1765.1 (13 November 2024) ============================================================================ 1. TCPX / TLS refinement (LINUX) - check for the libashtls.so file in the directory where the ashell executable was loaded from. (Feature added in 1762.0 failed to handle this particular case.) ============================================================================ A-Shell Release Notes Version 7.0.1765.0 (11 November 2024) ============================================================================ 1. XTREE enhancement: image columns can now be 'sorted'. (Since there's no natural order to images, this operation only serves to group the same images together.) 2. XTREE enhancement: the PopupMenu $SRCHxxx functions now include searching the label column in a Property Sheet. 3. XTREE enhancement: add the ability to sync the vertical scroll operation between two parallel trees (one considered the master, the other the slave). When you drag the vertical scroll bar on the master, the slave tree is automatically scrolled along with it. This probably only makes sense with property sheets where the items are logically parallel between the two trees, but have different data types. (Otherwise, you'd probably just join the two trees since each column in a normal tree can have a different type.) To implement, plug the XTR.CTLNO (XTREE control number) of the slave tree, plus one, into the new XTR.SYNCCTLNO field in the XTRCTL structure. (The +1 is required since zero is a valid control number, but it makes more sense to allow the default zero to indicate the feature is not being enabled.) Assuming that you are using the typical auto-assignment technique for control numbers (by pre-initializing XTR.CTLNO to -1), this would require you to create the slave tree first (in order to get its assigned XTR.CTLNO) and then plug that in to the master tree's XTR.CTLNO. The updated XTRCTL map and defstructs can be downloaded from the SOSLIB, but here is the what the tail end of the structure now looks like: map2 FOOTERSTYLE,B,1 ! [138] same XTHSF_xxx flags as HEADERSTYLE (6.3.1537+) map2 COLID,B,1 ! [140] column ID map2 COLTYPEID,B,1 ! [141] column Type ID map2 XDIRTY,B,1 ! [142] exit cell (XROW,XCOL) was changed (i.e. dirty) map2 XDSPROW,B,4 ! [143] display row corresponding to physical XROW map2 FILTERED,B,1 ! [143] =1 if rows have been filtered by user map2 SYNCCTLNO,B,1 ! [144] XTR.CTLNO (+1) of XTREE ctl to sync scroll with map2 UNUSED2,X,3 ! [144] Note that despite the "master/slave" terminology, both trees are fully functional and independent, except for the fact that vertical scroll on the master is replicated to the slave (and not the other way around). Also note that this mechanism isn't going to make a lot of sense for multi-level trees unless both are expanded/contracted in the same way. (The master/slave mechanism is not currently extended to other tree operations besides scrolling; expand/contract and selection are not affected.) 4. XTREE bug fix: the context menu search column function was actually searching all columns in the case where the menu was invoked by right clicking on the column header rather than a cell in the column. 5. XTREE bug fix: PNG and 32 bit BMP images were failing to show up in the tree when neither the XTF_VARY or ImgSiz discrete option specified. ============================================================================ A-Shell Release Notes Version 7.0.1764.3 (31 October 2024) ============================================================================ 1. ATE / APEX bug fix - in some cases it was failing to pick up the license, resulting the unlicensed banner displaying in the middle of the preview. (Problem introduced in 1764.0.) ============================================================================ A-Shell Release Notes Version 7.0.1764.2 (30 October 2024) ============================================================================ 1. Minor refinement to ashlog tracing of LOKSER-related locking conflicts. Now, even without TRACE=LOCKS, lock waits beyond 5 seconds will be logged with progressively longer intervals (hopefully striking a balance between highlighting excessive waits and filling up the log). ============================================================================ A-Shell Release Notes Version 7.0.1764.1 (28 October 2024) ============================================================================ 1. Close loophole in XCALL B64ENC in which a request to encode an empty string was resulting in either an error or a garbage result (due to dueling interpretations of the meaning of the flag parameter being set to 0.) 2. Fix bogus error message in ashlog about invalid switch if -z specified (introduced in 1764.0). 3. CGI refinement: the remote IP address is now included in the ashlog (when either the INOUT or CGI TRACE flags set), making it easier to cross- reference A-Shell launches against the web server access and error logs. ============================================================================ A-Shell Release Notes Version 7.0.1764.0 (22 October 2024) ============================================================================ 1. (UNIX) New command line switch -devate causes A-Shell to use the ATE machine:## identifier (if available) for the unique session device ID, instead of the normal dev:pid (e.g. "pty/1:3424") format. 2. Close some loopholes in the command line switch processing in which invalid switches might cause the launch to fail. Bad switches are now reported to the ashlog. 3. Log messages reported prior to processing the miame.ini now get recorded to the normal %MIAME%/ashlog.log file directory, provided the -i switch has been seen. Previously any such messages would be recorded in an alternate ashlog.log file in the TEMP directory (too easily overlooked). 4. JOBTBL.SYS and QFLOCK.SYS no longer deleted on exit from CGI or background (under Unix) processes. This is a minor performance optimization aimed at systems which may experience a large number of short and possibly unique sessions. (Normally the last job to exit deletes the SYS files and the next job to launch recreates them.) 5. (UNIX) Refinement to the stack trace output to ashlog to use multiple lines (easier to read). 6. ATE / APREX refinement: add logic to detect most cases where garbage output might generate screen chaos related to APEX preview and/or auxiliary port printing. When detected, prompt whether to proceed with printing or cancel. 7. Minor improvement to CGI tracing. ============================================================================ A-Shell Release Notes Version 7.0.1763.3 (16 October 2024) ============================================================================ 1. XTREE bug fix: Multiple ListX / CellListX definitions were causing the list translation to fail. (Problem introduced between 1756.6 and 1757.0) 2. INPUT CSV bug fix: when the LDF or locale used the same character for the decimal point as for CSV delimiters (i.e. comma), inputting a pair of values like "1,2" into numeric variables was setting the first numeric variable to 1 and 2 tenths rather than just 1. (Problem introduced in 1758.2) ============================================================================ A-Shell Release Notes Version 7.0.1763.2 (11 October 2024) ============================================================================ 1. Close race condition loopholes on startup relating to the first job in and last job out creating/destroying the jobtbl.sys and qflock.sys files. In rare cases was resulting in a failed launch becoming a zombie. ============================================================================ A-Shell Release Notes Version 7.0.1763.1 (26 September 2024) ============================================================================ 1. Refinement to the new XTREE RGB Header options added in 1763.0 : In the case of property sheets (XTF2_PROPSHEET), colors can be assigned individually to the row labels by specifying RGBfgRowHeader and RGBbgRowHeader options for different 'column' definitions. Consistent with most other attributes, specifying the RGB--RowHeader options for the zero 'column' sets the default for the subsequent 'column'. (Note that for Property Sheets, the 'column' attributes actually refer to the rows.) The RGB--ColHeader options do not apply to Property Sheets (because the true column headers are not used in that mode.) 2. ISAM-A bug fix / refinement: close an obscure race condition loophole which may have resulted in a bogus error 231 (file index needs rebuilding). 3. TAB() refinement: tab(-1,5) and tab(-1,6) (move one column left or right) now adjusts internal output position so that a subsequent tab(N) outputs the correct number of spaces to arrive at horizontal position N. (Issue mainly occurs in progress or lifesign displays.) 4. Error trapping bug fix: close a loophole resulting in an illegal syntax error triggered by certain combinations of nested error trapping. ============================================================================ A-Shell Release Notes Version 7.0.1763.0 (24 September 2024) ============================================================================ 1. New XTREE Advanced Coldef Options: The following allow you to override the column header color attributes: RGBfgColHeader=r,g,b RGBbgColHeader=r,g,b As with most other column attributes, specifying them for the 0 column establishes the default for the others but can still be overridden at the individual column level. Note that these refer to the "real" column headers (as opposed to the pseudo-headers established by the HdrLines=# option whose colors can be adjusted by the very similar RGBbgHeaders and RGBbgHeaders options.) The following allows you to override the row header color attributes: RGBfgRowHeader=r,g,b RGBbgRowHeader=r,g,b The row headers, however, unlike the column headers, cannot be assigned colors individually. (Regardless of which column you associate the options with, they will affect all of the row headers.) Note that row headers are only visible if the XTR.SHOWROWHDR field is non-zero. For both row and column headers, since they are normally under the stylistic control of the Windows theme system, you have to set XTR.USETHEMES=0 in order for the above options to have an effect. 2. Terminal emulation enhancement: the various blinking TAB(-1,x) attributes are now (some might say "finally?") supported in A-Shell/Windows and ATE. ============================================================================ A-Shell Release Notes Version 7.0.1762.10 (21 September 2024) ============================================================================ 1. XTREE property sheet bug fix: the compound coldef code "@@" intended to enable use of the left/right arrow keys to expand/contract levels was conflicting with the "@@" intended to indicate level 2 in a multi-level property sheet. ("@@@" was acting like level 2, "@@@@ was level 3, etc.. rather than as documented.) To resolve the conflict, if XTF2_PROPSHEET is specified, the level 2 meaning of "@@" overrides the left/right arrow meaning of it. As a workaround, the left/right arrow feature in a multi-level property sheet is now dependent on whether the XTF_LEFT and XTF_RIGHT flags are set. If neither flag is set, then left/right arrows act as expand/contract (i.e. equivalent to "@@" in a non-property sheet tree). ============================================================================ A-Shell Release Notes Version 7.0.1762.9 (20 September 2024) ============================================================================ 1. Further GDI printing refinement: all of the //TEXTxxxx directives now support multi-line continuation of the trailing text parameter by ending the line with \. For example... //TEXTOUT,100,200,Now is the time for all good \ programmers to get coding. ... is now treated like... //TEXTOUT,100,200,Now is the time for all good programmers to get coding. It's probably not that valuable for //TEXTOUT, but for //TEXTRECTANGLE (syntax 2) it could be useful to avoid very long lines in your source document, e.g. //TEXTRECTANGLE,5,10,700,400,La cigale, ayant chanté tout l'ête, \ se trouva fort depourvu quand la bise fut venu... Note that the intepretation of the trailing backslash as a continuation is disabled if the first character on the next line is a forward slash (as in a //GDI directive). Another way to force a trailing backslash to be treated literally would be to enclose the entire text param in quotes, e.g. //TEXTCENTER,10,50,100,200,"This is a literal backslash --\" (For the GDI commands which have the text parameter last, quoting is not otherwise necessary to avoid commas being treated as delimiters.) 2. VUE 3.2(383) refinements: - Comments and unrecognized commands in INI.VUE are now highlighted as such when using the /T switch. (Unrecognized commands continue to be ignored, or treated as comments, so this is the only way to make sure that your commands are actually being recognized.) - The screen layout (row and columns) is now properly restored on exit. This was always partially true, but previously only widths 80 and 132 were supported, so if you started with say, 100, on exit you would end up with 132 columns. - HLP:VUE.HLV has been cleaned up and updated. ============================================================================ A-Shell Release Notes Version 7.0.1762.8 (18 September 2024) ============================================================================ 1. Minor GDI printing refinement: //TEXTRECTANGLE,left,top,right,bottom,flags now treated as equivalent to the multi-line syntax 1, i.e. //TEXTRECTANGLE,left,top,right,bottom instead of as the single-line syntax 2, i.e. //TEXTRECTANGLE,left,top,right,bottom,flags,"" Although the 5 parameter version was always incorrect, at some point in the past it acted like the multi-line syntax 1 and then later changed, breaking some GDI reports after an update from 6.4 to 7.0. ============================================================================ A-Shell Release Notes Version 7.0.1762.7 (17 September 2024) ============================================================================ 1. Add XCALL TBOX and XCALL USRTBL back into the build (dropped awhile back, erroneously thinking they were no longer in use). ============================================================================ A-Shell Release Notes Version 7.0.1762.6 (10 September 2024) ============================================================================ 1. Fix spurious XTREE invalid tree error if an explicit xtr.CTLNO specified when creating a tree that is greater than the current maximum # trees. ============================================================================ A-Shell Release Notes Version 7.0.1762.5 (09 September 2024) ============================================================================ 1. Fix memory allocation failure problem when expanding the number of simultaneous XTREE controls beyond three. ============================================================================ A-Shell Release Notes Version 7.0.1762.4 (05 September 2024) ============================================================================ 1. Fix premature gridmap iteration termination bug (introduced in 1762.3) 2. Close infinite loop loophole when iterating an empty gridmap. ============================================================================ A-Shell Release Notes Version 7.0.1762.3 (04 September 2024) ============================================================================ 1. LIBXL 4.4.0 library update. (Mostly obscure bug fixes) 2. MLIST-related bug fix (introduced in 1762.1) ============================================================================ A-Shell Release Notes Version 7.0.1762.2 (30 August 2024) ============================================================================ 1. -uo launchname switch now works under Linux. (Previously it was only working under Windows.) ============================================================================ A-Shell Release Notes Version 7.0.1762.1 (26 August 2024) ============================================================================ 1. Fix DIMX-related segmentation fault error introduced in 1760.0 2. Minor improvement in assignment statement performance. ============================================================================ A-Shell Release Notes Version 7.0.1762.0 (25 August 2024) ============================================================================ 1. (Linux) Refinement to dynamic library loading : it now looks first in the directory where the ashell executable was loaded from. If the target library not found there, it reverts to the system default (based on /etc/ld.so.cache). This eliminates the growing confusion over where the library symlinks need to be stored (which varies between distributions and architectures). 2. MX_ASHFILE enhancement: new ashexedir parameter added to facilitate retrieving the A-Shell executable directory: xcall MIAMEX, MX_ASHFILE, startcmd {,ashfile, ashexe, ashexedir} Note that in the Windows environment, the ashexe parameter will usually contain the full A-Shell executable filespec from which you could extract the directory. But in the Linux environment, the ashexe parameter will contain only the first token on the command line (typically just 'ashell' or possibly a partial relative path), leaving the new ashexedir parameter as the only reliable way to determine where the executable was launched from. 3. Parameter passing refinement: it is now possible to pass an un-DIMXed array received via a .NULL initialization within a function to another function. To illustrate, the following code calls a function without passing the expected array parameter. But the function declaration defaults the array to .NULL, which effectively treats the array as if un-DIMXed. It then passes it to fn'two(), which also treats it as un-DIMXed. Previously the call from fn'one() to fn'two() would have generated an error. Note that this technique is only useful if you test the extent of the received array before attempting to access it, since any such access will generate an undimensioned array error. call fn'one() ... function fn'one(ary1()=.NULL as ST_1) ? "Extent of ary1() = "; .extent(ary1()) ! -1 call fn'two(ary2()=ary1()) endfunction function fn'two(ary2()=.NULL as ST_1) ? "Extent of ary2() = "; .extent(ary2()) ! -1 endfunction 4. Performance refinement: Eliminate some overhead in the variable access routine that was introduced in 7.0.1756.9 during some code refactoring that was resulting in about a 25% slowdown in that particular function. The effect was modest in most programs, but was quite pronounced in programs using tight loops with many iterations. ============================================================================ A-Shell Release Notes Version 7.0.1761.3 (22 August 2024) ============================================================================ 1. XTREE bug fixes related to filtering, sorting, and editable cell prefix codes. 2. Minor improvements (tracing, error detection) in the CGI support. 3. Internal refinement to functions that strip non-numeric characters from numeric fields prior to editing or converting them from string to numeric format: now supports the LOCALE definition (for decimal point and thousands separator) in cases where the LDF is not applicable. ============================================================================ A-Shell Release Notes Version 7.0.1761.2 (25 July 2024) ============================================================================ 1. XTREE bug fix: XTREEs were getting unregistered at the end of a program (including SBXs) leading to spurious invalid XTREE control errors when re-entering an XTREE. 2. XCALL XMATCH bug fix: wasn't working properly in 64 bit architecture. ============================================================================ A-Shell Release Notes Version 7.0.1761.1 (05 July 2024) ============================================================================ 1. Minor enhancement to XCALL XSTRIP - new opcode 9 combines the action of opcodes 4 (strip leading characters) and 5 (strip trailing characters) to make it a simpler alternative to XCALL TRIM when you want to strip something other than space as TABs. ============================================================================ A-Shell Release Notes Version 7.0.1761.0 (02 July 2024) ============================================================================ 1. XCALL AMOS renamed to XCALL ASHELL. Old name remains in effect but is now deprecated. (The old name was confusing to developers not porting from AMOS. The new name is meant to reflect the idea that the XCALL allows execution of A-Shell commands as if from the command prompt.) Note that any existing ALIAS directives specifying either AMOS or ASHELL as the source (i.e. 'from') name will continue to work as expected. If you have an existing ASHELL.SBX, you'll need to add an ALIAS=ASHELL, directive, but the can remain ASHELL, in which case you'll have to continue to use XCALL AMOS to execute A-Shell commands. (Otherwise rename your ASHELL.SBX and put the new name in the ALIAS.) 2. MIAME.INI directive SBR=ASHELL_RUNSBR now recognized as equivalent to the old (now deprecated) SBR=AMOS_RUNSBR. See prior change above for details. 3. XCALL NOP added. As the name suggests, it does nothing, mainly serving as a useful target for ALIAS directives to effectively disable an existing XCALL that maybe be embedded in your code but no longer serves any purpose. As with the XCALL ASHELL case above, if by some curiosity you use a NOP.SBX that actually does something, you'll need to create an ALIAS=NOP, where can be NOP (to preserve your version of NOP) or an alternate name (in which case rename your existing NOP.SBX). 4. ASHNET.DLL 1.14.197 update - Update the manifest to resolve an issue where the DLL load would fail due to a manifest-related conflict with some other module. Note that Linux version number also updated to 197 for consistency, although the manifest issue doesn't apply there, making 196 and 197 essentially identical. 5. APPEND.LIT 2.2(119) fixes a failure to properly parse command lines containing files with [p,pn] components. Introduced in 2.2(117). 6. XCALL USPSBS included in the -EL9 release (previously was only in -EL7). ============================================================================ A-Shell Release Notes Version 7.0.1760.0 (11 June 2024) ============================================================================ 1. (ATE) ASHNET2.DLL 2.6.213 introduces preliminary support for two-factor authentication. Requires ASHNET2.DLL 2.6.213+ and ATECFX.SBX 4.4(185)+ on the ATE client side, and a package on the server that interfaces with an external authenticator app on the client. (As of this release it has only been tested with CentOS/RHEL 7 and the google-authenticator app.) To enable on ATE client side, check the new MFA option, plus the Login Dialog option, in Login panel of the ATE configuration dialog. This will pop up a dialog prior to attempting the connection where you can enter the verification code (mostly likely from a smart-phone app), which will then be passed to the authentication app on the server side. 2. ASHNET2.DLL 2.6.214 generalizes the two-factor authentication support introduced in 2.6.213 to be more compatible with different language/locales and different authentication packages. 3. MX_PWCRYPT bug fix: mode 3 encryption was broken in 1759. ============================================================================ A-Shell Release Notes Version 7.0.1759.2 (06 June 2024) ============================================================================ 1. 64 bit bug fix: XCALL JSON was crashing with SEGV. 2. ASHNET.DLL / libashnet.so 1.14.196 update - OAUTH2 bug fix: <\003> clause in refresh'token$ wasn't working. ============================================================================ A-Shell Release Notes Version 7.0.1759.1 (21 May 2024) ============================================================================ 1. XCALL aliasing refinement: you can now redirect an internal XCALL routine to an external (SBX) equivalent of the same name by specifying the same name for both parts of the ALIAS directive, e.g.: ALIAS=ABC123,ABC123 ; redirect XCALL ABC123 (internal) to ABC123.SBX ============================================================================ A-Shell Release Notes Version 7.0.1759.0 (20 May 2024) ============================================================================ 1. New MIAMEX function MX_LOCALE (205) provides a convenient way to query the native OS locale information (as opposed to the A-Shell locale set via the LANGUAGE parameter in the MIAME.INI and queried via XCALL GTLANG). Intended to be helpful when debugging the confusing situation that can occur when either A-Shell or the native OS is using the period as a thousands separator and/or the comma as the decimal point. Syntax: xcall MIAMEX, MX_LOCALE, op, attrid, value, status Params: op (integer) [in] operation: 0=get (no other options currently supported) attrid (string) [in] - attribute to get: "dec" = decimal point character, "tsp" - thousands separator character value (string) [in/out] - value of attribute status (signed integer) [out] - returns 0 for ok, else error # 2. Minor internal refactoring and consolidation of the string-to-number functions involved in INPUT and expression evaluation. 3. XCALL OAUTH2 enhancement: new optional parameter add'param allows specification of additional authorization or token query parameters (required by some services). New syntax: xcall OAUTH2, opcode, status, clientid$, clientsecret$, option, & auth'endpoint$, token'endpoint$, challenge$, scope$, refresh'token$, & response$, handle, stsmsg$ {,file {,add'param}} add'param (string) [in] should be in the form of a comma-delimited list of name=value pairs, e.g. "token_access_type=offline,foo=bar" Note: requires ashnet 1.14.195 or higher. 4. ASHNET.DLL / libashnet.so 1.14.195 update - Add optional parameter add'param to OAUTH2 5. XCALL XENTER bug fix: remove complaint if no parameter passed (introduced in 7.0.1754.0). ============================================================================ A-Shell Release Notes Version 7.0.1758.1 (02 May 2024) ============================================================================ 1. Fix 32 bit limit on file offsets (ironically affected only 64 bit platforms). ============================================================================ A-Shell Release Notes Version 7.0.1758.0 (29 April 2024) ============================================================================ 1. XTREE enhancement: new cformat code "HH" acts like "H" (hide column) but only if the column is empty (if string) or zero (if numeric). Note that the logic supporting this is tied to the data (rather than answer) array load operation. So adding data to the answer array for a previously hidden HH column and and re-entering with XTROP_RESELECT will not cause cause the column to become visible. But adding it to the data array and re-entering with XTROP_REPLACE should reevaluate the column to determine if it should become visible. ============================================================================ A-Shell Release Notes Version 7.0.1757.6 (29 April 2024) ============================================================================ 1. XCALL SBX bug fix: a tiny subset of SBX names (mainly those with names matching ????65) were getting treated as null routines. ============================================================================ A-Shell Release Notes Version 7.0.1757.5 (24 April 2024) ============================================================================ 1. Compiler bug fix (edit 1045) - ++IFDEF was not working properly during the /px pre-scan, resulting in spurious "function not defined" errors if the target function was dependent on such a conditional. 2. Compiler refinement (edit 1046) - add some performance statistics to the end of the LSX file. ============================================================================ A-Shell Release Notes Version 7.0.1757.4 (22 April 2024) ============================================================================ 1. FTP2 bug fix: XFTP2_RENAME, XFTP2_DEL and XTF2_RMVEXT opcodes were not working properly. (Introduced around 1754.) ============================================================================ A-Shell Release Notes Version 7.0.1757.3 (21 April 2024) ============================================================================ 1. Compatibility fix for FTPDLX / FTP2 problem introduced in 1754.3 when FTPDLX was mapped to FTP2. FTP2 returns the number of files transfered on success (1 for the typical single file case), whereas FTPDLX returned 0, creating a problem for applications testing the returned status for <> 0. Now FTP2 returns 0 for success if it was called as FTPDLX (matching the old routine's behavior). 2. Refinement to the SPACE() function: remove the 64K limitation on the length of the returned string. SPACE(n) now maps to FILL$(chr(32),n); it's theoretical maximum length is 2GB. 3. Optimize the FILL$() function: achieve a 10x improvement when used with single-character patterns (not that anyone will notice!) 4. Add additional tests for invalid pointers to close some potential loopholes for crashes related to operations on collections and XTREE/ATE. 5. libashnet.so.1.14.193 update - fixes an internal function linking failure caused by some internal updating of common functions in A-Shell 7.0.1757.3. libashnet.so no longer contains dynamic links back to the ashell executable (so this update will work with older ashell executables, but not the other way around). Problem did not affect Windows DLL version. 6. ASHNET.DLL / libashnet.so 1.14.194 update - FTP2: fix issue with attempt to create remote directory would return a failure code if the directory already existed. - SFTP: fixed failure when client and server selected ssh-dss algorithm - HTTP: fix TLS 1.3 session resumption issue ============================================================================ A-Shell Release Notes Version 7.0.1757.2 (07 April 2024) ============================================================================ 1. XTREE bug fix: date sorting was using DMY format in some cases where it should have been MDY. (Introduced in 1757.0) 2. Tracing refinements: - Add ashlog messages "Suspend", "Resume", "Open Lid" and "Close Lid" for Windows to track power-related events. (Requires TRACE=INOUT). - Add "Demo mode warning" ashlog message, logged when the Demo Mode warning is displayed. ============================================================================ A-Shell Release Notes Version 7.0.1757.1 (22 March 2024) ============================================================================ 1. Stack trace bug fix: XCALL AMOS sequences were corrupting the call trace stack, resulting in "stack trace buffer corrupted" messages in the ashlog. (The problem didn't affect operations other than RUNPROF.LIT.) 2. RUNPROF.LIT 1.1(115) update - several bug fixes, varous refinements to the output format. ============================================================================ A-Shell Release Notes Version 7.0.1757.0 (21 March 2024) ============================================================================ 1. ASHMONTHCAL control enhancement: you can now set various color attributes for the control. To begin, you must first create the control with the MBF2_NOTHEME bit set (otherwise colors are controlled by the Windows theme). Then, after creating the control, set individual color attributes using the same general technique as for setting date range and day states, i.e. via a control string sent in the ctext$ parameter with the cstate parameter set to MBST_TEXTONLY: xcall AUI, AUI_CONTROL, CTLOP_CHG, ctlid, ctext$, MBST_TEXTONLY where ctext$ should set to the an attribute name string followed by a colon followed by hex representation for the blue, green and red color values, e.g. AttributeID:&hbbggrr The available attributes for which colors can be set are as follows (not case sensitive): AttributeID Description ------------------- ------------------------------------------------- SETCOLOR_BACKGROUND Background (area outside the calendars but inside the control borders) SETCOLOR_MONTHBK Background for the calendar(s) SETCOLOR_TEXT Color of the text within a month (days) SETCOLOR_TITLEBK Background of the title area SETCOLOR_TITLETEXT Title text color SETCOLOR_HDRTRAILINGTEXT Text color for the display header day and trailing day text (leading and trailing days from previous and following months) Example: ctext$ = "SETCOLOR_MONTHBK:&heecc88" xcall AUI, AUI_CONTROL, CTLOP_CHG, ctlid, ctext$, MBST_TEXTONLY 2. ASHNET2.DLL 2.5.212 update to component / dependent libraries: - ZLIB 1.3.1 (up from 1.2.11) - LIBSSH2 1.11.0 (up from 1.9.0); - OpenSSL retired; replaced with Windows native backend WinCNG 3. ASHNET.DLL 1.14.192 update - FTP2 fix for issue with servers that issue an intermediate 150 response indicating a delay for anti-virus scanning. - FTP2 XFTPF_RENAME no longer invalidates the cached directory contents (eliminating a directory reload for a slight performance improvement). - FTP2 safeguard added to block an empty string from matching all files in a wildcard delete operation. (Now returns an error.) - SFTP mitigation of SSH Terrapin Attack by adjusting the availability of of the supported SSH algorithms. 4. XCALL GET enhancement: new bit option (&h02) defined for the flags parameter to strip LF from input when preceded by a CR. (Maybe be useful when receiving character streams from Windows clients.) 5. New system parameter option SBR=GET_CRNL2CR automatically sets the &h02 flag in XCALL GET (see above). 6. XCALL SBX bug fix: close a gap in the lookup routine causing about 0.4% of the possible SBX names to fail to execute. 7. XTREE - various bug fixes ... - Changing a checkbox or radiobox cell from a numeric value to a " " was failing to remove the empty box. - Certain combinations of autofilter and either cell colors or the "P" code were resulting in a data shift in those columns on re-entering the tree. - Autofilter was conflicting with split mode, resulting in a crash on exit from the tree. - Row colors were over-riding RGBbg# colors on re-entry. - Some column widths (set by Dspwid) were getting increased during re-entry, resulting in an unnecessary horizontal scroll bar. 8. AUI bug fix: dialog sizes saved and restored by MBF2_DLGSTATE were in some cases shrinking by a few pixels each time. ============================================================================ A-Shell Release Notes Version 7.0.1756.5 (01 March 2024) ============================================================================ 1. XCALL STRIP bug fix: starting in 7.0.1754.0, it began removing all trailing characters from ASCII 1 to 32. It now removes just spaces and tabs. 2. (64 bit Linux) LOKSER-style file locking was incorrectly being limited to 32 bit offsets; it now accesses the full range up to 64 bits. As part of this fix, the LOCK traces now show the offset values in hex to make them easier to read. 3. INMEMO compatibility fix: the minimum allowed number of parameters has been reduced from 10 (established in 7.0.1754.0) to 9, recognizing that the VSPEC (10th) parameter has always been optional (defaulting to 100 rows by 132 less the starting column columns). 4. CSV2XL.SBX 2.2(294) & 2.2(295) optimization: significantly reduce memory requirements for complex and/or large spreadsheets with a lot of cells or rows with non-generic formatting. The resulting XLS/XLSX files are now slightly smaller, but more importantly require much less memory to build and to display. (In some larger files, this will make the difference between CSV2XL crashing during the generation and now working.) 5. XTREE refinement: quadruple the amount of storage area reserved for the Advanced Coldef Option 'Data'. (In response to the error "Exceeded maximum storage for xtree data...".) ============================================================================ A-Shell Release Notes Version 7.0.1756.4 (26 February 2024) ============================================================================ 1.(Windows) Bug fix: Reinstate XCALL RXTERM (which was accidentally removed from the XCALL table in 7.0.1754). ============================================================================ A-Shell Release Notes Version 7.0.1756.3 (25 February 2024) ============================================================================ 1. VUE 3.2(381) bug fix: creating a new file and then using Quit to exit was leaving a one byte file on disk. It now leaves nothing behind. 2. VUE 3.2(381) enhancement: new INI.VUE option: SAVEBAK = When set to TRUE, each SAVE operation (whether explicit or triggered by the AUTOSAVE feature) starts by copying the file being edited to the .BAK file prior to the SAVE operation. The default is FALSE (traditional behavior) in which the SAVE operation does not affect the .BAK file. 3. INIX.SBX 5.1(523) bug fix: - Edit 522 was trimming off control leading and trailing control characters from the returned value, which could be a problem if retrieving encrypted values. Edit 523 changes that to just trimming spaces and tabs. ============================================================================ A-Shell Release Notes Version 7.0.1756.2 (20 February 2024) ============================================================================ 1. (Linux/64) Bug Fix: XCALL ITC (used by SEND, JSTAT, FORCE, etc.) wasn't working properly in the A-Shell 64 bit environment. ============================================================================ A-Shell Release Notes Version 7.0.1756.1 (20 February 2024) ============================================================================ 1. Compiler bug fix (edit 1044) - With the /X:2 switch, an OPEN statement whose RECNO variable was the last variable MAPped was generating a spurious illegal variable size error. 2. (Linux) Command line switch bug fix: the -j switch was not working properly if the jobname evaluated to a 5 character string plus a trailing "%" character, i.e. -j $JACKM% 3. QUTL.LIT 3.1(135) fixes bug in the ZAP function whereby it was not accepting an explicitly typed jobname. (Selecting the job from the pick list worked as expected.) ============================================================================ A-Shell Release Notes Version 7.0.1756.0 (19 February 2024) ============================================================================ 1. MX_COMPIL enhancement: add new parameter memreq to allow routine to request an amount of memory for the compiler that is larger than the current memory partition. New syntax: xcall MIAMEX, MX_COMPIL, filename,switches{,defbuf,vcpatter,status,memreq} Where memreq, if specified, is the number of bytes (not Kilo or Mega) requested. Request only has an effect if it exceeds the amount of memory currently allocated and available to the job. 2. Language enhancement (compiler edit 1043): New statement: EXITPROGRAM exits directly from a function or procedure, regardless of how nested, to a special label $EXITPROGRAM: in the main program (or to the END if the $EXITPROGRAM label doesn't exist). Although this is effectively an unstructured GOTO, it handles the stack cleanup and provides an solution to the problem of how percolate the desire for a program exit up from a nested function to the top level. The EXITPROGRAM token can also be used in a RESUME statement in place of EXITFUNCTION, EXITPROCEDURE, or $EXIT... RESUME EXITPROGRAM {WITH_ERROR {N}} RESUME $EXITPROGRAM {WITH_ERROR {N}} ! (equivalent) 3. Bug fix: the .MONTH dot variable was always returning English month abbreviations (rather than those defined in the LDF). 4. (Windows) Technical adjustment to the ashw32.exe manifest to eliminate the spurious Windows Event Log side-by-side errors referencing conflicting architecture versions of the common controls. ============================================================================ A-Shell Release Notes Version 7.0.1755.0 (10 February 2024) ============================================================================ 1. Windows 11 Printing Refinement: A-Shell/Windows and ATE now force Windows to use the traditional print dialog rather than the newfangled Windows 11 version (which isn't well suited to our purposes). 2. XCALL MSGBOX bug fix: close a GPF loophole if 4 or more long tooltips specified. 3. XTREE bug fix: in trees with multiple editable date picker cells, in some cases the second cell edited would pick up the first cell's date. 4. EMAILX.SBX 7.0(147) refinements: - Attachment names now appear in their original case (previous were folded lower case which may have triggered some spam filters). - The RTNADDR directive and FROM parameters can now include descriptive names, for example: (in the CFG file)... RTNADDR = MicroSabio HQ or as a parameter... FROM = White House (Previously, only unadorned name@domain addresses were supported.) 5. EMAIL.SBX 7.0(148) refinement: a descriptive name included in the 'from' parameter or RTNADDR configuration file directive will now appear in the header seen by the recipient, if no explicit "From:" clause is included in the XCALL 'header' parameter. (Previously, if not specified explicitly, the recipient would see only the unadorned version of the 'from' address, e.g. name@domain.) 6. INIX.SBX 5.1(522) enhancements: - Files without [sections] supported (set 'section' parameter to ""). - Spaces and tabs are now allowed between the item key and the "=". (Value returned on read operation will be trimmed of leading/trailing spaces and tabs.) 7. APPEND.LIT 2.2(118) - remove spurious 'Invalid Command' message prior to the /? help display. 8. CREATE.LIT 1.0(103) - add /? help support. 9. DING.LIT 1.0(101) - add /? help support. 10. ISMUTL.LIT 1.4(145) - fix help display (as missing /W) 11. ABOUT.LIT 2.2(112) - minor aesthetic adjustments to the layout. 12. CSV2XL.SBX 2.2(293) - refinement to avoid splitting a quoted field on an embedded delimiter if the field also contains pairs of matching nested quotes, e.g. "Arny "Guv" Schwarz, Esq.", ... ============================================================================ A-Shell Release Notes Version 7.0.1754.3 (29 January 2024) ============================================================================ 1. Drop support for the (long deprecated, now obsolete) FTPDLX COM XCALL and redirect XCALL FTPDLX to XCALL FTP2. No compatibility issues expected although any code using the old FTPDLX should probably be updated and retested. 2. COM XCALL bug fix: string arguments passed to COM XCALLs without a trailing null were appearing to the target as if concatenated to the next variable in memory. (This wasn't a problem for FTPDLX whose parameters are naturally variable length, but could have been a problem for some ADO calls referencing fields within a structure.) 3. Tracing refinement: the INOUT trace now appends "/64" to the version traced in the launch trace for 64 bit versions, e.g. A-Shell 7.0.1754.3/64 launched on pts/0:5117 by ashell 4. INFLD/GUI click handler bug fix: On some 64 bit platforms, a FUNMAP value of -1 was getting corrupted due to a sign-extension inconsistancy, resulting in some click events (those producing negative exitcodes) being ignored. ============================================================================ A-Shell Release Notes Version 7.0.1754.2 (28 January 2024) ============================================================================ 1. COM XCALL interface adjustment to restore compatibility with XCALL ADO (broken early in 5.1). ============================================================================ A-Shell Release Notes Version 7.0.1754.1 (24 January 2024) ============================================================================ 1. XTREE bug fix: close loophole whereby the header checkbox in a T++ column, particularly in the first position, might act as if disabled until another header button was clicked. 2. XCALL STRIP / TRIM bug fix: they were both erroneously removing control characters as well as spaces (problem introduced in 1754.0). ============================================================================ A-Shell Release Notes Version 7.0.1754.0 (23 January 2024) ============================================================================ 1. New MIAME.INI directive to fine-tune XCALL tracing: NOTRACE=name1,name2,... The NOTRACE directive disables specific traces that have been more generally enabled. Initially it only supports XCALL traces, so if TRACE=XCALL (either in the MIAME.INI or at run time via the SET command or system message window), the names listed in the NOTRACE directive will still not be traced. You may have any number of NOTRACE statements, and each one can have one or more XCALL names listed, but they must be comma-delimited, with no spaces. For example: NOTRACE=TRIM,FILL,MIAMEX,STRIP 2. Internal reorganization of the XCALL dispatcher logic to achieve an approximate 20% improvement in the performance overhead. (Probably not even measurable except for routines called at high frequency, perhaps STRIP, FILL, TRIM, etc.) 3. Close several potential segmentation fault loopholes related to XCALLs without providing a sufficient number of parameters. All XCALLs with a mandatory parameter should now display an explicit error message if not satisfied. 4. (Windows) Remove the COM interface dependency on the COM license bit. ============================================================================ A-Shell Release Notes Version 7.0.1753.5 (12 January 2024) ============================================================================ 1. Bug fix: ordmap iteration with a purely numeric starting key was failing. ============================================================================ A-Shell Release Notes Version 7.0.1753.4 (12 January 2024) ============================================================================ NOTE: the 7.0.1753.3 version resource indicated 1753.9 instead of 1753.3 (due to a typo); this will lead to a confusing request in the updater to confirm that you want to downgrade. Just say yes. 1. Bug fix: Adjust XCALL EXTRAI for change in XCALL handling of F6 params (introduced in 6.5.1628). 2. Bug fix: XCALL LIBRE was returning values 512x too small (due to confusion between blocks and bytes.) ============================================================================ A-Shell Release Notes Version 7.0.1753.3 (09 January 2024) ============================================================================ 1. PDFX refinement: workaround problem with //SETBRUSH HATCH mode lines being too dark as rendered by the PDF-XChange Standard (PDFX9) driver by converting it to a solid shaded background when outputing to that printer driver. 2. DIR.LIT 3.4(175) bug fix: the page breaking with /W/P was off by one file. ============================================================================ A-Shell Release Notes Version 7.0.1753.2 (06 January 2024) ============================================================================ 1. FTP2 refinement: GET operation now manually replicates the file.ext from the hostfile parameter if the localpath parameter doesn't contain one, eliminating one obstacle to switching from FTPDLX to FTP2. (In most cases, the file.ext defaulting is handled by the FTP/SFTP service anyway, but there are scenarios, particularly with SFTP, where FTP2 was failing due to lack of an explicit file.ext in the localpath.) 2. FTPDLX bug fix: resolve "Error pinging COM subroutine FTPDLX.SBR" error. (Problem was introduced somewhere during the introduction of support for 64 bit and/or the 6.5/7.0 version transition.) 3. ZTXFER.LIT 1.4(110) refinement: /2 mode (FTP vs FTPDLX) is now the default. To force FTPDLX mode, a new /1 switch has been added. 4. ZTXFER.LIT 1.4(111) bug fix: wildcard transfers were incorrectly reverting to FTPDLX mode. (Note that due to legacy compatibility restraints, the AG_FTP command used by ZTXFER only reports success or failure and thus cannot report the number of wildcard files transfered.) 5. AG_FTP bug fix: in FTP2 mode, it was confusingly reporting wildcard transfers as if an error had occurred (due to the non-zero return status), even though it correctly listed the files transferred. ============================================================================ A-Shell Release Notes Version 7.0.1753.1 (23 December 2023) ============================================================================ 1. 64-bit date processing bug fix. (Problem only appeared on CentOS 8, but might have caused subtle problems on other platforms.) 2. 64-bit adjustment to filidx parameter used by both XTREE and MX_FILEPOS. 3. DO file enhancement -- DO.LIT/MDO.LIT 2.1(129) -- support for new $ variables: $MMDDYY{+/-##} $DDMMYY{+/-##} $YYMMDD{+/-##} Each of these evaluates to current date in the specified format, with an optional +/- days adjustment. For example, if today was December 1, 2023, then: $MMDDYY equals 120123 $MMDDYY+15 equals 121623 $DDMMYY equals 011223 $DDMMYY-1 equals 301123 $YYMMDD equals 231201 $YYMMDD+32 equals 240101 ============================================================================ A-Shell Release Notes Version 7.0.1753.0 (20 December 2023) ============================================================================ 1. Job status tracking refinement - add current SBX name to the job control block (taking the last 10 bytes from the end of the message field), allowing utilities such as JSTAT.LIT to be able to see the currently executing SBX in another job. 2. JSTAT.LIT 3.3(114) enhancement - - add the current SBX (if applicable) to the display. 3. INSTR() refinement - add new MIAME.INI directive to completely disable the possibility of a single-character pattern in INSTR(pos,subj,ptn,flags) being misinterpreted by the regular expression processor as a pre-compiled pattern: OPTIONS = NOINSTRX_PCP ; No INSTR precompiled patterns Note that the issue was previously dealt with in 1752.4 which limited the range of possible precompiled pattern numbers to just five (ASCII 1 thru 5), and also introduced the PCREX_NOT_PRECOMPILED flag. This new option is mainly a convenience for developers who have a large number of INSTR() calls with externally supplied patterns and never user precompiled patterns (at least not with INSTR()), and want to completely eliminate all possibility of confusion, without having to review or recompile all of their code. Also note that this does not affect the ability to use precompiled patterns in explicit XCALL REGEX or XCALL REGEX2 calls. (And does not interfere with the transclude feature which relies heavily on precompiled patterns.) ============================================================================ A-Shell Release Notes Version 7.0.1752.5 (13 December 2023) ============================================================================ 1. Compiler (edit 1042) refinements: - Extend the 1041 edit to treat all case variations of a variable named DATN (datn, DatN, etc.) in a MAP statement, whether scalar or array, as entirely disabling recognition of the double-arctangent function (i.e. reverting entirely to the behavior before that function was introduced). - Compiler now complains about INPUT statements targeting an array or a gridmap that are missing the CSV token. Previously a statement like: INPUT #CH, ARY() was accepted and would work, but not necessarily in the way expected, leading to tricky-to-recognize bugs. (INPUT CSV is essentially a variation of INPUT LINE, meaning that each statement consumes one line of the file, regardless of whether there were more or fewer fields than expected or if the line ends with a comma.) 2. AUI bug fix - close a loophole resulting in failure of some GUI screens involving both TABX and MBF2_DLGNOCAP controls to properly restore from the minimized state. ============================================================================ A-Shell Release Notes Version 7.0.1752.4 (08 December 2023) ============================================================================ 1. Add REGEX flag PCREX_NOT_PRECOMPILED (&h08000000) to eliminate the ambiguity when passing a single-byte pattern to INSTR() or REGEX.SBR as to whether it represents a normal pattern or a previously precompiled pattern #. 2. INSTR(spos,subject,pattern,flags) now automatically assumes PCREX_NOT_PRECOMPILED unless the pattern is a single byte whose ASCII value is between 1 and 5. (This allows up to 5 pre-compiled patterns while minimizing the likelihood of accidentally confusing a normal pattern with a precompiled one. ============================================================================ A-Shell Release Notes Version 7.0.1752.3 (05 December 2023) ============================================================================ 1. MX_GTOCT bug fix: was working only for values up to 31 bits, after which it was returning negative or other wrapped-around values. Now works up to 63 bits. ============================================================================ A-Shell Release Notes Version 7.0.1752.2 (04 December 2023) ============================================================================ 1. MX_SINK, AG_SINKFIELD / AG_UNSINKFIELD bug fix: coordinates now match the documentation. 2. MX_OSVER / AG_OSVER bug fix: was previously reporting Windows 10 and 11 as "Win8". 3. Fix bad pointer reference in the error handler for failed FTP calls. 4. Compiler refinement (edit 1041): DATN is no longer treated as a keyword (double arctangent function) if it appears in a MAP statement first. ============================================================================ A-Shell Release Notes Version 7.0.1752.1 (24 November 2023) ============================================================================ 1. TABX display bug fixes - MBST_SAVRES feature was failing to restore certain nested controls, such as children of groupboxes, MBF2_DLGNOCAP panels and nested TABX controls. - Resizing the window wasn't properly resizing all of the controls. Note that for resizing of TABX controls to work reliably, make sure to use the two-step panel switch sequence (CTLOP_CLR on the 'from' panel, then CTLOP_PANE on the 'to' panel). 2. PDFX / Email refinement: support OAUTH2 authentication in PDFX Email Method 4. Use the access token (obtained independently by your application, probably using XCALL OAUTH2) in the Email.SMTP.Password directive, preceded by the prefix "[oauth2]", for example: //PDFX,Email.SMTP.Password,[oauth2]ya29.a0AfB_byBunmfPUnJuV0XI5i... Note that this also requires ASNHET.DLL (or libashnet.so) 1.14.191; see below. 3. ASHNET.DLL (Windows) and libashnet.so (Linux) 1.14.191 updated to support OAUTH2 authentication in PDFX Email Method 4, identified by the "[oauth2]" prefix on the password (see above). The update also fixes an issue with Email attachments when the file spec contained both forward and backward slashes. ============================================================================ A-Shell Release Notes Version 7.0.1752.0 (16 November 2023) ============================================================================ 1. Remove 'Beta' from the program title. 2. Extend the FOREACH enhancement (see 1751.0 below) to GRIDMAPs to simplify iterating across a single row; especially useful with the (int;varstr;varstr) variation. Examples: DIMX $GRIDI, GRIDMAP(int;varstr;varstr) ... FOREACH $$i in $GRIDI(3,3) ! iterate across row 3 FOREACH $$i in $GRIDI(SROW,EROW) ! iterate across row #'s SROW to EROW FOREACH $$i in $GRIDI(SROW) ! iterate from row # SROW thru last row 3. ASQL bug fixes to the ODBC connector: libashodbc.dll libashodbc.so.1.6.122 - Close a loophole that was leading to memory corruption in certain FETCH sequences involving more than 32 fields: - SQLOP_GET_STMATR, SQLOP_GET_CONNATR and SQLOP_SET_CONNATR weren't working properly. ============================================================================ A-Shell Release Notes Version 7.0.1751.9 (10 November 2023) ============================================================================ 1. AUI_CONTROL CTLOP_INFO further refinement to 1751.7 (see below) : when used on a TABX control, the current panel's cmd string will be returned in the ctext parameter. (The theory here being that depending on the app, it might be easier to identify the panel by the cmd string than by the panel #.) ============================================================================ A-Shell Release Notes Version 7.0.1751.8 (08 November 2023) ============================================================================ 1. ATE SFTP refinement: TAB(-10,AG_FTP) within an SSH connection (i.e. using SFTP file transfer) now automatically adds the file.ext from the localpath to the hostpath when transferring to the host and the hostpath does not include a filename and extension. (While it's often the case with file transfers, as with file copy operations, that a destination consisting of just a directory will be automatically updated to use the source filename, that is not the case with SFTP, often leading to confusion as to why file transfers fail. This refinement hopefully smooths things over.) 2. DIR.LIT 3.4(174) enhancement: new switch /SRUDATE is like /SUDATE (sort by file update date) except sorts in reverse date order instead of ascending date order. ============================================================================ A-Shell Release Notes Version 7.0.1751.7 (07 November 2023) ============================================================================ 1. AUI_CONTROL refinement: when used on a TABX control, the CTLOP_QUERY opcode now returns the current panel # (starting from 1) in the cstatus parameter if the control is found. Previously it returned the control id. Affects only the Windows client (or ATE), not the server side. ============================================================================ A-Shell Release Notes Version 7.0.1751.6 (06 November 2023) ============================================================================ 1. TRACE.PRINT bug fix: trace output messages were being truncated at the point of a %var (auto-mapped variable) in the variable list. ============================================================================ A-Shell Release Notes Version 7.0.1751.5 (05 November 2023) ============================================================================ 1. Debian 12 ("Bookworm") version beta release. The Ubuntu 22 and Debian 12 executables are cross-compatible, but the Debian 12 uses a newer version of GCC (12 vs 11) and uses separate package repositories. 2. ISAMA internal adjustment for compatibility with GCC 12 compiler (introduced with Debian 12). No change in runtime behavior except that ISMUTL now reports version 6.11t. ============================================================================ A-Shell Release Notes Version 7.0.1751.4 (04 November 2023) ============================================================================ 1. Minor Tracker refinement for server side of ATE sessions: tab(-1,254) now resets screen tracking (in addition to forcing any queued characters to be flushed to the screen). This is mainly intended to be useful after certain unusual terminal sequences in the ATE environment which don't otherwise have clearly marked terminators (particularly tab(-1,160) and tab(-1,162).) Note that there is never any harm in a redundant tab(-1,254) as long as it's not in the middle of a raw ESC sequence output. 2. Compiler (edit 1040) refinement: internal cleanup of potential 64 bit overflow issues. (Not believed to caused any problems yet.) ============================================================================ A-Shell Release Notes Version 7.0.1751.3 (02 November 2023) ============================================================================ 1. 64 bit Tracker bug fix: restore operation (whether via MSBOXX, SWPSBR or tab(-1,203)) was creating missing many characters. 2. Tracker/MSBOXX/SWPSBR refinement: hot spots created with tab(-1,162) are now saved and restored in ATE environments as well as pure Windows. However, because of certain design shortcomings in the TAB(-1,160) and TAB(-1,162) ESC sequences, in order to resume screen tracking operations after use of either of those TAB commands, you should follow with a TAB sequence that has an explicit start and end, such as TAB(-1,131);TAB(-1,129) (which outputs a null string to the bottom shifted status line). 3. WINFLG.SBR refinement: it now returns 1 indicating support for tab(-1,160) and tab(-1,162) if the current terminal driver is a "G" version (e.g. AM62G, AM75G, PCVTDV, ...). 4. Further refinement to the -wp{x} switch to limit maximization of dialogs to the prescribed docking area. Also, support two new size options (4 and 6) which are similar to 2 and 3 but result in the window occupying 40% or 60% of the relevant dimension (instead of 1/2 or 1/3). For example: -wpx l6 (A-Shell window gets the left 60% of primary monitor) -wp mr:br4 (A-Shell window gets the bottom right 40% of right monitor) ============================================================================ A-Shell Release Notes Version 7.0.1751.2 (01 November 2023) ============================================================================ 1. Minor refinement to the -wpx switch to improve the positioning of dialogs that have to be resized/repositioned to fit within the parent window. ============================================================================ A-Shell Release Notes Version 7.0.1751.1 (30 October 2023) ============================================================================ 1. Enhanced variation of the -wp (window placement) command line switch added in 1750: -wpx Action is the same as for -wp except that the -wpx version also does the following: - restricts dialogs to the boundaries of the main window - disables saving updated dialog positions (for MBF2_DLGSTATE and OPTIONS=AUTODLGSTATE). - disables application-level saving of current window settings via the AG_WINSETTINGS command. ============================================================================ A-Shell Release Notes Version 7.0.1751.0 (29 October 2023) ============================================================================ 1. ORDMAPM iteration bug fixes: the startkey enhancement (edit 1739) wasn't working properly with ORDMAPM. 2. ORDMAP/ORDMAPM iteration enhancement: an optional endkey parameter may now be specified in the FOREACH statement, whose syntax is now: FOREACH $$ in $({{,}) Examples: ! iterate for .key($$i) ... FOREACH $$i in $map() ! in entire map FOREACH $$i in $map("PA") ! >= "PA" FOREACH $$i in $map("PA","QZ") ! >= "PA" and <= "QZ" FOREACH'REVERSE $$i in $map("QZ","PA") ! <= "QZ" and >= "PA" Note that any program specifying the endkey parameter in an FOREACH statement will set the minimum version for the RUN to 1751. Previously compiled programs will continue to work as before. 3. LIBXL license updated thru Oct 2024. 4. Clean up three obscure cases of one MIAMEX function spillover: MX_MOUSEXLT -> MX_MEMORY MX_LODIMG -> MX_ATECTL MX_AGINTERPROC -> MX_IATIMEOUT 5. New A-Shell/Windows (or ATE) command line switch to override window position: -wp The placement spec is made up of an optional monitor identifier prefix and a window position spec within that monitor. Monitor identifiers consist of the prefix letter "m", followed by a character from the set of (l,r,t,b,c) indicating left,right,top,bottom or center, followed by a colon: ml: (left-most monitor) mr: (right-most monitor) mt: (top-most monitor) mb: (bottom-most monitor) mc: (center monitor) If not specified, or if the system has only one display monitor, the primary monitor is used. The window position spec consists of one or two characters from the same (l,r,t,b,c) set, followed optionally by one or two digits indicating the division of the vertical or horizontal space on the monitor. By convention, vertical position specifiers should precede horizontal (i.e. use "tl" for top left instead of "lt" for left top). The divisor digit(s) default to 2 if not specified. Some examples: t (use top half of monitor; same as t2) br (use bottom right quadrant; same as br22) bc23 (bottom half, center third of monitor) cc (centered vertically and horizontally, half width and height) A more complete example, specifying a window occupying the left half of the left-most monitor might look like this: ashw32.exe -i c:\vm\miame\miame.ini -wp ml:l2 gocmd 6. Tracker/MSBOXX/SWPSBR enhancement: hot spots created with tab(-1,162) are now saved and restored along with screen attributes when using Tracker calls or MSBOXX or SWPSBR to save/restore screen attributes. Currently this is limited to the Windows environment but may be extended to Linux via ATE in a subsequent update. ============================================================================ A-Shell Release Notes Version 7.0.1750.6 (26 October 2023) ============================================================================ 1. TABX bug fix - the forcedSize=# units were not being properly converted from {milliunits} to pixels. ============================================================================ A-Shell Release Notes Version 7.0.1750.5 (17 October 2023) ============================================================================ 1. XTREE Gridmap bug fix: XTREE was aborting if passed an empty gridmap. ============================================================================ A-Shell Release Notes Version 7.0.1750.4 (12 October 2023) ============================================================================ 1. INPUT CSV into gridmap refinement: non-trailing empty cells are now included in the gridmap. Previously they were not, which might have created confusion, particularly in the gridmap(int;varstr;varstr) case where a column might have been listed on the header row the CSV but empty in the first data row. Note however, that even with this refinement, empty cells are included only if there are non-empty cells to the right of them (and trailing commas on the CSV lines do not count). ============================================================================ A-Shell Release Notes Version 7.0.1750.3 (08 October 2023) ============================================================================ 1. WRITECD gridmap bug fix: routine was looping endlessly if no data in row 1. 2. Compiler bug fix (edit 1038) - eliminate bogus runtime error 74 when passing a collection via DYNFUNC. ============================================================================ A-Shell Release Notes Version 7.0.1750.2 (04 October 2023) ============================================================================ 1. XTREE / GRIDMAP bug fix: GRIDMAP(int;int;varstr) variation was showing the column headers as row 1 and dropping the last data row of the grid. 2. CSV2XL 2.2(291) : Enhancement and bug fix: - Support 64 LibXL library (required when running on 64 bit versions of A-Shell. - //XL,SetRow was cancelling out format attributes otherwise set via //XL,SetCol or //XL,SetDefaultFont directives, even when the SetRow directive only specified a row height. 3. INPUT CSV wasn't working with non-comma delimiters after the first row. (Bug introduced in edit 1739.) 4. Revert to -j handling of duplicate jobs as it was prior to 6.5.1711.1. In the interactive case, it will ask whether to abort the prior session. But if running in background, it has to decide for itself. Up through 6.5.1711.0 it was defaulting to aborting the conflicting job, that change inadvertently in 1711.1. Now it is back to the original behavior. (Which behavior is better is unclear, but the stable version behavior gets precedence.) ============================================================================ A-Shell Release Notes Version 7.0.1750.1 (01 October 2023) ============================================================================ 1. 64 bit bug fix: XCALL GETADR was not properly returning address in 64 bit environments. 2. 64 bit bug fix: XTREE not handling 64 bit array descriptors properly. 3. Dynamic array bug fix: close a long-time loophole causing intermittent undimensioned or redimensioned array errors. ============================================================================ A-Shell Release Notes Version 7.0.1750.0 (29 September 2023) ============================================================================ 1. Initial cutover from 6.5.1744.0. (Edits 1745-1749 skipped to allow for the possibility of back-patches to 6.5, although the intent is for all activity that would otherwise have been in 6.5 to now go into the new 7.0 'stable' release.) At this point though, it is definitely not yet 'stable', and will be considered as beta for another month or so while details of the release are finalized and the various kinks are worked out. After that, a new development series, 7.1, will be launched and 7.0 will remain stable. 2. CSV2XL.LIT added to release. Provides a simpler alternative to PRINT.LIT generating XLS or XLSX spreadsheets from CSV input (eliminating the need for a printer init file that invokes the CSV2XL print filter). Note that it is still just a front-end to CSV2XL.SBX which does all the work. Usage: .CSV2XL csvspec {,inispec} where: csvspec [in] - CSV source file. .CSV extension is optional. May include //XL directives (see CSV2XL in doc for details) inispec [in] - Optional INI file used by CSV2XL. Default is BAS:CSV2XL.INI. 3. VIEWASHLOG.LIT added to release. Provides a simple way to view the ashlog.log file contents, either in its entirety as text, or just the errors in a spreadsheet or XTREE grid. Usage: .VIEWASHLOG{/switches} Switches: (None) - View entire log using the EZTYP viewer. /ERRORS - view just the errors, with an option for spreadsheet or XTREE. In the XTREE display, you can select an error and if it can find the corresponding LSX file, allows you to bring it up in the VUE or APN editor. 4. FUNCIDX.LIT added to release. This is a developer tool generates an XTREE index of functions within a set of files as an aid to locating (and reusing) them. Mainly intended for the SOSFUNC: library of BSI files, but could be used with any set of programs. Usage: .FUNCIDX {/switches} Switches: /XL - output to FUNCIDX.CSV (and XLSX using CSV2XL.SBX) (automatic if GUI not available) /KEYWORDS:fspec - specify alternate list of keyword (regex patterns) Default wildcard list is *.bsi (current or specified dir)