Syntax

IF expression

The IF directive provides a conditional-assembly feature.

The structure of conditional assembly is much like that used by high-level language conditional constructs and by the C pre-processor. The directives IF, IFDEF, IFNDEF, ELIF, and ENDIF are available.

These directives may be prefixed with a # and can start in the first column, thus enabling them to look like C pre-processor directives.

The controlling expression must be an absolute assembly-time constant. When the expression is non-zero, the true conditional arm is assembled; when the expression is zero, the false conditional body, if any, is assembled.

The IFDEF and IFNDEF directives are specialized forms of the IF directive. IFDEF tests for the existence of the supplied symbol, IFNDEF tests for the non-existence of the supplied symbol.

Example

IF type == 1
   CALL type1
ELSE
   IF type == 2
      CALL type2
   ELSE
      CALL type3
   ENDIF
ENDIF

The nested conditional can be replaced by using the ELIF directive, which acts like ELSE IF:

IF type == 1
   CALL type1
ELIF type == 2
   CALL type2
ELSE
   CALL type3
ENDIF

Example

The usual practice is to use a symbol, DEBUG, as a flag to either include or exclude debugging code. Now you can use IFDEF to conditionally assemble some parts of your application, depending on whether the _DEBUG symbol is defined.

IFDEF _DEBUG
   CALL DumpAppState
ENDIF