:IF... :ELSE... :ENDIF
Script Statements: They analyze an expression and depending on the result, they run statements.
Syntax
:IF Condition
[Statements]
[:ELSE]
[Other Statements]
:ENDIF
Syntax |
Description/Format |
---|---|
Condition |
A mathematical expression that consists of script literals, script variables, script functions or numbers with the possible results "True" or "False" |
Statements |
One or more statements that will be executed when the condition
is "True" |
Other Statements |
One or more statements that will be executed when the condition
is "False" |
Comments
An :IF statement is a control structure that you can use to process scripts depending on the result that a condition supplies. A condition is a logical expression.
When the condition applies (it is true), the statements are executed.
When the condition does not apply (it is false), the :ELSE statements are processed. When the IF block does not contain an :ELSE branch, it continues with the next line that follows the :ENDIF statement.
IF blocks can also be nested. The nesting depth is not limited.
IF blocks do not necessarily include ELSE branches.
When strings exceed 1024 characters, a difference in characters beyond the 1024th character will not be recognized by an :IF statement in the script. The comparing algorithm only checks the first 1024 characters of a string.
Using an OR keyword
To link a condition to several values or to link several individual conditions , you use OR as the keyword.
Conditions show the following structure:
ValueComparison operatorComparison Value[OR Comparison Value...] |
---|
For example:
:IF &DEP# = "EDP" OR "AE"
You can use up to 13 ORs in a condition.
Comparison operators
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 |
A numerical comparison takes place when both comparison values of a condition have a numerical value (data types signed, unsigned or float). A string comparison takes place in all other cases. Note that leading zeros are only ignored in numerical comparisons.
The following condition supplies "True":
:IF "0" = "0"
An alpha-numeric comparison takes place when there are no numerical values.
The following condition supplies "False":
:IF "0" = "abc"
Script lengths are not checked during the comparison process. The following condition supplies "True" because "S" comes before the "U" in the alphabet.
:IF "Smith" < "UX"
Note that you must define the script variables that you use in a condition beforehand.
Conditions that include the keyword OR several times can show various behaviors depending on the operator.
For example:
In the following example, one of the values must apply in order to meet the condition.
:IF &WD# = "MON" OR "TUW" OR "WED"
The following condition is only met if the variable does not comply to any of the three values.
:IF &WD# <> "THU" OR "FRI" OR "SAT"
Trailing Blank Spaces Are Not Considered
Trailing blank spaces are not considered in string comparisons. Therefore, blank strings always are equal independent on their length.
For example:
:set &a= 'a '
:set &b= 'a'
:if &a = &b
:print 'true'
:endif
In this case, comparison of &a with &b would return true as trailing blanks are eliminated before the comparison.
Examples
The following examples show different ways of defining a condition. The examples 1 to 3 put a script variable into relation with one or more comparison values. The fourth example uses the return code of a function.
:IF &USER# = "TSOS"
!...
:ENDIF
:IF &DAT1# = &DAT2# OR " "
!...
:ENDIF
!...
:ENDIF
:IF GET_ATT(OO)
= "J"
!...
:ENDIF
See also:
Script element | Description |
---|---|
:SWITCH... :CASE... :ENDSWITCH | It verifies whether the value of a variable complies with certain values and depending on the result, it runs various statements. |
This is used to define a loop for the repeated execution of script elements. |
Script Elements -
Script Structure and Processing
About Scripts
Script Elements - Alphabetical Listing
Script Elements - Ordered by function