DO/DOEND

DO statement DOEND

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

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

関連機能グループ:レポーティングモードのステートメント


関数

DO および DOEND ステートメントは、下記のステートメントで指定される論理条件に基づいて実行されるステートメント群を指定するためにレポーティングモードで使用します。

注意:
論理条件に基づいて実行するステートメントを 1 つだけ指定した場合は、DO ステートメントと DOEND ステートメントを省略できます。通常のコーディング方法に従い、推奨しません。

制限

  • DO および DOEND ステートメントはレポーティングモードでのみ有効です。

  • WRITE TITLEWRITE TRAILER、および AT 条件ステートメント AT BREAKAT END OF DATAAT END OF PAGEAT START OF DATAAT TOP OF PAGE は、DO/DOEND ステートメント群の中では指定できません。

  • そのループが DOEND ステートメントの前に終了する場合、ループ開始ステートメントを DO/DOEND 内のステートメント群で使用できます。

** Example 'DOEEX1': DO/DOEND                                           
************************************************************************
*                                                                       
EMP. FIND EMPLOYEES WITH CITY = 'MILWAUKEE'                             
  VEH. FIND VEHICLES WITH PERSONNEL-ID = PERSONNEL-ID                   
    IF NO RECORDS FOUND DO                                   
      ESCAPE                                                            
    DOEND                                                      
    DISPLAY PERSONNEL-ID (EMP.) NAME (EMP.)                             
            SALARY (EMP.,1)                                             
            MAKE (VEH.) MAINT-COST (VEH.,1)                             
    AT END OF DATA DO                                          
      WRITE NOTITLE                                                     
        / 10X 'AVG SALARY:'                                             
               T*SALARY (1) AVER(SALARY (1))                            
        / 10X 'AVG MAINTENANCE (ZERO VALUES EXCLUDED):'                 
               T*MAINT-COST (1) NAVER(MAINT-COST (1))                   
    DOEND                                                       
    /*
  LOOP
LOOP  
END

プログラム DOEEX1 の出力:

PERSONNEL         NAME           ANNUAL           MAKE         MAINT-COST
   ID                            SALARY                                  
--------- -------------------- ---------- -------------------- ----------
                                                                         
20021100  JONES                     31000 GENERAL MOTORS            140  
20027800  LAWLER                    29000 GENERAL MOTORS              0  
20027800  LAWLER                    29000 TOYOTA                     86  
20030600  NORDYKE                   47000 FORD                      194  
                                                                         
          AVG SALARY:               35666                                
          AVG MAINTENANCE (ZERO VALUES EXCLUDED):                   140