バージョン 4.2.5
 —  ステートメント  —

REPEAT

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

関連ステートメント:FOR | ESCAPE

関連機能グループ:「ループ実行


機能

REPEAT ステートメントは、処理ループを開始するために使用します。

Top of page

構文説明

このステートメントには、2 つの異なる構造が可能です。

論理条件の指定位置(ループの最初または最後)によって評価のタイミングが決まります。

論理条件の詳細については、「論理条件基準」(『プログラミングガイド』)を参照してください。

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

構文 1:

REPEAT            
statement

UNTIL

logical-condition

WHILE
END-REPEAT ストラクチャードモードのみ
[ LOOP] レポーティングモードのみ

構文 2:

REPEAT  
 

UNTIL

logical-condition

statement
WHILE
 
END-REPEAT ストラクチャードモードのみ  
[ LOOP] レポーティングモードのみ  

構文要素の説明:

UNTIL 論理条件が真になるまで、処理ループは継続します。
WHILE 論理条件が真である限り、処理ループは継続します。
logical-condition

論理条件を指定すると、その条件によりいつループ実行を終了するかが決まります。

論理条件を指定しない場合、ループ内で ESCAPESTOP、または TERMINATE ステートメントを指定し、ループから出る必要があります。

END-REPEAT REPEAT ステートメントを終了するには、Natural 予約語 END-REPEAT を使用する必要があります。

Top of page

例 1 - REPEAT

** Example 'RPTEX1S': REPEAT (structured mode)                          
************************************************************************
DEFINE DATA LOCAL                                                       
1 EMPLOY-VIEW VIEW OF EMPLOYEES                                         
  2 PERSONNEL-ID                                                        
  2 NAME                                                                
*                                                                       
1 #PERS-NR (A8)                                                         
END-DEFINE                                                              
*                                                                       
REPEAT                                                            
  INPUT 'ENTER A PERSONNEL NUMBER:' #PERS-NR                            
  IF #PERS-NR = ' '                                                     
    ESCAPE BOTTOM                                                       
  END-IF                                                                
  /*                                                                    
  FIND EMPLOY-VIEW WITH PERSONNEL-ID = #PERS-NR                         
    IF NO RECORD FOUND                                                  
      REINPUT 'NO RECORD FOUND'                                         
    END-NOREC           
    DISPLAY NOTITLE NAME
  END-FIND              
END-REPEAT          
*                       
END                    

プログラム RPTEX1S の出力:

ENTER A PERSONNEL NUMBER: 11500304

人事番号を入力および確定した後:

        NAME        
--------------------
                    
KLUGE              

レポーティングモードの例はライブラリ SYSEXRM のプログラム RPTEX1R を参照してください。

例 2 - WHILE および UNTIL オプションの使用

** Example 'RPTEX2S': REPEAT (with WHILE and UNTIL option)              
************************************************************************
DEFINE DATA LOCAL                                                       
1 #X (I1) INIT <0>                                                      
1 #Y (I1) INIT <0>                                                      
END-DEFINE                                                              
*                                                                       
REPEAT WHILE #X <= 5                                              
  ADD 1 TO #X                                                           
  WRITE NOTITLE '=' #X                                                  
END-REPEAT                                                           
*                                                                       
SKIP 3                                                                  
REPEAT                                                             
  ADD 1 TO #Y                                                           
  WRITE '=' #Y
  UNTIL #Y = 6                                                          
END-REPEAT                                                             
*                                                                       
END

プログラム RPTEX2S の出力:

#X:    1 
#X:    2 
#X:    3 
#X:    4 
#X:    5 
#X:    6 
         
         
         
#Y:    1 
#Y:    2 
#Y:    3 
#Y:    4 
#Y:    5 
#Y:    6

レポーティングモードの例はライブラリ SYSEXRM のプログラム RPTEX2R を参照してください。

Top of page