AT START OF DATA

ストラクチャードモード構文

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

レポーティングモード構文

[ATSTART [OFDATA [(r)]

statement

DOstatement../graphics/dot3.gif DOEND

このドキュメントでは、次のトピックについて説明します。

構文図で使用されている記号については、「構文記号」を参照してください。

関連ステートメント: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

関連機能グループ:データベースへのアクセスと更新


関数

AT START OF DATA ステートメントは、以下のいずれかのステートメントで始まる処理ループで最初のレコードが読まれた直後の処理を指定します。READFINDHISTOGRAMSORT、または READ WORK FILE

プログラミングガイド』の「AT START/END OF DATA ステートメント」を参照してください。

処理

ループ開始ステートメントに WHERE 節がある場合は、基本検索条件と WHERE 条件の両方を満たす最初のレコードが読まれた時点で、AT START OF DATA 条件が真になります。

このステートメントは非手続き型なので、プログラム内の位置ではなくイベントによって実行されます。

データベースフィールドの値

データベースフィールドには、AT START OF DATA 条件が真になるレコードの値が含まれます。つまり、処理するすべてのレコード集合の第 1 レコードの値になります。

位置

このステートメントは、処理ループの中に指定する必要があります。また、その処理ループに対して 1 回だけ使用できます。

構文説明

構文要素 説明
(r)
特定の処理ループの参照:
AT START OF DATA ステートメントは、表記 (r) によって、外部のアクティブな特定の処理ループに関連付けることができます。この表記を使用しなかった場合、ステートメントはアクティブな処理ループ内の一番外側に関連付けられます。
statement ...
AT START OF DATA で実行するステートメント:

ストラクチャードモードでは、状況に応じて、1 つ以上の適切なステートメントを指定する必要があります。ステートメントの例については、下記の「」を参照してください。

END-START
AT START OF DATA ステートメントの終了:

ストラクチャードモードでは、AT START OF DATA ステートメントを終了するには、Natural の予約語 END-START を使用する必要があります。

レポーティングモードでは、状況に応じて、DO ... DOEND ステートメントを使用して 1 つ以上の適切なステートメントを指定し、AT START OF DATA ステートメントを終了します。単一のステートメントのみを指定する場合は、DO ... DOEND ステートメントを省略できます。よいコーディング習慣に則して、これはお勧めしません。

statement ...
DO statement ... DOEND

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

プログラム ASDEX1S の出力:

ENTER VALUE FOR CITY PARIS

市町村名を入力して確認した後:

RECORDS FOUND        26
  
ENTER 'D' TO DISPLAY RECORDS D

表示されるレコード:

        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

レポーティングモードの例については、次のプログラムを参照してください:ASDEX1R