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 命令で抜けるようにしてください。


参照
For...Next, Select...Send

Do...Loop使用例

Do While Not Lof(1)
    Line Input #1, tLine$
    Print tLine$
Loop