VMS Help  —  MACRO  /ALPHA  Directives  .IF x
    Subconditional assembly block directives

    Format

      .IF_FALSE

      .IF_TRUE

      .IF_TRUE_FALSE

1  –  Description

    For compatibility with VAX MACRO, MACRO-64 provides three
    directives for use within .IF blocks:

    Directive     Function

    .IF_FALSE     If the condition of the assembly block tests false,
                  the program includes the source code following
                  the .IF_FALSE directive and continuing up to the
                  next subconditional directive or to the end of the
                  conditional assembly block.
    .IF_TRUE      If the condition of the assembly block tests true,
                  the program includes the source code following
                  the .IF_TRUE directive and continuing up to the
                  next subconditional directive or to the end of the
                  conditional assembly block.
    .IF_TRUE_     Regardless of whether the condition of the
    FALSE         assembly block tests true or false, the source
                  code following the .IF TRUE_FALSE directive (and
                  continuing up to the next subconditional directive
                  or to the end of the assembly block) is always
                  included.

    The implied argument of a subconditional directive is the
    condition test specified when the conditional assembly block was
    entered. A conditional or subconditional directive in a nested
    conditional assembly block is not evaluated if the preceding (or
    outer) condition in the block is not satisfied (see Example 3 and
    Example 4).

    A conditional block with a subconditional directive is different
    from a nested conditional block. If the condition in the .IF is
    not met, the inner conditional blocks are not assembled, but a
    subconditional directive can cause a block to be assembled.

2  –  Notes

    o  If a subconditional directive appears outside a conditional
       assembly block, the assembler displays an error message.

    o  The alternate forms of .IF_FALSE, .IF_TRUE, and .IF_TRUE_FALSE
       are .IFF, .IFT, and .IFTF.

    o  You cannot use .ELSE in the same conditional block as .IF_x.

3  –  Examples

      Example 1
      Assume that symbol SYM is defined:

           .IF DEFINED   SYM     ; Tests TRUE since SYM is defined.
             .                   ;   Assembles the following code.
             .
             .
           .IF_FALSE             ; Tests FALSE since previous
             .                   ;   .IF was TRUE.  Does not
             .                   ;   assemble the following code.
             .
           .IF_TRUE              ; Tests TRUE since SYM is defined.
             .                   ;   Assembles the following code.
             .
             .
           .IF_TRUE_FALSE        ; Assembles following code
             .                   ;   unconditionally.
             .
             .
           .IF_TRUE              ; Tests TRUE since SYM is defined.
             .                   ;   Assembles remainder of
             .                   ;   conditional assembly block.
             .
           .ENDC
      Example 2
      Assume that symbol X is defined and that symbol Y is not
      defined:

           .IF DEFINED  X        ; Tests TRUE since X is defined.
           .IF DEFINED  Y        ; Tests FALSE since Y is not defined.
           .IF_FALSE             ; Tests TRUE since Y is not defined.
             .                   ;   Assembles the following code.
             .
             .
           .IF_TRUE              ; Tests FALSE since Y is not defined.
             .                   ;   Does not assemble the following
             .                   ;   code.
             .
           .ENDC
           .ENDC
      Example 3
      Assume that symbol A is defined and that symbol B is not
      defined:

           .IF DEFINED  A       ; Tests TRUE since A is defined.
             .                  ;   Assembles the following code.
             .
             .
           .IF_FALSE            ; Tests FALSE since A is defined.
             .                  ;   Does not assemble the following
             .                  ;   code.
             .
           .IF NOT_DEFINED B    ; Nested conditional directive
             .                  ;   is not evaluated.
             .
             .
           .ENDC
           .ENDC
      Example 4
      Assume that symbol X is not defined but symbol Y is defined:

           .IF DEFINED  X       ; Tests FALSE since X is not defined.
             .                  ;   Does not assemble the following
             .                  ;   code.
             .
           .IF DEFINED  Y       ; Nested conditional directive
             .                  ;   is not evaluated.
             .
             .
           .IF_FALSE            ; Nested subconditional
             .                  ;   directive is not evaluated.
             .
             .
           .IF_TRUE             ; Nested subconditional
             .                  ;   directive is not evaluated.
             .
             .
           .ENDC
           .ENDC
Close Help