For...Next

For...Next間にある一連のステートメントを、指定の回数だけ、繰り返し実行します。

書式
For 変数名 = 初期値 To 終了値 [Step増分値] ステートメント Next [変数名]

パラメーター

変数名
繰り返しデータを代入する変数名を指定します。この変数は通常、整数値ですが、実数変数として定義することも可能です。
初期値
指定した変数にループの最初に代入する数値を指定します。
終了値
ループの終了を表わす値を指定します。この値がみたされると、For...Nextループは終了し、Next命令の次のステートメントを続けて実行します。
増分値
For...Nextループ中のNextステートメントが実行されるたびに増分する値を指定します。増分値は負の数にも設定できますが、この場合は、初期値>終了値でなければなりません。増分の指定がない場合は、自動的に"1"で増分します。省略可能です。
ステートメント
有効なSPEL+のステートメントであれば、どれでもFor...Nextループ中に挿入することができます。

解説
For...Nextは、ループ中にあるステートメントを指定された回数だけ繰り返します。ループの最初は、Forステートメントで、終わりはNextステートメントです。変数は、ループ内のステートメントが実行される回数を数えます。

初期値の数値は、カウンターの最初の値です。終了値変数と増分値が正しく設定されていれば、負の数値でも設定できます。

終了値は、カウンターの最終値です。この値に達するとループが終了し、プログラム制御はNext命令の次の命令に移行します。

Forステートメントの次のステートメントは、Next命令に達するまで、実行されます。カウンター変数 (変数名)は、増分値パラメーターによって指定された値だけ増分していきます。もし増分値が設定されていなければ、カウンターは、"1"ずつ増減します。

そのあと、カウンター変数 (変数名)は、最終値と比較されます。カウンターが最終値よりも少ないか、同じ場合は、For命令の次のステートメントが再実行されます。カウンター変数 (変数名)が、最終値よりも大きい場合は、実行は、For...Nextループの外に枝分かれし、Next命令の次の命令に継続します。

注意


  • 負の増分値

    負の値を増分値に指定すると、カウンター変数は、ループのたびに減少するので、初期値は終了値よりも大きくしてください。

  • Nextの後の変数名は省略できます

    Nextの後の変数名は省略できますが、ネスティングがある場合などは、変数名を記入しておいたほうが構造がわかりやすくなります。

  • ループから抜けたときの変数の値は、終了値ではありません

    Function forsample
      Integer i
      For i = 0 To 3
      Next
      Print i  '4と表示されます
    Fend
    
  • Exit Forを使用せず、ネスト構造からループを抜けた場合

    Exit For命令以外のコマンド(Gosub命令、Goto命令、Call命令など)でループから抜けるプログラムを繰り返し実行すると、エラー2020が発生します。ループの途中で抜ける場合は、Exit For 命令で抜けるようにしてください。

  • 空の無限ループ、および無限ループと同様の処理は、できる限りWait命令と併用してください

    空のFor...Next、および同様の処理は、システムに影響を与える可能性があるため、できるだけ行わないでください。コントローラーでは、無限ループタスクの検出を行っており、システムに影響が出るとコントローラーが判断した場合、エラー2556 (過剰なループを検出した) が発生することがあります。

    ループを必要とする演算や、I/O待ちを行う場合は、Wait命令 (Wait 0.1)などをループ処理内で実行し、CPUの占有を回避してください。


参照
Do...Loop

For...Next使用例

Function fornext
    Integer counter
    For counter = 1 to 10
        Go Pctr
    Next counter

    For counter = 10 to 1 Step -1
        Go Pctr
    Next counter
Fend