1. Fix bug with XCALL AMOS and OPTIONS=AMOS_RUNSBR which caused command lines over 50 characters long to be broken.
2. Introduce new TRACE=AMOS ini file option to write debugging information about the way XCALL AMOS commands are being executed to the ashell.log file. (Since XCALL AMOS can be a bit confusing, this can be very helpful in debugging.)
3. SET.LIT 1.1(126) supports SET TRACE AMOS ON/OFF and also SET AMOSRUNSBR and SET NOAMOSRUNSBR (toggles OPTIONS=AMOS_RUNSBR ini file setting.)
4. APPEND.LIT 2.0(104) now echoes the command line if it is invalid, eliminating the annoying situation where you get the message "Invalid command" but can't see what the invalid command was (when executing APPEND within a command file or via AMOS.SBR.)
5. (UNIX) Introduce new ashell command line switch -cgi to simply use of A-Shell as a CGI engine. When -cgi is invoked, the normal screen output of A-Shell is redirected to stderr, thus avoiding the annoyance of having to make sure your programs are totally silent except for the output that is needed to build the new web page. A new subroutine, CGIUTL.SBR, has been introduced to simplify creating the web page on stdout. (See next.)
6. (UNIX) CGIUTL.SBR introduced to facilitate various operations useful when using A-Shell/Basic as a CGI engine. Note that the assumption is that your web form uses the POST method (in which the form variables are all passed to the CGI program via stdin.)Usage:
XCALL CGIUTL, OP [,PARAM1, PARAM2, ...]
XCALL CGIUTL, 0, STATUS ! return 1 if A-Shell launched with -cgi flag, else 0
XCALL CGIUTL, 1, STRING, STATUS ! get stdin into STRING, STATUS=0 for OK, 1 for ovl, ! -1 if not cgi mode
XCALL CGIUTL, 2, PARMNAME, PARMVAL, STATUS, STRING ! get parameter PARMNAME into PARMVAL; STATUS: 0=OK, -1=not found ! if STRING specified, use it instead of STDIN for input ! Note that PARMNAME should match the NAME parameter of an ! HTML field.
XCALL CGIUTL, 3, FILE, STATUS {,VARSUB1,VARSUB2,...VARSUB15} ! copy file FILE to stdout; STATUS=0 for ok, -1 for no such file ! optional VARSUBn arguments are of form "NAME=VALUE" to cause ! any occurance of NAME within the file to be changed to VALUE. ! NOTE: VALUE must be null terminated, and maximum length ! of each line of input file after substitutions is 1024!!!. ! The variable substitution NAMEs are case sensitive, and do ! not have to be delimited, so make sure you choose unique ! variable names (perhaps with a leading $.) This function ! is useful for building dynamic web pages from one or more ! partial web pages on disk, possibly with substitution of ! tokens in the process.
XCALL CGIUTL, 4, STRING, STATUS ! write STRING to stdout. use this in place of PRINT statements ! to send a string to stdout (where it will appear in the ! web page created by the cgi script.)
XCALL CGIUTL, 5, ENVVAR, ENVDEF, STATUS ! get definition of environment variable ENVVAR into ENVDEF ! STATUS=0, 1=(truncated)