version 6.0
While...End while による制御フロー構造の正式な構文は以下のようになります。
While (ブール式) スートメント End while
While ループは、ブール式がTRUEである限り、ループ内のステートメントを実行し続けます。ループのはじめにブール式を評価し、ブール式がFALSEの場合にはループを行いません。
一般に、While ループに入る手前で、ブール式で判定する値を初期化しておきます。通常はブール式がTRUEになるように設定してからループに入ります。
ブール式はループの中で設定されなければなりません。そうでなければ、ループは永久に続くでしょう。
以下の例では、NeverStopがいつもTRUEであるので、ループは永久に続きます。
NeverStop:=True While (NeverStop) End while
もし、メソッドの実行が制御不能になった場合は、トレース機能を使用し、ループを止め、問題点を追跡することができます。メソッドのトレース方法については、デバッグの章を見てください。
例
CONFIRM ("新規にレコード追加しますか?") ` 利用者に新規レコード追加を問い合わせる
While (OK = 1) ` 利用者が望む限りループする
ADD RECORD ([aTable]) ` 新規にレコードを追加する
End while ` ループはいつもEnd_whileによっ終わります
この例では、ループに入る前にCONFIRM コマンドによりシステム変数OKがセットされます。ユーザがダイアログボックスで「OK」ボタンをクリックすると、システム変数OKに1がセットされ、ループを開始します。それ以外の場合はシステム変数OKに0が設定され、ループをスキップします。ループに入ると、ADD RECORD コマンドはループを続けます。
これは、ユーザがレコードを保存した時点で、システム変数OKに1が設定されるからです。ユーザが最後のレコードを取り消した(保存しない)時点で、システム変数OKに0がセットされ、ループは終了します。
参照
Case of...Else...End case, For...End for, If...Else...End if, Repeat...Until, 制御フロー.