Natural for OpenVMS Version 6.3.12 for OpenVMS
 —  Statements  —

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

This document covers the following topics:

For an explanation of the symbols used in the syntax diagram, see Syntax Symbols.

Related 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

Belongs to Function Group: Database Access and Update


Function

The statement AT START OF DATA is used to perform processing immediately after the first of a set of records is read for a processing loop that has been initiated by one of the following statements: READ, FIND, HISTOGRAM, SORT or READ WORK FILE.

See also AT START/END OF DATA Statements in the Programming Guide.

Processing

If the loop-initiating statement contains a WHERE clause, the at-start-of-data condition will be true when the first record is read which meets both the basic search and the WHERE criteria.

This statement is non-procedural, that is, its execution depends on an event, not on where in a program it is located.

Value of Database Fields

All database fields contain the values of the record which caused the at-start-of-data condition to be true (that is, the first record of the set of records to be processed).

Positioning

This statement must be positioned within a processing loop, and it may be used only once per processing loop.

Top of page

Syntax Description

Syntax Element Description
(r)
Reference to a Specific Processing Loop:
An AT START OF DATA statement may be related to a specific outer active processing loop by using the notation (r). If this notation is not used, the statement is related to the outermost active processing loop.
statement ...
Statement(s) to be Executed at Start of Data Condition:

In structured mode, you must supply one or several suitable statements, depending on the situation. For an example of a statement, see Example below.

END-START
End of AT START OF DATA Statement:

In structured mode, the Natural reserved word END-START must be used to end the AT START OF DATA statement.

In reporting mode, use the DO ... DOEND statements to supply one or several suitable statements, depending on the situation, and to end the AT START OF DATA statement. If you specify only a single statement, you can omit the DO ... DOEND statements. With respect to good coding practice, this is not recommended.

statement ...
DO statement ... DOEND

Top of page

Example

** 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                                                            

Output of Program ASDEX1S:

ENTER VALUE FOR CITY PARIS

After entering and confirming name of city:

RECORDS FOUND        26
  
ENTER 'D' TO DISPLAY RECORDS D

Records displayed:

        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                                    

Equivalent reporting-mode example: ASDEX1R.

Top of page