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と表示されます FendExit 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