For..next
for..next 制御ステートメントは、カウンタ付きのスクリプト反復構文です。for と next で囲まれたループ内のステートメントは、カウンタ変数の初期値と最終値 (および両方を含む) で指定された回数分実行されます。
構文:
For counter = expr1 to expr2 [ step expr3 ]
[statements]
[exit for [ ( when | unless ) condition ]
[statements]
Next [counter]
数式 expr1、expr2、および expr3 は、ループが最初に挿入される際に評価されます。カウンタ変数の値はループ内のステートメントで変更できますが、これは良いプログラミングとは言えません。
exit for 節がループ内で出現した場合、スクリプトの実行はループの終了を示す next 節の後の最初のステートメントに移ります。exit for 節は、when や unless サフィックスを使用して条件を付けることができます。
引数:
引数 | 説明 |
---|---|
counter | 変数名。counter が next の後に指定されている場合は、対応する for の後に検出されるものと同じ変数名である必要があります。 |
expr1 | ループが実行される counter変数の最初の値を判定する数式。 |
expr2 |
ループが実行される counter変数の最大値を判定する数式。 |
expr3 | ループが実行されるたびに counter 変数の増分を示す値を判定する数式。 |
condition | True または False の評価を実施する論理式。 |
statements | 1 つ以上の QlikView スクリプト ステートメントのグループ。 |
例1: 連続ファイルのロード
// LOAD files file1.csv..file9.csv
for a=1 to 9
LOAD * from file$(a).csv;
next
例2: ランダムな数のファイルのロード
この例では、x1.csv、x3.csv、x5.csv、x7.csv、x9.csv というデータ ファイルが存在すると仮定します。ロード プロセスは、if rand( )<0.5 then 条件によってランダム ポイントで停止します。
for counter=1 to 9 step 2
set filename=x$(counter).csv;
if rand( )<0.5 then
exit for unless counter=1
end if
LOAD a,b from $(filename);
next