FOR

FOR operand1

[:]=
EQ
FROM

operand2
(arithmetic-expression)

 
 

TO
THRU

operand3
(arithmetic-expression)

 
 
   

STEP  

operand4
(arithmetic-expression)

    statement
END-FOR   (structured mode only)
LOOP   (reporting mode only)

Dieses Dokument behandelt folgende Themen:

Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.

Verwandte Statements: REPEAT | ESCAPE

Gehört zur Funktionsgruppe: Schleifenverarbeitung


Funktion

Mit dem Statement FOR wird eine Verarbeitungsschleife ausgelöst und gleichzeitig die Anzahl der Schleifendurchläufe gesteuert.

Konsistenzprüfung

Bevor die FOR-Schleife zum erstenmal durchlaufen wird, wird geprüft, ob die Werte der Operanden konsistent sind (d.h. ob es möglich ist, dass durch wiederholtes Addieren von operand4 zu operand2 der Wert von operand3 erreicht werden kann); ist dies nicht der Fall, wird die FOR-Schleife nicht durchlaufen (ohne dass eine Fehlermeldung ausgegeben wird; Ausnahme: wenn der STEP-Wert Null ist, wird eine Meldung ausgegeben).

Syntax-Beschreibung

Operanden-Definitionstabelle:

Operand Mögliche Struktur Mögliche Formate Referenzierung erlaubt Dynam. Definition
operand1   S           N P I F               ja ja
operand2 C S     N     N P I F               ja nein
operand3 C S     N     N P I F               ja nein
operand4 C S     N     N P I F               ja nein

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
operand1
Schleifenkontrollvariable (operand1) und Ausgangswert (operand2):

operand1 kann ein Datenbankfeld oder eine Benutzervariable sein und steuert die Anzahl der Schleifendurchläufe. Der nach dem Schlüsselwort FROM angegebene Wert (operand2) wird der Kontrollvariablen als Ausgangswert zugeordnet, bevor die Verarbeitungsschleife das erste Mal durchlaufen wird. Dieser Ausgangswert erhöht operand2 wird. sich mit jedem Schleifendurchlauf um den Wert des mit STEP angegebenen operand4 (bzw. vermindert sich, wenn operand4 einen negativen Wert hat).

Die Kontrollvariable kann während der Ausführung der Verarbeitungsschleife referenziert werden, um den aktuellen Wert der Kontrollvariablen zu erhalten.

operand2
operand3
TO-Wert:

Die Verarbeitungsschleife wird beendet, sobald operand1 einen Wert enthält, der größer ist als der Wert von operand3 (oder kleiner, falls der STEP-Wert negativ ist).

operand4
STEP-Wert:

Der Wert von operand4 kann positiv oder negativ sein. Ist kein Wert angegeben, wird ein Wert von +1 angenommen.

Je nach dem Vorzeichen des STEP-Wertes wird die Vergleichsoperation für operand3 auf größer als oder kleiner als gesetzt, wenn die Verarbeitungsschleife zum erstenmal durchlaufen wird.

operand4 darf nicht Null (0) sein.

(arithmetic-expression)
Arithmetischer Ausdruck:

Anstelle von operand2, operand3 oder operand4 kann ein beliebiger arithmetischer Ausdruck angegeben werden. Der arithmetische Ausdruck muss in Klammern angegeben werden. Vorangehende Schlüsselwörter dürfen nicht weggelassen werden.

Weitere Informationen siehe arithmetic-expression in der Beschreibung des COMPUTE-Statements.

END-FOR
Ende des FOR-Statements:

Im Structured Mode muss das für Natural reservierte Wort END-FOR zum Beenden des FOR-Statements benutzt werden.

Im Reporting Mode wird das LOOP-Statement zum Beenden des FOR-Statements benutzt.

LOOP

Beispiel - FOR-Statement

** Example 'FOREX1S': FOR (structured mode)                             
************************************************************************
DEFINE DATA LOCAL                                                       
1 #INDEX (I1)                                                           
1 #ROOT  (N2.7)                                                         
END-DEFINE                                                              
*                                                                       
FOR #INDEX 1 TO 5                                                       
  COMPUTE #ROOT = SQRT (#INDEX)                                         
  WRITE NOTITLE '=' #INDEX 3X '=' #ROOT                                 
END-FOR                                                                 
*                                                                       
SKIP 1                                                                  
FOR #INDEX 1 TO 5 STEP 2                                                
  COMPUTE #ROOT = SQRT (#INDEX)                                         
  WRITE '=' #INDEX 3X '=' #ROOT                                         
END-FOR                                                                 
*                                                                       
END                                                                     

Ausgabe des Programms FOREX1S:

#INDEX:    1   #ROOT:   1.0000000
#INDEX:    2   #ROOT:   1.4142135
#INDEX:    3   #ROOT:   1.7320508
#INDEX:    4   #ROOT:   2.0000000
#INDEX:    5   #ROOT:   2.2360679
                                 
#INDEX:    1   #ROOT:   1.0000000
#INDEX:    3   #ROOT:   1.7320508
#INDEX:    5   #ROOT:   2.2360679

Äquivalentes Reporting-Mode-Beispiel: FOREX1R.