In addition to the AlphaBASIC and AlphaBASIC Plus statements, A-Shell also supports a set of statements which are only available under A-Shell—i.e., are not part of the AlphaBASIC environment. These statements are listed in the table below, and are referred to as the A-Shell Extensions. To invoke these extensions, use:
• /X:2 to create a standard .RUN file
• /X:3 to create an .SBX file
Note that /X:3 does not disturb an existing .RUN, so it is possible to compile the same source into both a .RUN and a .SBX, as follows:
.COMPIL MYPROG/X:2 ; create MYPROG.RUN
.COMPIL MYPROG/X:3 ; create MYPROG.SBX
However, in order to make this workable, you'll need to modify the ASHINC:XCALL.BSI file to merely set a flag indicating if it is running in SBX mode or not, instead of aborting with an error message if run directly using RUN MYPROG. You would then test that flag to decide whether to pick up and return parameters.
|
Extension |
Meaning |
|
Tab(x,y,z). | |
|
| |
|
DEBUG |
Control variable. If /DEBUG compile switch specified, acts as if it equals 1, otherwise 0. If /DEBUG switch is not specified, then it may still be activated at runtime by using SET DEBUG, or MX_DEBUG,op,debugvalue. Note that for backwards compatibility, mapping DEBUG explicitly as an ordinary variable will disable the control variable DEBUG. Also see DEBUG.xxxx below. |
|
DEBUG statements |
|
|
Allows you to assign a type name to a set of MAP statements and then use that as if it was a data type. | |
|
Enhanced dynamic array allocation | |
|
Read-only system variables. | |
|
Reserved-word functions. | |
|
DPRINT |
Like PRINT but creates a static text control using the current default GUI (proportional) font and with the sunken attribute. (Note that if the /X:2 switch not specified, TPRINT is compiled as PRINT.) Intended for displaying data fields. |
|
|
|
|
One or more ELSEIF clauses may be inserted into an extended IF/ELSEIF/ELSE/ENDIF statement. | |
|
ERROR <message> |
Causes the message to be displayed and is treated as a compiler error. This is particularly useful in conjunction with conditional compilation, as shown in the preceding example. |
|
PRIVATE and PUBLIC keywords for fine tuning scope of variables (MAP or DIMX). | |
|
Nesting to 3 levels deep (instead of just 1) | |
|
Input comma separated values | |
|
When the fourth parameter (flags) is specified (even if 0), the pattern is treated as a regular expression. | |
|
MESSAGE <message>
|
Equivalent to ++ERROR <message> except that no error is generated. It is useful primarily for giving you visual feedback during compilation that your conditions are working as expected. See prior example. |
|
Pad a string with spaces | |
|
Compiler directives. | |
|
| |
|
Re-dimensions an array originally created with DIMX. | |
|
Return value from XFUNC | |
|
| |
|
SIZEOF(VAR) |
Used to reference the size of a previously mapped variable. For example: MAP1 VAR2,S,SIZEOF(VAR1) or X = Y * SIZEOF(Z). Note also that it is possible to use sizeof(var) to reference the size of the immediately preceding variable even when it is a structure. |
|
TPRINT |
Same as DPRINT but without the sunken effect. Also note that SET AUTOTPRINT causes all PRINT statements to behave at runtime as if they were compiled as TPRINT. |
|
These statements open, print to, and close the debug message window. | |
|
Underlines in variable names |
Variable names (and constants) may contain underlines. Although this has no special meaning, by convention it is used primarily with constants. |
|
| |
|
Output comma delimited values | |
|
WRITETD |
Deprecated; see WRITECD for important note. Old documentation: same as WRITECD, except that it outputs Tab delimiters instead of comma delimiters. |
|
XCALL names may be up to 10 characters long. | |
|
Call an external (SBX) function | |
|
XGETARG, XGETARGS |
Retrieve XCALL parameters. See XGETARG, XGETARGS, XPUTARG. |
|
XPUTARG |
Return XCALL parameters. See XGETARG, XGETARGS, XPUTARG. |
|
Allow record access via explicit record numbers. |