繰り返しのための、流れ制御命令文
構文:
While [condition]
[statement block]
Wend
記述:
While 命令文は、続く statement block を繰返し実行するようにします。式の condition が true の間、実行は続きます。
WHILE 命令文が最初に実行されたときに、condition が、false となると、statement block はスキップされます。そして、実行は、対になっている Wend の後ろに続く命令文に、移ります。
statement block の中で、
Exit While 命令文に、遭遇すると、繰り返しは終わります。そして、実行は、対の
Wend の直ぐ後ろの命令文に移ります。
Continue While 命令文に遭遇すると、
statement block の残りはスキップされます。そして、実行は、
While 命令文から再開します。
他の流れ制御命令文と同様に、
While 命令文を入れ子にすることができます。すなわち、
While は、別の
While 命令文のブロックの中で使用できます。
注意:
While 予約語は、Do...Loop の中でも使用できます。このときも、比較のタイプを示します。
この用法で、DO 命令文は、WHILE 命令文と機能上、同等になります。
このとき、その対の予約語 Loop と Wend を混乱しないように、注意して下さい。
例:
下の例では、While 繰り返しは、文字列を逆にするために、繰り返しで後方に繰り返し送る操作で使います。
繰り返しは、インデックスが 0 (文字列の最初のインデックスである0) 未満であれば止まります。
Dim As String sentence '' 逆にする文字列
sentence = "The quick brown fox jumps over the lazy dog."
Dim As String ecnetnes
Dim As Integer index
index = Len( sentence ) - 1 '' 最後の文字を指定
While( index >= 0 ) '' 最初の文字に到達すると、止まります
ecnetnes += Chr( sentence[index] ) '' 新しい文字列に文字を追加します
index -= 1
Wend
Print "original:
""" ;
sentence ;
""""
Print "reversed:
""" ;
ecnetnes ;
""""
Sleep
End 0
方言差:
-
-lang qb と -lang fblite 方言では、While..Wend ループ内で宣言された変数は、QB の場合と同様に、関数全体の scope を持っています。
-
-lang fb と -lang deprecated 方言では、While..
Wend ブロックの中で宣言された変数は、ブロックの中だけで目に見えます。そして、ブロックの外では、使えません。
このブロックの外側でグローバルとして定義された重複シンボルにアクセスするには、プレフィックスとして 1つまたはできれば 2つの点を追加します:.SomeSymbol またはできれば ..SomeSymbol (With..End With ブロック内の場合は ..SomeSymbol のみ)。
QBからの違い:
参照: