"CAL\[Daten]" für "Calculate"; "VIC\[Name]" für "VariableInCrement", "VDC\[Name]" für
"VariableDeCrement"; "IVV\[Daten]" für "IfVariableValue", "EVV\" für "EndVariableValue"; "IVB\[Daten]" für "IfVariableBetween", "EVB\" für "EndVariableBetween"; "ISV\[Daten]" für "IfSystemVariable", "ESV\" für "EndSystemVariable"; "IVN\[Daten]" für "IfVariableNumeric", "EVN\" für "EndVariableNumeric"; "JIZ\[Daten]" für "JumpIfZero", "JIN\[Daten]" für "JumpIfNonzero", "JIF\[Daten]" für "JumpIfFilled", "JIV\[Daten]" für "JumpIfValue", "JIS\[Daten]" für "JumpIfSystemvariable". Siehe auch: "VAR\", "IEV\", "TTR\", "TTL\", TTU\". Siehe auch: "Abfragen".
Mit dem Befehl "VAR\..." haben Sie die Möglichkeit, eine begrenzte Anzahl von
Variablen zu definieren und ihnen Werte zuzuweisen. Wenn diese Werte rein
numerisch sind (Ziffernfolgen, ggf. mit Dezimaltrennzeichen), können Sie mit
diesen Variablen über den Befehl "CAL\..." auch einfache Rechenoperationen
durchführen, und zwar - (+) Addition, - (-) Subtraktion, - (*) Multiplikation, - (/) Division, - (\) Ganzzahldivision, - (%) Modulo-Operator, - (^) Potenzieren, - (a) Absolutwert, - (r) Quadratwurzel, - (s) Sinus, - (c) Cosinus und - (t) Tangens. Dabei ist immer eine Ergebnisvariable anzugeben, und anschließend werden die
einzelnen Terms aneinandergereiht nach folgendem Schema (ausgenommen
Quadratwurzel, Absolutwert und Winkelfunktionen): CAL\$$var=[Wert1][Operator1][Wert2][Operator2][Wert3][Operator3][Wert4]... Für die Werte können Variable, Zahlenwerte oder Hex-Werte (&H...) angeben
werden, z.B.: CAL\$$11a=$$12a+100*223/$$abc CAL\$$11a=$$12a+100*223/&HFA Die Ergebnisvariable muß vorher nicht definiert
und auch nicht belegt werden;
sie wird intern vom Programm deklariert. !WICHTIG! * Die Berechnung des Ausdrucks erfolgt von links nach rechts, d.h. das Ergebnis
aus [Wert1][Operator1][Wert2] bildet den linken Operanden für den
Operator2. Die Regel "Punktrechnung vor Strichrechnung" gilt nicht, und Klammern sind nicht gestattet. * Wenn Sie das Endergebnis als Integer-Wert in der Ergebnisvariablen haben
möchten, tragen Sie in der Befehlszeile als letzte Zeichen "|i" ein. * Quadratwurzel, Absolutwert und Winkelfunktionen lassen sich nicht zusammen mit anderen Operatoren verwenden. Diese Operationen müssen
immer in einer getrennten Zeile ausgeführt werden. Bei Winkelfunktionen wird
das Argument standardmäßig als Bogenmaß interpretiert; soll der Winkel in Grad angegeben werden, ist die Zeichenfolge ("grd") anzuhängen: CAL\$$abs=a$$abs CAL\$$sqr=r25 CAL\$$sin=s72grd CAL\$$cos=c1,334
Ausführbares Beispiel: HAA\ MAF\ HDB\ VAR\$$col=blue VAR\$$dck=35 CAL\$$2dk=$$dck*2 CAL\$$xxx=$sw$\2 CAL\$$yyy=$sh$\2 SAP\$$xxx,$$yyy SRP\1 CAL\$$aaa=$sh$-$$2dk :neu SHF\a25\$$aaa,$$aaa|$$dck|$$col@ VDC\$$aaa|10 JIN\$$aaa:neu @
Die Befehle "VIC\" und "VDC\" erhöhen bzw. erniedrigen die im Datenteil
anzugebende (numerische) Variable jeweils um einen bestimmten Wert. Wenn
im Datenteil nur der Variablenname angegeben ist, beträgt der Wert = 1. Wenn
Sie einen anderen Wert einsetzen wollen, geben Sie diesen anschließend und
abgetrennt durch einen Senkrechtstrich an : VIC\$$13b 'erhöhen um 1 VDC\$$1Z7|2 'erniedrigen um 2
Mit dem Befehl "IVV\..." können
Sie die weitere Abarbeitung der Remote-Datei
davon abhängig machen, ob die im Datenteil angegebene Variable der ebenfalls
im Datenteil anzugebenden Bedingung genügt oder nicht. Sie können die Vergleichsoperatoren <=, >=, <, >, =, !, <> (! und <> = ungleich) sowohl
für numerische Werte als auch für einen Stringvergleich einsetzen. Dabei ist
folgende Schreibweise einzuhalten: IVV\$$16a=20 '... EVV\
IVV\$$16a<20 '... EVV\
IVV\$$16a>=20 '... EVV\
IVV\$$16a<>abc 'oder IVV\$$16a!abc '... EVV\
Wenn die Variable $$16a den Wert 20 hat (erstes Beispiel) bzw. kleiner als 20
ist (zweites Beispiel), werden die Befehle zwischen "IVV\..." und "EVV\"
ausgeführt. Sie können nach dem Vergleichsoperator auch eine andere Variable
einsetzen, z.B. IVV\$$16a<=$$11a '... EVV\
!WICHTIG! Bei Prüfung auf Gleichheit werden immer die Zeichenfolgen verglichen; Sie
können diese Abfrage also auch für nichtnumerische Variablen verwenden, z.B.: IVV\$$16f=blabla '... EVV\
VAR\$$132=blabla IVV\$$16t=$$132 '... EVV\ Bei allen anderen Prüfungen bestimmt der Term nach dem Befehl, welche Art
von Vergleich durchgeführt wird. Wenn das ein numerischer Wert ist, wird vom
Vergleichswert ebenfalls ein numerischer Wert gebildet (bei allen Zeichen außer
den Ziffern 1 - 9 immer Null) und mit diesem verglichen. Wenn Sie also einen
reinen Textvergleich zwischen Zeichenfolgen und numerischen Werten
durchführen wollen, muß der Term nach dem Befehl die Zeichenfolge enthalten! Außerdem können Sie im Datenteil mehrere durch "|" getrennte Vergleichswerte angeben. Die Bedingung ist dann erfüllt, wenn einer der Vergleichswerte mit der
Vorgabe übereinstimmt. Gleichzeitig wird dieser Wert in eine programminterne
Variable geschrieben, auf die Sie mit der Zeichenfolge "$v1$" zugreifen und bei
Bedarf an eine benutzerdefinierte Variable übergeben können (siehe "VAR\"). IVV\$$16a=$$11a|wert|$$var|dsef '... EVV\
Die Befehle zwischen "IVV\..." und
"EVV\" werden auch dann nicht ausgeführt,
wenn die als erstes Argument angegebene Variable gar nicht existiert. Sie können
also mit "IVV\..." implizit die Existenz einer Variablen überprüfen; allerdings ist
auch dann immer ein (beliebiger) Vergleichswert mit anzugeben: IVV\$$16f=0 '# Wenn $$16f nicht existiert, werden die Befehle bis "EVV\"
nicht ausgeführt. '... EVV\
Wenn Sie auf Gleichheit mit Leerzeichen prüfen
wollen, müssen Sie diese durch
die Zeichenfolge "$sp$" ersetzen: IVV\$$xyz=$sp$$sp$'Vergleich mit zwei Leerzeichen '... EVV\ Mit dem Befehl "IVB\..." können Sie
feststellen, ob der Wert einer Variablen in einem bestimmten Bereich liegt. Dazu ist im Datenteil zunächst der Name der
Variablen anzugeben und danach - jeweils durch Senkrechtstrich ("|") getrennt -
die Untergrenze und die Obergrenze (für
beide Angaben gilt "einschließlich"). Bei
numerischen Angaben erfolgt die Prüfung des Zahlenwertes, bei Zeichenfolgen
anhand der Sortierreihenfolge der jeweiligen Codepage. Die zwischen "IVB\" und
"EVB\" liegenden Befehle werden nur ausgeführt, wenn die Bedingung erfüllt ist. VAR\$$123=5 IVB\$$123|2|7 '# Bedingung ist erfüllt. '... EVB\ VAR\$$abc=n IVB\$$abc|b|p '# Bedingung ist erfüllt. '... EVB\
Mit dem Befehl "ISV\..." können
Sie die Werte der Systemvariablen "$v1$"
...
"$v6$" direkt mit Vorgaben vergleichen.
Es gelten die gleichen Vorschriften wie
bei "IVV\..." mit dem einzigen Unterschied,
daß im Datenteil an erster Stelle statt
des Variablennamen die Ziffer aus der Systemvariablen (1
... 6) anzugeben ist.
Die zwischen "ISV\..." und "ESV\"
stehenden Befehle werden nur dann
ausgeführt, wenn die Vergleichsbedingung erfüllt ist.
Bei Schleifen ist es bequemer, statt der Abfrage
einen der "JI?\"-Befehle zu
verwenden, der dann bei erfüllter Abfragebedingung direkt zu einer Sprungmarke
führt. Die Syntax lautet: JI?\Variable[|]Sprungmarke bei "JIF\", "JIN\" und "JIZ\"bzw. JIV\Variable[|]VergleichsoperatorVergleichswert|Sprungmarke oder JIV\Variable[|]VergleichsoperatorVergleichswert:Sprungmarke ([|] = optional). Bei "JIZ\" wird der Sprung ausgeführt,
wenn die Variable leer ist oder einen Wert
<= 0 (Null) hat, bei "JIN\" dann, wenn der numerische Wert der Variable größer
als 0 ist, und bei "JIF\" dann, wenn die Variable nicht
leer ist (wenn sie Zeichen
enthält). "JIN\" und "JIZ\" werden häufig in Schleifen benötigt, wobei vor der Auswertung
der Sprungbedingung ein Dekrementieren oder Inkrementieren des
Variablenwertes erfolgt. Die dazu erforderliche Befehlszeile können Sie
einsparen, indem Sie in der "JI?\..."-Befehlszeile zwischen dem Variablennamen
und der Sprungmarke den entsprechenden Operator angeben: JIN\$$abc<neu 'Variable $$abc wird vor der Auswertung um 1 dekrementiert JIZ\$$abc>neu 'Variable $$abc wird vor der Auswertung um 1 inkrementiert
Mit Hilfe von "JIV\" können
Sie die Sprungbedingung genauer spezifizieren; Sie
können die Vergleichsoperatoren <=, >=, <, >, =, !, <> (! und <> =
ungleich) sowohl für numerische Werte als auch für einen Stringvergleich einsetzen. Beispiele: VAR\$$aaa=10 VAR\$$bbb=b JIV\$$aaa|<12|ende JIV\$$bbb<c:start
Mit dem Befehl "IVN\..." können
Sie prüfen, ob die Zeichenfolge einer im
Datenteil anzugebenden Variablen ausschließlich numerische Zeichen (Ziffern)
enthält. Die zwischen "IVN\..." und "EVN\"
stehenden Befehle werden nur dann
ausgeführt, wenn das der Fall ist. IVN\$$xyz '... EVN\
Mit "JIS\" können Sie durch
Auswertung des Inhalts einer Systemvariablen
("$v1$" ... "$v6$") einen Sprung veranlassen. Die Befehlssyntax lautet wie folgt: JIS\SysVarNummer[|]VergleichsoperatorVergleichswert|Sprungmarke oder JIS\SysVarNummer[|]VergleichsoperatorVergleichswert:Sprungmarke ([|] =
optional). SysVarNummer: 1 ... 6 für
"$v1$" ... "$v6$" Vergleichsoperator:möglich sind <=, >=, <, >, =, !, <> (! und <> =
ungleich); einsetzbar für numerische Werte und auch für Stringvergleich. Vergleichswert: String oder numerischer Wert (Ziffer(nfolge)) Beispiel siehe "RND\"-Beispiel.
© 2006 by Delphin Software
|