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 рассчитываются только при первом входе в цикл. Значение переменной counter может быть изменено операторами внутри цикла, однако это делать не рекомендуется.
Если в цикле появляется предложение exit for, выполнение скрипта будет передано первому оператору после предложения next, указывающего на конец цикла. Предложение exit for можно сделать условным с помощью дополнительного использования суффикса when или unless.
Аргументы:
Аргумент | Описание |
---|---|
counter | Имя переменной. Если переменная counter задана после next, она должна иметь такое же имя переменной, как указано после соответствующего предложения 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