LIMIT

LIMIT n       

Dieses Dokument behandelt folgende Themen:

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

Gehört zur Funktionsgruppe: Datenbankzugriffe und Datenbankänderungen


Funktion

Das Statement LIMIT dient dazu, die Anzahl der Durchläufe einer Verarbeitungsschleife, die mit einem FIND-, READ- oder HISTOGRAM-Statement initiiert wurde, zu begrenzen.

Das festgesetzte Limit gilt für alle nachfolgenden Verarbeitungsschleifen des Programms, bis es durch ein weiteres LIMIT-Statement außer Kraft gesetzt wird.

Das LIMIT-Statement gilt nicht für einzelne Statements, in denen ausdrücklich ein anderes Limit angegeben ist, zum Beispiel FIND (n) ....

Wenn das Limit erreicht ist, wird die Verarbeitung der betreffenden Schleife abgebrochen und eine entsprechende Meldung ausgegeben. Siehe auch Session-Parameter LE, der die Reaktion darauf festlegt, wann das Limit für die Verarbeitungsschleife überschritten wird.

Wird kein LIMIT-Statement verwendet, so gilt standardmäßig das mit dem Natural- Profilparameter LT bei der Natural-Installation festgesetzte globale Limit.

Zählweise

Um zu ermitteln, ob eine Verarbeitungsschleife das Limit erreicht hat, wird jeder mit der Schleife gelesene Datensatz gezählt; hierbei gilt:

  • Ein Datensatz, der aufgrund der WHERE-Bedingung eines FIND- oder READ-Statements zurückgewiesen wird, wird nicht mitgezählt.

  • Ein Datensatz, der aufgrund eines ACCEPT/REJECT-Statements zurückgewiesen wird, wird mitgezählt.

Syntax-Beschreibung

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
LIMIT n
Limit-Angabe:

Das Limit n muss als numerische Konstante angegeben werden und kann einen Wert von 0 bis 4294967295 (führende Nullen sind optional) haben.

Ist das Limit auf Null (0) gesetzt, wird die Schleife nicht durchlaufen.

Beispiele

Beispiel 1 — LIMIT-Statement

** Example 'LMTEX1': LIMIT                                              
************************************************************************
DEFINE DATA LOCAL                                                       
1 EMPLOY-VIEW VIEW OF EMPLOYEES                                         
  2 PERSONNEL-ID                                                        
  2 NAME                                                                
  2 CITY                                                                
END-DEFINE                                                              
*                                                                       
LIMIT 4                                                           
*                                                                       
READ EMPLOY-VIEW BY NAME STARTING FROM 'BAKER'                          
  DISPLAY NOTITLE                                                       
          NAME PERSONNEL-ID CITY *COUNTER                               
END-READ                                                                
*                                                                       
END                                                                    

Ausgabe des Programms LMTEX1:

        NAME         PERSONNEL         CITY            CNT     
                        ID                                     
-------------------- --------- -------------------- -----------
                                                               
BAKER                20016700  OAK BROOK                      1
BAKER                30008042  DERBY                          2
BALBIN               60000110  BARCELONA                      3
BALL                 30021845  DERBY                          4

Beispiel 2 — LIMIT-Statement (gültig für zwei Datenbankschleifen)

** Example 'LMTEX2': LIMIT (valid for two database loops)               
************************************************************************
DEFINE DATA LOCAL                                                       
1 EMPLOY-VIEW VIEW OF EMPLOYEES                                         
  2 NAME                                                                
END-DEFINE                                                              
*                                                                       
LIMIT 3                                                          
*                                                                       
FIND EMPLOY-VIEW WITH NAME > 'A'                                        
  READ EMPLOY-VIEW BY NAME STARTING FROM 'BAKER'                        
    DISPLAY NOTITLE 'CNT(0100)' *COUNTER(0100)                          
                    'CNT(0110)' *COUNTER(0110)                          
  END-READ                                                              
END-FIND                                                                
*                                                                       
END                                                                    

Ausgabe des Programms LMTEX2:

 CNT(0100)   CNT(0110) 
----------- -----------
                       
          1           1
          1           2
          1           3
          2           1
          2           2
          2           3
          3           1
          3           2
          3           3