3.6.6 for-next

for-nextステートメントは,条件がfalseになるまで式を繰り返し実行します。for-nextステートメントのオプション式を使用すると,for-nextステートメントの実行中に初期設定や値を変更できます。

一般にループが繰り返される回数は,カウンタによって決まります。

<この項の構成>
(1) 形式
(2) 説明
(3) 記述例

(1) 形式

for ( [初期化式] ; [条件式] ; [ループ式] )
    式1;
    式2;
next;

(2) 説明

  1. 初期化式が指定されていると,この式が評価されます。この式は,ループの初期化を指定します。初期化式には,型の制限はありません。
  2. 条件式が指定されていると,この式が評価されます。この評価は,それぞれの繰り返しをする前に実行されますが,次の三つの結果が考えられます。
    • 条件式がtrue(0以外)の場合は,ステートメントが実行されます。ループ式が指定されていると,次にこの式が評価されます。そして,条件式の評価から実行が繰り返されます。
    • 条件式の指定が省略されているときは,条件式はtrueと解釈され,上記と同様に実行されます。引数で条件式を指定しないと,ステートメント本体の内部でbreakステートメントが実行されたとき,またはgotoステートメント(ステートメント本体の外側のラベル付きステートメントに対応したもの)が実行された時に,forステートメントは終了します。
    • 条件式がfalse(0)のときは,for-nextステートメントの実行が終了し,制御が同じプログラム内の次のステートメントに移ります。
  3. ステートメント本体でbreakステートメントが指定されていると,その時点でループは停止します。
  4. ステートメント本体で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;