AT END OF DATA

Structured Mode-Syntax

[AT] END [OFDATA  [(r)]
    statement ../graphics/dot3.gif
END-ENDDATA

Reporting Mode-Syntax

[AT] END [OFDATA  [(r)]

statement

DO statement ../graphics/dot3.gif DOEND

Dieser Dokument behandelt folgende Themen:

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:

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