AT END OF DATA

#### Search Results

Search

# AT END OF DATA

#### Structured Mode-Syntax

[`AT`] `END` [`OF`] `DATA` [(r)]
statement
`END-ENDDATA`

#### Reporting Mode-Syntax

[`AT`] `END` [`OF`] `DATA` [(r)]
| statement |
`DO` statement `DOEND`

Dieser Dokument behandelt folgende Themen:

- Funktion

- Einschränkungen

- Syntax-Beschreibung

- Beispiel

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

Verwandte Statements: `ACCEPT/REJECT` | `AT BREAK` | `AT START OF DATA` | `BACKOUT TRANSACTION` | `BEFORE BREAK PROCESSING` | `DELETE` | `END TRANSACTION` | `FIND` | `GET` | `GET SAME` | `GET TRANSACTION DATA` | `HISTOGRAM` | `LIMIT` | `PASSW` | `PERFORM BREAK PROCESSING` | `READ` | `RETRY` | `STORE` | `UPDATE`

Gehört zur Funktionsgruppe: Datenbankzugriffe und Datenbankänderungen

## Funktion

Mit dem Statement `AT END OF DATA` können Sie eine Verarbeitung angeben, die ausgeführt werden soll, nachdem in einer Verarbeitungsschleife alle Datensätze verarbeitet worden sind.

Dieses Abschnitt behandelt folgende Themen:

- Verarbeitung

- Feldwerte der Datenbankfelder

- Positionierung

- Systemfunktionen

Siehe auch AT START/END OF DATA-Statement im Leitfaden zur Programmierung.

### Verarbeitung

Dieses Statement ist nicht prozedural (das heißt, seine Ausführung hängt von einem Ereignis ab, nicht davon, wo im Programm es steht).

### Feldwerte der Datenbankfelder

Zu dem Zeitpunkt, zu dem das `AT END OF DATA`-Statement ausgeführt wird, enthalten alle Datenbankfelder die Werte des zuletzt verarbeiteten Datensatzes.

### Positionierung

Das `AT END OF DATA`-Statement muss im selben Objektmodul stehen wie das Statement, mit dem die Schleife initiiert wurde.

### Systemfunktionen

Natural-Systemfunktionen können in Verbindung mit einem `AT END OF DATA`-Statement verwendet werden, wie im Abschnitt Systemfunktionen für Verarbeitungsschleifen benutzen in der Systemfunktionen-Dokumentation beschrieben.

## Einschränkungen

- Das Statement kann nur bei einer Verarbeitungsschleife eingesetzt werden, die mit einem der folgenden Statements initiiert wurde: `FIND`, `READ`, `READ WORK FILE`, `HISTOGRAM` oder `SORT`.

- Pro Schleife darf höchstens ein `AT END OF DATA`-Statement verwendet werden.

- Das `AT END OF DATA`-Statement wird nur dann ausgeführt, wenn die betreffende Schleife tatsächlich durchlaufen wird.

## Syntax-Beschreibung

Syntax-Element-Beschreibung:

Syntax-Element | Beschreibung
--- | ---
`(r)` | Referenzierungsnotation: Normalerweise bezieht sich das Statement `AT END OF DATA` auf die jeweils äußerste aktive Verarbeitungsschleife. Wollen Sie, dass es sich auf eine andere aktive Schleife bezieht, so verwenden Sie hierzu die Notation `(r)`, wobei `r` das Statement-Label oder die Sourcecode-Zeilennummer des Statements ist, welches die gewünschte Schleife initiiert.
`statement ...` | Bei Eintreten der Bedingung auszuführende(s) Statement(s): Im Structured Mode muss anstelle von `statement` je nach Situation eines oder mehrere passende Statements angeben werden. Siehe Beispiel weiter unten.
`END-ENDDATA` | Ende des AT END OF DATA-Statements: Im Structured Mode muss das für Natural reservierte Schlüsselwort `END-ENDDATA` zum Beenden des `AT END OF DATA`-Statements benutzt werden. Im Reporting Mode werden die Statements `DO ... DOEND` benutzt, um je nach Situation eines oder mehrere passende Statements anzugeben, und um das `AT END OF DATA`-Statement zu beenden. Falls Sie nur ein einziges Statement angeben, können Sie die Statements `DO ... DOEND` weglassen. Das ist jedoch nicht im Sinne einer guten Kodierpraxis und wird nicht empfohlen.
`statement` `DO statement ... DOEND`

## Beispiel

    ** Example 'AEDEX1S': AT END OF DATA
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 NAME
      2 FIRST-NAME
      2 SALARY    (1)
      2 CURR-CODE (1)
    END-DEFINE
    *
    LIMIT 5
    EMP. FIND EMPLOY-VIEW WITH CITY = 'STUTTGART'
      IF NO RECORDS FOUND
        ENTER
      END-NOREC
      DISPLAY PERSONNEL-ID NAME FIRST-NAME
              SALARY (1) CURR-CODE (1)
      /*
       AT END OF DATA
        IF *COUNTER (EMP.) = 0
          WRITE 'NO RECORDS FOUND'
          ESCAPE BOTTOM
        END-IF
        WRITE NOTITLE / 'SALARY STATISTICS:'
                      / 7X 'MAXIMUM:' MAX(SALARY(1))  CURR-CODE (1)
                      / 7X 'MINIMUM:' MIN(SALARY(1))  CURR-CODE (1)
                      / 7X 'AVERAGE:' AVER(SALARY(1)) CURR-CODE (1)
        END-ENDDATA
      /*
    END-FIND
    *
    END

Siehe auch Natural-Systemfunktionen für Verarbeitungsschleifen.

Ausgabe des Programms `AEDEX1S`:

    PERSONNEL         NAME              FIRST-NAME        ANNUAL   CURRENCY
       ID                                                 SALARY     CODE
    --------- -------------------- -------------------- ---------- --------

    11100328  BERGHAUS             ROSE                      70800 DM
    11100329  BARTHEL              PETER                     42000 DM
    11300313  AECKERLE             SUSANNE                   55200 DM
    11300316  KANTE                GABRIELE                  61200 DM
    11500304  KLUGE                ELKE                      49200 DM

    SALARY STATISTICS:
           MAXIMUM:      70800 DM
           MINIMUM:      42000 DM
           AVERAGE:      55680 DM

Äquivalentes Reporting-Mode-Beispiel: `AEDEX1R`.

### On this page

- Funktion
- Einschränkungen
- Syntax-Beschreibung
- Beispiel