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

FOR

FOR operand1 [:]= operand2
EQ
FROM
TO operand3 [[STEP] operand4]
THRU
    statement
END-FOR   (structured mode only)
[LOOP]   (reporting mode only)

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

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

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

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


機能

FOR ステートメントは、処理ループを開始し、ループの処理回数を制御するために使用します。

整合性チェック

FOR ループに入る前に、オペランドの値に矛盾がないか(operand2operand4 を繰り返し加算し、operand3 の値以上になるか)を確かめます。 値に矛盾があれば、FOR ループには入りません(エラーメッセージは出力されません)。

Top of page

構文説明

オペランド定義テーブル:

オペランド 構文要素 フォーマット ステートメント参照 ダイナミック定義
operand1   S         N P I F              
operand2 C S     N   N P I F               不可
operand3 C S     N   N P I F               不可
operand4 C S     N   N P I F               不可

構文要素の説明:

operand1
ループ制御変数(operand1)および初期設定(operand2

operand1 は、処理ループの実行回数を制御します。 データベースフィールドまたはユーザー定義変数が使用できます。 キーワード FROM の後の指定値(operand2)が、最初に処理ループに入る前に制御変数フィールドに割り当てられます。 制御変数フィールドの値は、ループに入るたびにキーワード STEP の後の指定値(operand4)ずつ増えていきます(STEP 値が負数であれば減っていきます)。

処理ループ実行中にループ制御変数を参照できます。ループ制御変数には、その現在値が含まれます。

operand2
operand3
TO 値:

処理ループは、operand1operand3 の値よりも大きくなると(STEP 値が負であれば小さくなると)終了します。

operand4
STEP 値:

STEP 値には正でも負でも指定できます。 STEP 値を省略すると、+1 の増加とみなされます。

ループに入るときに STEP 値の符号によって、"より小さい" または "より大きい" の比較演算が行われます。

operand4 をゼロにすることはできません。

END-FOR

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

Top of page

** Example 'FOREX1S': FOR (structured mode)                             
************************************************************************
DEFINE DATA LOCAL                                                       
1 #INDEX (I1)                                                           
1 #ROOT  (N2.7)                                                         
END-DEFINE                                                              
*                                                                       
FOR #INDEX 1 TO 5                                                       
  COMPUTE #ROOT = SQRT (#INDEX)                                         
  WRITE NOTITLE '=' #INDEX 3X '=' #ROOT                                 
END-FOR                                                                 
*                                                                       
SKIP 1                                                                  
FOR #INDEX 1 TO 5 STEP 2                                                
  COMPUTE #ROOT = SQRT (#INDEX)                                         
  WRITE '=' #INDEX 3X '=' #ROOT                                         
END-FOR                                                                 
*                                                                       
END                                                                     

プログラム FOREX1S の出力:

#INDEX:    1   #ROOT:   1.0000000
#INDEX:    2   #ROOT:   1.4142135
#INDEX:    3   #ROOT:   1.7320508
#INDEX:    4   #ROOT:   2.0000000
#INDEX:    5   #ROOT:   2.2360679
                                 
#INDEX:    1   #ROOT:   1.0000000
#INDEX:    3   #ROOT:   1.7320508
#INDEX:    5   #ROOT:   2.2360679

レポーティングモードの例:FOREX1R

Top of page