Vergleich von zwei Operanden
IF [S|V] str1 rel str2 { GOTO { label | ln | strvar } | RETURN | [ : | _ ] text }
IF [L] ln1 rel ln2 { GOTO { label | ln | strvar } | RETURN | : text }
IF [I] int1.. rel int2 { GOTO { label | ln | strvar } | RETURN | : text }
IF [I] float1 rel float2 { GOTO { label | ln | strvar } | RETURN | : text }
IF ln-var = | NE SELECTED { GOTO { label | ln | strvar } | RETURN } | :text }
IF ln-var = | NE EXIST { GOTO { label | ln | strvar } | RETURN } | :text }
IF WINGEN windows = | NE EXIST { GOTO { label | ln | strvar } | RETURN } | :text }
In Abhängigkeit des Vergleichsergebnisses zweier Operanden wird entweder auf die Sprungmarke verzweigt oder die Prozedur mit dem Kommando RETURN abgebrochen.
S Falls als Zeichenfolge eine Zeilennummer angegeben wird, kann nicht eindeutig unterschieden werden, ob die Zeilennummer oder der Inhalt der Zeile verglichen werden soll. In diesen Fällen ist bewirkt die Angabe von "S", dass der Inhalt verglichen wird. Auch bei einer eindeutigen Syntax beschleunigt die Angabe von "S" die Verarbeitung.
V wie "S", jedoch wird der Vergleich ohne Beachtung der Klein-/Großschreibung durchgeführt.
str1/str2 Zeichenfolge, Beschreibung siehe Parameter str.
L Diese Angabe bedeutet, dass die Zeilennummer und nicht der Inhalt der Zeile verglichen wird.
ln1/ln2 Zeilennummern, Beschreibung siehe Parameter ln. Es werden nicht die Zeileninhalte, sondern nur die Zeilennummern verglichen. Soll der Zeileninhalt verglichen werden, ist als zweiter Operand eine Zeichenfolge (siehe Parameter str) oder der Parameter "S" anzugeben.
I Muss nur angegeben werden, wenn mit int1 ein Integer-Wert (1,2, ... 9999) angegeben wird. Dadurch ist es möglich, einen Integer-Wert von einer Zeilennummer zu unterscheiden.
int1 / int2 Miteinander zu vergleichende Integer-Werte. Es kann jeweils eine ganze positive oder negative Zahl oder eine Integer-Variable (#I0 bis #I99) angegeben werden.
float1 / float2 Miteinander zu vergleichende Gleitpunkt-Werte. Es kann jeweils eine Gleitpunktzahl oder eine Float-Variable (#F0 bis #F99) angegeben werden.
ln-var Line-Variable, die auf eine Zeile im aktuellen Arbeitsbereich verweist.
Prüfen, ob die Zeile markiert ist
SELECTED Die Bedingung ist erfüllt, wenn die Zeile markiert (=SELECTED) bzw. nicht markiert (NE SELECTED) ist.
Prüfen, ob die Zeile existiert
EXIST Die Bedingung ist erfüllt, wenn die Zeile existiert (=EXIST) bzw. nicht existiert (NE EXIST).
Prüfen, ob ein mit WINGEN erzeugtes Fenster noch existiert.
WINGEN windows Die Bedingung ist erfüllt, wenn das asynchron erzeugte Fenster noch existiert (=EXIST) bzw. nicht existiert (NE EXIST). Für windows ist die mit dem Kommando WINGEN OUT zugewiesene Nummer anzugeben.
Beispiel: @if wingen 2 = existing goto win2
rel Vergleichsrelation:
EQ | = gleich
NE | <> | != ungleich
GT | > größer
LT | < kleiner
GE | >= größer oder gleich
LE | <= kleiner oder gleich
GOTO Kommando GOTO ausführen, wenn die Bedingung erfüllt ist.
RETURN Kommando RETURN ausführen, wenn die Bedingung erfüllt ist.
text Beliebige Zeichenfolge.
Ist das erste von einem Leerzeichen verschiedene Zeichen
1. kein Anweisungssymbol,
werden die dem : folgenden Leerzeichen als zum text gehörende Leerzeichen behandelt. Für die Behandlung gilt:
text steht in der aktuellen Zeile;
die aktuelle Zeilennummer wird um die aktuelle Schrittweite erhöht;
vorhandene Tabulatorzeichen werden berücksichtigt.
2. ein Anweisungssymbol,
werden die dem : folgenden Leerzeichen ignoriert. Folgt als zweites Zeichen
kein Anweisungssymbol, wird text als EDT-Anweisung interpretiert und sofort ausgeführt.
Anweisungssymbol, wird text als Textzeile wie bei 1) behandelt
: | _ Bei Stringvergleichen ist das Trennzeichen ":" zwischen dem IF-Kommando und der nachfolgenden True-Anweisung nicht immer eindeutig von dem Zeichen ":" für die Spaltenangabe zu unterscheiden. Deshalb ist immer dann das Zeichen "_" als Trennzeichen anzugeben, wenn der Parameter text nicht mit dem Anweisungssymbol (@ oder §) beginnt.
Beispiele:
if s !:5-6: = 'xy' _ Daten für neue Zeile
if s !:5-6: = 'xy' : @col 5 on ! insert 'x'
if s !:5-6: = 'xy' : @@on& c'test' to 'test1'
if s !:5-6: = 'xy' goto weiter
if s !:5-6: = 'xy' return
if #i1 = 1 goto weiter
if #l1 = 1.05 return
if #l1 = selected goto weiter
if #l1 ne existing return