For..next

Instrukcja sterowania for..next to rodzaj iteracji skryptu z licznikiem. Dla każdej wartości zmiennej licznika mieszczącej się w określonym limicie wykonane zostaną instrukcje wewnątrz pętli między wartościami for i next.

Syntax:  

For counter = expr1 to expr2 [ step expr3 ]

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

Next [counter]

 

Wyrażenia expr1, expr2 i expr3 są oceniane tylko przy pierwszym wejściu do pętli. Wartość zmiennej counter można zmienić przy użyciu instrukcji wewnątrz pętli, ale nie jest to zalecana praktyka programowania.

Jeśli wewnątrz pętli napotkana zostanie klauzula exit for, wykonanie skryptu zostanie przeniesione do pierwszej instrukcji po klauzuli next wskazującej na koniec pętli. Klauzula exit for może zostać ustawiona jako warunkowa przez opcjonalne użycie sufiksu when lub unless.

Uwaga: Instrukcja for..next jest instrukcją sterowania i jako taka kończy się średnikiem lub symbolem końca linii, żadna z jej trzech możliwych klauzul (for..to..step,exit for i next) nie może zatem wykraczać poza granicę linii.

Arguments:  

Argument Opis
counter Nazwa zmiennej. Jeśli argument counter określono po argumencie next, musi on mieć taką samą nazwę zmiennej jak nazwa po for.
expr1 Wyrażenie określające pierwszą wartość zmiennej counter, dla której pętla powinna zostać wykonana.
expr2 Wyrażenie określające ostatnią wartość zmiennej counter, dla której pętla powinna zostać wykonana.
expr3 Wyrażenie określające wartość wskazującą na przyrost zmiennej counter podczas każdego wykonania pętli.
condition wyrażenie logiczne, którego ocena zwraca True lub False.
statements Dowolna grupa zawierająca co najmniej jedną instrukcję skryptu Qlik Sense.

Example 1: Ładowanie sekwencji plików

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

for a=1 to 9

LOAD * from file$(a).csv;

next

Example 2: Ładowanie losowej liczby plików

W tym przykładzie zakładamy istnienie plików danych x1.csv, x3.csv, x5.csv, x7.csv i x9.csv. Ładowanie jest zatrzymywane w losowym punkcie przy użyciu warunku 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