&var Inhalt einer Prozedurvariablen testen
*IF &[&]var1 vgl  [ [C|L|X] 'string' | zahl | &[&]var2 ] cmd
Der Inhalt der Prozedurvariablen &var1 wird mit der in Hochkommas eingeschlossenen Zeichenfolge string/mit dem Inhalt der Prozedurvariablen &var2 verglichen.
&var1 | &var2
Für &var1 bzw. &var2 kann jeweils folgendes Konstrukt, bestehend aus Variablenname, Anfangsspalte und Länge angegeben werden.
&var [ ( [s] [, l] ) ]
Bezeichnung eines Teilstrings einer Variablen.
s Anfangsspalte für den Teilstring der Variablen. ( 1 <= s < 80 ).
Standard: s = 1 (Spalte 1).
l Länge des Teilstrings. ( 1 <= l <= 80 ).
Im ersten Vergleichsoperanden (&var1) können für l auch die Sonderzeichen * bzw. $ angegeben werden. Die besondere Bedeutung dieser Zeichen ist in einen nachfolgenden Abschnitt genau beschrieben.
Standard: l = Gesamtlänge der Variablen.
Beispiele:
&DATEI(4) Inhalt der Variablen &DATEI ab Spalte 4 bis zum Ende
&DATEI(4,20) Inhalt der Variablen &DATEI ab Spalte 4 in der Länge 20
&DATEI(,20) Inhalt der Variablen &DATEI ab Spalte 1 in der Länge 20
&&var1 | &&var2
Der Inhalt der Variablen &var1 | &var2 wird als der Name einer anderen Variablen betrachtet, deren Inhalt dann ausgewertet wird.
Beispiel: &NA='CON1'. Durch &&NA wird auf den Inhalt der CFS-internen Variablen &CON1 Bezug genommen. Ein weiteres Beispiel für zweistufige Variablensubstitution finden Sie auf Seite 20-.
vgl Vergleichsoperator: [-] { > | < | = }
Fällt der alphanumerische Vergleich auf größer (>) / kleiner (<) / gleich (=) positiv aus, bzw. nicht positiv bei vorangestelltem '-' , so wird das unter cmd angegebene Kommando ausgeführt. Anstelle von -= (ungleich) kann auch <> angegeben werden.
[C|L|X]'string' konstante Zeichenfolge. Innerhalb der Zeichenfolge vorkommende Hochkommas müssen verdoppelt werden ('').
Der Inhalt der links des Gleichheitszeichens stehenden Variablen bzw. deren Teilstring wird mit der angegebenen Konstanten verglichen. Gleichheit ist nur dann gegeben, wenn sowohl die entsprechenden Längenmerkmale, wie auch die Dateninhalte übereinstimmen. Überschüssige Leerzeichen im Variableninhalt, die in der Konstanten nicht enthalten sind, führen zu einem negativen Vergleichsergebnis. Näheres hierzu siehe nächsten Abschnitt.
zahl Falls der Vergleichswert string einen Zahlenwert beinhaltet, so sind zwei Fälle zu unterscheiden:
a) Angabe von string in Hochkommas 'zahl': Der String wird vor dem Vergleich intern in eine sechsstellige Zahl mit führenden Nullen umgewandelt.
b) Bei Angabe von zahl ohne Hochkommas wird der String in der angegebenen Länge 1 zu 1 für den Vergleich übernommen.
Beispiel: *&N='261197'
*IF &N(1,2) < 27 SKIP .LT   --> Vergleich ist positiv ('26' < '27')
*IF &N(1,2) < '27' SKIP .LT --> Vergleich ist negativ ('26' > '000027')
cmd beliebige Anweisung der Prozedursprache von CFS. Der normalerweise eine Prozeduranweisung einleitende Stern darf nicht angegeben werden.
Sonderbedeutung der Längenangaben * bzw. $ beim Vergleich mit einer Konstanten
* Vergleiche die linksstehende Variable nur in der Länge der rechts des Gleichheitszeichens angegebenen Konstanten. Ist die Variable länger, so werden diese Zeichen für den Vergleich nicht herangezogen. Die Angabe &VAR(,*) kann in der Form &VAR(*) abgekürzt werden.
$ Expandiere die rechts des Gleichheitszeichens angegebene Konstante durch Aneinanderfügen solange, bis sich eine Zeichenfolge ergibt, die die gleiche Länge aufweist wie der Inhalt der zu vergleichenden Variablen.
Die Angabe &VAR(,$) kann in der Form &VAR($) abgekürzt werden.
Beispiele:
*IF &DATEI(,*)='ABC' SKIP .ABC oder in vereinfachter Schreibweise:
*IF &DATEI(*)='ABC'  SKIP .ABC
Der Anfang der Variablen &DATEI wird in der Länge 3 mit der Konstanten 'ABC' verglichen und ggf. ein Sprung zum Label .ABC ausgeführt.
*IF &DATEI(25,*)=' ' SKIP .A25
Der Inhalt der Variablen &DATEI wird ab Spalte 25 in der Länge 1 mit der Konstanten '_' verglichen. Bei Gleichheit wird ein Sprung zum Label A25 durchgeführt.
*IF &DATEI(,$)=' ' SKIP .A27 oder in vereinfachter Schreibweise:
*IF &DATEI($)=' '  SKIP .A27
Der gesamte Inhalt der Variablen &DATEI wird mit einer Konstanten mit entsprechend vielen Leerzeichen ' ' verglichen. Falls der Inhalt von &DATEI nur aus Leerzeichen besteht, wird ein Sprung zum Label .A27 ausgeführt.
*IF &DATEI(25,$)=' ' SKIP .A25
Es wird geprüft, ob die Variable &DATEI in Spalte 25 oder höher nur noch Leerzeichen (mindestens eines) enthält. Ist dies der Fall, so wird ein Sprung zum Label .A25 ausgeführt.
Hinweise:
Beim Vergleich einer Prozedurvariablen mit einer Konstanten, bzw. mit einer zweiten Prozedurvariablen wird Groß-/Kleinschreibung standardmäßig nicht berücksichtigt. Durch die Anweisung *SET CASE=Y kann die Berücksichtigung von Groß-/Kleinschreibung jedoch eingeschaltet werden.
Zum Prüfen, ob der Inhalt einer Variablen eine bestimmte Länge (z.B. 6 Zeichen) nicht überschreitet, ist folgende Abfrage zu verwenden:
*IF &VSN(7,1) = X'00' SKIP .KUERZER-ALS-7
Beispiele:
*IF &DAT='' PROMPT &DAT,'Bitte Dateinamen eingeben '
Falls die Variable &DAT noch keinen Wert zugewiesen hat, so wird über die Prozeduranweisung *PROMPT vom Benutzer ein Wert für die Variable angefordert.
*IF &DAT=&D2 SKIP .GLEICH
Falls die Variable &DAT in ihrem Wert mit der Variablen &D2 übereinstimmt, so wird ein Sprung zu dem Label ".GLEICH" durchgeführt.
*IF &VAR1(2,3)=&D2(1,3) WRITE 'GLEICH'
Falls der Inhalt der Variablen &VAR1 in Spalte 2, 3 und 4 mit dem Inhalt der Variablen &D2 in Spalte 1, 2 und 3 übereinstimmt, so wird der Text 'GLEICH' am Bildschirm ausgegeben.
*IF &ZAEHLER>9 EXIT
Der Ablauf der Prozedur wird beendet, falls die Variable &ZAEHLER einen Wert größer als 9 besitzt.
Weitere Beispiele für Variablenzuweisungen finden Sie auf Seite 20-.