For..next
for..next 控制陳述式是包含計數器的指令碼反覆運算建構。將對於所指定上下限之間(以及包括該值)的各個 counter 變數值,執行 for 與 next 所括住迴圈之內的陳述式。
語法:
For counter = expr1 to expr2 [ step expr3 ]
[statements]
[exit for [ ( when | unless ) condition ]
[statements]
Next [counter]
只有在第一次進入迴圈時,才會評估 expr1、expr2 和 expr3 運算式。迴圈內的陳述式可變更 counter 變數的值,不過在程式設計上這不見得是好方法。
如果 exit for 子句出現在迴圈中,指令碼的執行將傳輸到 next 子句後的第一個陳述式,代表迴圈結束。選用 when 或 unless 後置詞,即可將 exit for 子句設定為條件子句。
引數:
引數 | 描述 |
---|---|
counter | 變數名稱。如果在 next 之後指定 counter,它的變數名稱必須與對應的 for 之後出現的變數名稱相同。 |
expr1 | 決定應對其執行迴圈的第一個 counter 變數值所用的運算式。 |
expr2 |
決定應對其執行迴圈的最大 counter 變數值所用的運算式。 |
expr3 | 決定每次執行迴圈時,表示 counter 變數遞增的值所用的運算式。 |
condition | 評估為 True 或 False 的邏輯運算式。 |
statements | 是一或多個 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