AT START OF DATA

Structured Mode-Syntax

[ATSTART [OFDATA [(r)]
   statement ../graphics/dot3.gif
END-START

Reporting Mode-Syntax

[ATSTART [OFDATA  [(r)]

statement

DO statement ../graphics/dot3.gif   DOEND

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