18.6.6 for-next
for-nextステートメントは、条件がfalseになるまで式を繰り返し実行します。for-nextステートメントのオプション式を使用すると、for-nextステートメントの実行中に初期設定や値を変更できます。
一般にループが繰り返される回数は、カウンタによって決まります。
(1) 形式
for ( [初期化式] ; [条件式] ; [ループ式] ) 式1; 式2; next;
(2) 説明
-
初期化式が指定されていると、この式が評価されます。この式は、ループの初期化を指定します。初期化式には、型の制限はありません。
-
条件式が指定されていると、この式が評価されます。この評価は、それぞれの繰り返しをする前に実行されますが、次の3つの結果が考えられます。
-
条件式がtrue(0以外)の場合は、ステートメントが実行されます。ループ式が指定されていると、次にこの式が評価されます。そして、条件式の評価から実行が繰り返されます。
-
条件式の指定が省略されているときは、条件式はtrueと解釈され、上記と同様に実行されます。引数で条件式を指定しないと、ステートメント本体の内部でbreakステートメントが実行されたとき、またはgotoステートメント(ステートメント本体の外側のラベル付きステートメントに対応したもの)が実行された時に、forステートメントは終了します。
-
条件式がfalse(0)のときは、for-nextステートメントの実行が終了し、制御が同じプログラム内の次のステートメントに移ります。
-
-
ステートメント本体でbreakステートメントが指定されていると、その時点でループは停止します。
-
ステートメント本体でcontinueステートメントが指定されていると、それ以降の実行をスキップし、条件式が評価されます。条件がtrueのときは、実行が繰り返されます。
なお、ネストするfor-next構造体の数は、255以内に抑えてください。
(3) 記述例
DEFINE { integer WINH,count,length; float SLEEP_TIME=0.5; string s1,s2; integer i,sloop_cnt = 0; integer sloop_max = 30; } ... ... sloop_cnt=1; AIT_LogMessage("Searching for Active windows - For"); for(; sloop_cnt < sloop_max ;sloop_cnt = sloop_cnt + 1) if (AIT_FocusWindow("Unpacking", "#32770",0.0) > 0) if(AIT_FocusWindow("Unpacking Installable Software...", "#32770", 0.0) > 0) AIT_LogMessage("Unpacking Installable Software... is opened"); sloop_cnt= 0; AIT_Sleep(SLEEP_TIME); endif; endif; AIT_Sleep(SLEEP_TIME); next;