AT START OF DATA

#### Search Results

Search

# AT START OF DATA

#### Structured Mode-Syntax

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

#### Reporting Mode-Syntax

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

Dieses Dokument behandelt folgende Themen:

- Funktion

- 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 END 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 START OF DATA` können Sie eine Verarbeitung angeben, die ausgeführt werden soll, unmittelbar nachdem der erste Datensatz einer mit einem Statement `READ`, `FIND`, `HISTOGRAM`, `SORT` oder `READ WORK FILE` initiierten Verarbeitungsschleife gelesen worden ist.

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

### Verarbeitung

Falls das schleifeninitiierende Statement eine `WHERE`-Klausel enthält, wird die `AT START OF DATA`-Verarbeitung erst dann ausgeführt, wenn der erste Datensatz gelesen wird, der sowohl das primäre Suchkriterium als auch die `WHERE`-Bedingung erfüllt.

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 START OF DATA`-Statement ausgeführt wird, enthalten alle Datenbankfelder die Werte des zuerst verarbeiteten Datensatzes (d.h. des ersten Datensatzes, der die `AT START OF DATA`-Bedingung erfüllt).

### Positionierung

Das `AT START OF DATA`-Statement muss innerhalb der betreffenden Verarbeitungsschleife stehen. Pro Verarbeitungsschleife darf höchstens ein `AT START OF DATA`-Statement verwendet werden.

## Syntax-Beschreibung

Syntax-Element-Beschreibung:

Syntax-Element | Beschreibung
--- | ---
`(r)` | Referenzieren einer bestimmten Verarbeitunsgsschleife: Normalerweise bezieht sich das Statement `AT START 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-START` | Ende des AT START OF DATA-Statements: Im Structured Mode muss das für Natural reservierte Schlüsselwort `END-START` zum Beenden des `AT START 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 START 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 'ASDEX1S': AT START OF DATA (structured mode)
    ***********************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 NAME
      2 FIRST-NAME
      2 CITY
    *
    1 #CNTL (A1)  INIT <' '>
    1 #CITY (A20) INIT <' '>
    END-DEFINE
    *
    REPEAT
      INPUT 'ENTER VALUE FOR CITY'  #CITY
      IF #CITY = ' ' OR = 'END'
        STOP
      END-IF
      FIND EMPLOY-VIEW WITH CITY = #CITY
        IF NO RECORDS FOUND
          WRITE NOTITLE NOHDR 'NO RECORDS FOUND'
          ESCAPE BOTTOM
        END-NOREC
        /*
       AT START OF DATA
          INPUT (AD=O) 'RECORDS FOUND' *NUMBER //
                       'ENTER ''D'' TO DISPLAY RECORDS' #CNTL (AD=A)
          IF #CNTL NE 'D'
            ESCAPE BOTTOM
          END-IF
        END-START
        /*
        DISPLAY NAME FIRST-NAME
      END-FIND
    END-REPEAT
    END

Ausgabe des Programms `ASDEX1S`:

    ENTER VALUE FOR CITY PARIS

Nach Eingabe und Bestätigung des Namens der Stadt:

    RECORDS FOUND        26

    ENTER 'D' TO DISPLAY RECORDS D

Angezeigte Datensätze:

            NAME              FIRST-NAME
    -------------------- --------------------

    MAIZIERE             ELISABETH
    MARX                 JEAN-MARIE
    REIGNARD             JACQUELINE
    RENAUD               MICHEL
    REMOUE               GERMAINE
    LAVENDA              SALOMON
    BROUSSE              GUY
    GIORDA               LOUIS
    SIECA                FRANCOIS
    CENSIER              BERNARD
    DUC                  JEAN-PAUL
    CAHN                 RAYMOND
    MAZUY                ROBERT
    FAURIE               HENRI
    VALLY                ALAIN
    BRETON               JEAN-MARIE
    GIGLEUX              JACQUES
    KORAB-BRZOZOWSKI     BOGDAN
    XOLIN                CHRISTIAN
    LEGRIS               ROGER
    VVVV

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

### On this page

- Funktion
- Syntax-Beschreibung
- Beispiel