| LIMITn | 
This document covers the following topics:
Related 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
Belongs to Function Group: Database Access and Update
The LIMIT statement is used to limit the number of
                       iterations of a processing loop initiated with a FIND, READ, or HISTOGRAM statement.
               
The limit remains in effect for all subsequent processing loops in the
                       program until it is overridden by another LIMIT statement.
               
The LIMIT statement does not apply to individual statements
                       in which a limit is explicitly specified (for example,
                       FIND (n)
                             ...).
               
If the limit is reached, processing stops and a message is displayed;
                       see also the session parameter LE which determines the
                       reaction when the limit for the processing loop is exceeded.
               
If no LIMIT statement is specified, the default global
                       limit defined with the Natural profile parameter
                       LT during
                       Natural installation will be used.
               
To determine whether a processing loop has reached the limit, each record read in the loop is counted against the limit. If the processing loop has reached the limit, the following will apply:
A record that is rejected because of criteria specified in a
                                FIND or
                                READ statement
                                WHERE clause is
                                not counted against the limit.
                     
A record that is rejected as a result of an
                                ACCEPT/REJECT
                                statement is counted against the limit.
                     
** 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 
                            NAME         PERSONNEL         CITY            CNT     
                        ID                                     
-------------------- --------- -------------------- -----------
                                                               
BAKER                20016700  OAK BROOK                      1
BAKER                30008042  DERBY                          2
BALBIN               60000110  BARCELONA                      3
BALL                 30021845  DERBY                          4 
                    
                   
               ** 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 
                     CNT(0100)   CNT(0110) 
----------- -----------
                       
          1           1
          1           2
          1           3
          2           1
          2           2
          2           3
          3           1
          3           2
          3           3