For..next

for..next 控制陳述式是包含計數器的指令碼反覆運算建構。將對於所指定上下限之間(以及包括該值)的各個 counter 變數值,執行 fornext 所括住迴圈之內的陳述式。

Syntax:  

For counter = expr1 to expr2 [ step expr3 ]

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

Next [counter]

 

只有在第一次進入迴圈時,才會評估 expr1expr2expr3 運算式。迴圈內的陳述式可變更 counter 變數的值,不過在程式設計上這不見得是好方法。

如果 exit for 子句出現在迴圈中,指令碼的執行將傳輸到 next 子句後的第一個陳述式,代表迴圈結束。選用 whenunless 後置詞,即可將 exit for 子句設定為條件子句。

備註: 由於 for..next 陳述式是控制陳述式,因而會以分號或行結尾來結束,所以這三個可能的子句 (for..to..stepexit for、與 next) 都不能超過行邊界。

Arguments:  

引數 描述
counter 變數名稱。如果在 next 之後指定 counter,它的變數名稱必須與對應的 for 之後出現的變數名稱相同。
expr1 決定應對其執行迴圈的第一個 counter 變數值所用的運算式。
expr2

決定應對其執行迴圈的最大 counter 變數值所用的運算式。

expr3 決定每次執行迴圈時,表示 counter 變數遞增的值所用的運算式。
condition 評估為 TrueFalse 的邏輯運算式。
statements 是一或多個 QlikView 指令碼陳述式的任何群組。

Example 1: 載入一連串檔案

// LOAD files file1.csv..file9.csv

for a=1 to 9

LOAD * from file$(a).csv;

next

Example 2: 載入隨機數目的檔案

在此範例中,我們假設存在下列資料檔 x1.csv、x3.csv、x5.csv、x7.csvx9.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