Please enable JavaScript to view this site.

A-Shell Consolidated Reference

Updated March 2017; see History

++IF <constant expression>

   ...

{++ELIF <constant expression>

   ...{++ELSE

   ...

++ENDIF

 

The statement " ++IF <constant expression> " evaluates the specified expression and compiles the following statements if the expression is equivalent to TRUE. Constant expressions are a subset of regular BASIC expressions, made up only of defined symbols (constants) and literals (i.e. no variables), and a limited set of pre-defined functions and operators:

All arithmetic operators (+, -, /, *, **, ^, MOD)
All logical operators (AND, OR, NOT)
Comparison operators (<, >, <=, >=, ==, <>, #)
All bitwise operators (AND, OR, NOT, NOR, XOR)
Arithmetic functions: int(), fix(), abs(), min, max
Scientific functions: exp(), sgn(), sqr(), sin(), cos(), tan(), atn(), fact()
String functions: +, left(), mid(), right(), [a, b], len(), instr(), asc(), chr(),  str(), val(), rtrim(), edit(), strip(), pad()
File functions: lookup()

++ELIF <constant expression> is equivalent to ++IF <constant expression> except is only evaluated if the preceding ++IF or ++ELIF expression(s) were false. See example below.

 

Examples

++IF APPVER > 3

    <statements>

++ENDIF

 

++IF SITE_NAME$ = "MARS"

    <statements>

++ELIF SITE_NAME$ = "JUPITER"

    <statements>

++ELIF SITE_NAME$ # LOCAL_PLANET$

    <statements>

++ENDIF

 

++IF (APPVER > 3) AND (LOOKUP("xyz.bsi") # 0)

    <statements>

++ELSE

    <statements>

++ENDIF

 

Note that the above examples are only valid if APPVER, SITE_NAME$, and LOCAL_PLANET$ are DEFINE'd symbols. Variables would not be acceptable because their values are not constant from the compiler's perspective. The LOOKUP expression is acceptable as long as the filename is constant, i.e. a literal string as in the example, or a DEFINEd symbol.

History

2017 March, A-Shell 6.4.1546, compiler enhancement (797): maximum nesting levels for ++INCLUDE and ++IF conditions increased from 20 to 40. Improve messaging/recovery for the overflow condition.