Copyright Digital Equipment Corp. All rights reserved.

Using_Conditionals

   The directives .IF, .ELSIF, .ELSE and .ENDIF are used to instruct MMS
   to process selected lines in your description file.

   The .IF directive has the following format:

      .IF boolean-expression
      [description file line] ...
      {.ELSIF boolean-expression}
      [description file line] ...
      [.ELSE]
      [description file line] ...
      .ENDIF

   In  this  syntax,  the  "description  file  line"  is  zero  or  more
   description file lines that may include further  .IF directives.  The
   .IF  directive  may be  followed  by  zero  or  any number of  .ELSIF
   directives,  and zero or one .ELSE directive.  The .IF directive must
   always be accompanied  by a  matching .ENDIF directive.

   MMS  evaluates  the   'boolean-expression'  specified  with  the  .IF
   directive. If true, the lines of the description file between the .IF
   directive and a corresponding .ELSIF, .ELSE  or .ENDIF are processed;
   then, if either .ELSIF or .ELSE  were detected,  all description file
   lines  from  this  line  to the  corresponding  .ENDIF  directive are
   ignored. When the boolean-expression specified with the .IF directive
   is  false,   all   description  file  lines  from  this  point  to  a
   corresponding    .ELSE,    .ENDIF   or    .ELSIF   whose   associated 
   'boolean-expression' is true, are ignored.

   The 'boolean-expression' specified in  .IF and .ELSIF  directives  is
   defined as follows:

   boolean-expression
      :== [ .NOT ] boolean-operation |
          [ .NOT ] boolean-operation boolean-operator boolean-expression

   boolean-operation :== ( boolean-expression ) |
                         word |
                         word comparison-operator word

   word :== null |
            any sequence of characters, terminated by space, and not
            starting with '.', '(' or ')'.

   boolean-operator :== .AND | .OR

   comparison-operator :== .EQ | .NE | .GE | .LE | .GT | .LT

   The operands in the 'boolean-expression' take one of two forms:

   .IF word

   or,

   .IF word1 .EQ word2

   In the first case,  MMS checks to see if  'word' is a  macro that has
   been defined to a  non-null value;  the expression  is true if it is,
   false otherwise. (NOTE: this is  precisely the same  functionality as
   that of the obsolete .IFDEF directive).  For example,  to check  that
   the macro FRUIT is defined, write:

   .IF FRUIT

   In the second case,  MMS  performs the requested  comparison  between
   'word1' and 'word2' to determine the expression value; the comparison 
   operation  is  case-sensitive.  Note  that,  when  using  macros  and
   functions in expressions of this form,  you must reference the  macro
   or function in the standard way, in $().  For example,  to check that
   the macro FRUIT is defined to be BANANAS, write:

   .IF $(FRUIT) .EQ BANANAS

   If you need to compare words that start with the  characters '.', '('
   or  ')'  or  text  containing  layout  characters  then,  enclose the
   words or text   (on  both  sides  of  the  comparison  operator)   in  
   quotation-marks.  For example,  to check that the macro  FILETYPE  is
   defined  as  .MMS,  and  that  the  macro  VERSION  is not defined as
   'Version 3.2', you must write:

   .IF "$(FILETYPE)" .EQ ".MMS" .AND "$(VERSION)" .NE "Version 3.2"