BEFORE BREAK PROCESSING

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

BEFORE [BREAK] [PROCESSING]
statement ../graphics/dot3.gif
END-BEFORE

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

BEFORE [BREAK] [PROCESSING]

statement

DOstatement ../graphics/dot3.gif DOEND

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

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

関連ステートメント:ACCEPT/REJECT | AT BREAK | AT START OF DATA | AT END OF DATA | BACKOUT TRANSACTION | DELETE | END TRANSACTION | FIND | GET | GET SAME | GET TRANSACTION | HISTOGRAM | LIMIT | PASSW | PERFORM BREAK PROCESSING | READ | RETRY | STORE | UPDATE

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


関数

BEFORE BREAK PROCESSING ステートメントは、次の動作の前に処理を実行するために、自動ブレイク処理と組み合わせて使用します。

  • ブレイクのコントロールフィールドの値がチェックされる前

  • AT BREAK ステートメントで指定されたステートメントが実行される前

  • Natural システム関数が評価される前

このステートメントは、ブレイク処理に使用するユーザー定義変数の値を初期化したり、計算を行ったりするためによく使用します(AT BREAK ステートメントを参照)。

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

プログラミングガイド』の次のセクションも参照してください。

制限

  • BEFORE BREAK PROCESSING ステートメントは、次のステートメントのいずれかで始まる処理ループにだけ使用できます。

    BEFORE BREAK PROCESSING ステートメントは、処理ループ内であればどこでも指定することができます。常にこのステートメントを含む処理ループに関連付けられます。BEFORE BREAK PROCESSING ステートメントは、1 つの処理ループ内で 1 回だけ指定できます。

  • BEFORE BREAK PROCESSING ステートメントを、PERFORM BREAK PROCESSING ステートメントと一緒に使用することはできません。

構文説明

構文要素 説明
statement...
ブレイク処理のステートメント:
状況に応じて、statement の代わりに、1 つ以上の適切なステートメントを指定する必要があります。

ステートメントの例については、下記の「」を参照してください。

ブレイク処理が行われない(処理ループに AT BREAK ステートメントが指定されていない)場合、BEFORE BREAK PROCESSING ステートメントで指定したステートメントは実行されません

END-BEFORE
BEFORE BREAK PROCESSING ステートメントの終了:

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

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

statement ...
DO statement ... DOEND

** Example 'BBPEX1': BEFORE BREAK PROCESSING                            
************************************************************************
DEFINE DATA LOCAL                                                       
1 EMPLOY-VIEW VIEW OF EMPLOYEES                                         
  2 CITY                                                                
  2 NAME                                                                
  2 SALARY (1)                                                          
  2 BONUS  (1,1)                                                        
*                                                                       
1 #INCOME  (P11)                                                        
END-DEFINE                                                              
*                                                                       
LIMIT 7                                                                 
READ EMPLOY-VIEW BY CITY = 'L'                                          
  /*                                                                    
 BEFORE BREAK PROCESSING                                               
    COMPUTE #INCOME = SALARY (1) + BONUS (1,1)                          
  END-BEFORE                                                    
  /*                                                                    
  AT BREAK OF CITY                                                    
    WRITE NOTITLE  'AVERAGE INCOME FOR' OLD (CITY) 20X AVER(#INCOME) /
  END-BREAK                                                           
  /*                                                                  
  DISPLAY CITY 'NAME' NAME 'SALARY' SALARY (1) 'BONUS' BONUS (1,1)    
END-READ                                                              
END

プログラム BBPEX1 の出力:

        CITY                 NAME           SALARY     BONUS           
-------------------- -------------------- ---------- ----------        
                                                                       
LA BASSEE            HULOT                    165000      70000        
AVERAGE INCOME FOR LA BASSEE                                     235000
                                                                       
LA CHAPELLE ST LUC   GUILLARD                 124100      23000        
LA CHAPELLE ST LUC   BERGE                    198500      50000        
LA CHAPELLE ST LUC   POLETTE                  124090      23000        
LA CHAPELLE ST LUC   DELAUNEY                 115000      23000        
LA CHAPELLE ST LUC   SCHECK                   125600      23000        
LA CHAPELLE ST LUC   KREEBS                   184550      50000        
AVERAGE INCOME FOR LA CHAPELLE ST LUC                            177306