Do...Loop
条件が一致している間、あるいは、不一致の場合は条件が一致するまで、DO...LOOP間を繰り返します。
書式
Do [ { While | Until } 条件式 ]
[ステートメント]
[Exit Do]
[ステートメント]
Loop
または、次の書式を使います。
Do
[ステートメント]
[ Exit Do ]
[ステートメント]
Loop [ { While | Until }条件式]
Do Loop ステートメントの書式には、条件式とステートメントがあります。
- 条件式
- TrueまたはFalseを表わす数字、または文字列式。条件式が空 (Null)の場合、条件はFalseとして扱われます。省略可能です。
- ステートメント
- 条件が一致している間、あるいは、条件が一致するまで繰り返される、1つ以上のステートメント
解説
Do...Loopを抜けるもう1つの方法として、Do...Loop中、どこでも、いくつでもExit Doステートメントを挿入することができます。Exit Doは、If...Thenなど、いくつかの条件を評価した後によく用いられます。If...ThenでExit Doステートメントが用いられると、制御をLoopの次のステートメントに移します。
ネスティングされたDo...Loopステートメントの中で用いられると、Exit Doは、それが起こったループの1レベル上のループに制御を移します。
注意
ループ文の中でXQT命令を頻繁に繰り返すような使い方はしないでください
Do…Loopなどループ文の中でXQT命令を頻繁に繰り返すような使い方はしないでください。コントローラーがハングアップ状態になる可能性があります。このような使い方をする場合は、Wait命令(Wait 0.1)を追加してください。
空の無限ループ、および無限ループと同様の処理は、できる限りWait命令と併用してください
空のDo...Loop、および同様の処理は、システムに影響を与える可能性があるため、できるだけ行わないでください。コントローラーでは、無限ループタスクの検出を行っており、システムに影響が出るとコントローラーが判断した場合、エラー2556 (過剰なループを検出した)が発生することがあります。ループを必要とする演算や、I/O待ちを行う場合は、Wait命令 (Wait 0.1)などをループ処理内で実行し、CPUの占有を回避してください。
Exit Do を使用せず、ネスト構造からループを抜けた場合
Exit Do命令以外のコマンド(Gosub命令、Goto命令、Call命令など)でループから抜けるプログラムを繰り返し実行すると、エラー2020 が発生します。ループの途中で抜ける場合は、Exit Do 命令で抜けるようにしてください。
Do...Loop使用例
Do While Not Lof(1)
Line Input #1, tLine$
Print tLine$
Loop