DO/DOEND

#### Search Results

Search

# DO/DOEND

`DO` `statement` `DOEND`

Dieses Dokument behandelt folgende Themen:

- Funktion

- Einschränkungen

- Beispiel

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

Gehört zur Funktionsgruppe: Reporting Mode-Statements

## Funktion

Die Statements `DO` und `DOEND` werden im Reporting Mode verwendet, wenn mehrere Statements in Abhängigkeit von einer logischen Bedingung ausgeführt werden sollen.

- `AT BREAK`

- `AT END OF DATA`

- `AT END OF PAGE`

- `AT START OF DATA`

- `AT TOP OF PAGE`

- `BEFORE BREAK PROCESSING`

- `FIND ... IF NO RECORDS FOUND`

- `IF`

- `IF SELECTION`

- `ON ERROR`

- `READ WORK FILE ... AT END OF FILE`

Anmerkung
Wenn Sie nur ein einziges Statement angeben, das in Abhängigkeit von einer logischen Bedingung ausgeführt werden soll, können Sie die Statements `DO` und `DOEND` weglassen. Das ist jedoch nicht im Sinne einer guten Kodierpraxis und wird nicht empfohlen.

## Einschränkungen

- Die Statements `DO` und `DOEND` gelten nur im Reporting Mode.

- `WRITE TITLE`, `WRITE TRAILER`, und die Bedingungs-Statements, die mit `AT` beginnen (`AT BREAK`, `AT END OF DATA`, `AT END OF PAGE`, `AT START OF DATA`, `AT TOP OF PAGE`) dürfen innerhalb einer `DO`/`DOEND`-Konstruktion nicht verwendet werden..

- Wenn Sie innerhalb einer `DO`/`DOEND`-Konstruktion eine Verarbeitungsschleife initiieren, müssen Sie sie vor dem `DOEND`-Statement wieder schließen.

## Beispiel

    ** Example 'DOEEX1': DO/DOEND
    ************************************************************************
    *
    EMP. FIND EMPLOYEES WITH CITY = 'MILWAUKEE'
      VEH. FIND VEHICLES WITH PERSONNEL-ID = PERSONNEL-ID
        IF NO RECORDS FOUND DO
          ESCAPE
        DOEND
        DISPLAY PERSONNEL-ID (EMP.) NAME (EMP.)
                SALARY (EMP.,1)
                MAKE (VEH.) MAINT-COST (VEH.,1)
        AT END OF DATA DO
          WRITE NOTITLE
            / 10X 'AVG SALARY:'
                   T*SALARY (1) AVER(SALARY (1))
            / 10X 'AVG MAINTENANCE (ZERO VALUES EXCLUDED):'
                   T*MAINT-COST (1) NAVER(MAINT-COST (1))
        DOEND
        /*
      LOOP
    LOOP
    END

Ausgabe des Programms `DOEEX1`:

    PERSONNEL         NAME           ANNUAL           MAKE         MAINT-COST
       ID                            SALARY
    --------- -------------------- ---------- -------------------- ----------

    20021100  JONES                     31000 GENERAL MOTORS            140
    20027800  LAWLER                    29000 GENERAL MOTORS              0
    20027800  LAWLER                    29000 TOYOTA                     86
    20030600  NORDYKE                   47000 FORD                      194

              AVG SALARY:               35666
              AVG MAINTENANCE (ZERO VALUES EXCLUDED):                   140

### On this page

- Funktion
- Einschränkungen
- Beispiel