For..next

for..next控制语句是一个带有计数器的脚本迭代构造。指定的高低限值之间(含限值)的计数器变量的每个值均会执行由 fornext 限定的循环中的语句。

语法:  

For counter = expr1 to expr2 [ step expr3 ]

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

Next [counter]

 

表达式 expr1expr2expr3 仅会在首次进入循环时进行求值。计数器变量的值可通过循环内的语句进行更改,但这并非出色的编程做法。

如果在循环内遇到 exit for子句,则脚本执行会转移至表示循环结束的next 子句之后的第一个语句。exit for子句可通过选择性使用 whenunless 后缀变为有条件子句。

备注: 由于 for..next语句是控制语句,并以分号或换行符结束,三个可能子句(for..to..stepexit fornext)中任意一个子句都不得跨越行边界。

参数:  

参数 说明
counter 一个变量名。如果 counternext 之后指定,变量名必须与对应的 for 之后查找的变量名相同。
expr1 一个表达式,可决定与应执行循环有关的 counter变量的第一个值。
expr2

一个表达式,可确定应执行循环的 counter变量的最大值。

expr3 一个表达式,可决定每执行一次循环 counter变量增加的值。
condition 用于评估 TrueFalse 的逻辑表达式。
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.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

另请参阅: