FOR

#### Search Results

Search

# 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:

- Funktion

- Syntax-Beschreibung

- Beispiel - FOR-Statement

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`.

### On this page

- Funktion
- Syntax-Beschreibung
- Beispiel - FOR-Statement