:IF... :ELSE... :ENDIF

Use the :IF and :ENDIF script statements to create a conditional block in your script. The script analyzes an expression and runs statements written in the block when a particular condition is met. If the condition is not met, the script either continues with the next line after the conditional block, or runs :ELSE statements if applicable.

Syntax

:IF Condition
[Statements]
[:ELSE]
[Other Statements]
:ENDIF

Parameters

  • :IF
    Starts a conditional block

  • Condition
    Mathematical expression that determines whether to run the statements in the conditional block
    Format: script literals, script variables, script functions or numbers, with the possible results true or false

  • Statements
    On or more script statements to execute when the Condition is true
    Format: script statement

  • :ELSE
    Starts a branch that executes when the condition is false

  • Other Statements
    One or more script statements to execute when the Condition is false
    Format: script statement

Notes:

  • You must define the script variables that you use in a condition before the conditional block.
  • Use OR as the keyword to link a condition to several values, or to link several conditions. Write OR conditions in the following structure:
    ValueComparison operatorComparison Value[OR Comparison Value...]
    Example: :IF &DEP# = "EDP" OR "AE"
  • You can use up to 13 ORs in a Condition.
  • You do not have to include :ELSE statements.
  • You can nest :IF blocks to an unlimited depth.
  • Trailing blank spaces are not considered in string comparisons. Therefore, blank strings always are equal independent on their length.
  • Leading zeros are only ignored in numerical comparisons.

Important! The :IF statement does not recognize differences in characters beyond the first 1024 characters in a string.

A condition contains one of the following comparison operators:

Operator

Short form

Rule

=

EQ

This expression is "True" if at least one of the comparison values equals the Value.

<>

NE

This expression is "True" when none of the comparison values equals the Value.

<

LT

This expression is "True" if one comparison value corresponds to the defined condition.

>

GT

<=

LE

>=

GE

Examples

  • The following comparison of &a with &b returns true because the trailing blanks are eliminated before comparing the strings.
  • :set &a= 'a   '
    :set &b= 'a'
    :if &a = &b
    :print 'true'
    :endif

    A numerical comparison takes place when both comparison values of a condition have a numerical value (data types signed, unsigned or float). In all other cases, a string comparison takes place.

    The following condition is true:

    :IF "0" = "0"

    An alphanumeric comparison takes place when there are no numerical values.

    The following condition is false:

    :IF "0" = "abc"

    Script lengths are not checked during the comparison process. The following condition is true because S comes before U in the alphabet:

    :IF "Smith" < "UX"

    In conditions that include several OR keywords, the behavior depends on the operator.

    In the following example, one of the values must apply in order to meet the condition.

    :IF &WD# = "MON" OR "TUE" OR "WED"

    The following condition is only met if the variable does not comply with any of the three values.

    :IF &WD# <> "THU" OR "FRI" OR "SAT"

    See also: