Sub..end sub
Оператор управления sub..end sub определяет подпрограмму, которая должна вызываться оператором call.
Синтаксис:
Sub name [ ( paramlist )] statements end sub
Аргументы копируются в подпрограмму и снова копируются обратно при выходе из подпрограммы, если соответствующий фактический параметр в операторе call представляет собой имя переменной.
Если в подпрограмме присутствует больше формальных параметров, чем фактических параметров, передаваемых оператором call, то дополнительные параметры инициализируются со значением NULL, и их можно использовать в качестве локальных переменных в подпрограмме.
Аргументы:
Аргумент | Описание |
---|---|
name | Имя подпрограммы. |
paramlist | Список имен переменных, разделенных запятой, для формальных параметров подпрограммы. Они могут использоваться как любая другая переменная в подпрограмме. |
statements | Любая группа, состоящая из одного или нескольких операторов скрипта Qlik Sense. |
Ограничения:
-
Поскольку оператор sub является оператором управления и заканчивается точкой с запятой или знаком конца строки, каждое из двух его возможных предложений (sub и end sub) не должно выходить за границу строки.
-
Когда определяется подпрограмма с использованием Sub..end sub внутри оператора управления, например if..then, подпрограмму можно вызвать только в пределах этого оператора управления.
Пример 1:
Sub INCR (I,J)
I = I + 1
Exit Sub when I < 10
J = J + 1
End Sub
Call INCR (X,Y)
Пример 2: — передача параметра
Sub ParTrans (A,B,C)
A=A+1
B=B+1
C=C+1
End Sub
A=1
X=1
C=1
Call ParTrans (A, (X+1)*2)
В результате этого локально внутри подпрограммы A будет инициализировано как 1, B как 4 и C как NULL.
При выходе из подпрограммы глобальная переменная А получает значение 2 (скопированное из подпрограммы). Второй фактический параметр (X+1)*2 не будет копироваться, поскольку не является переменной. Наконец, глобальная переменная С не будет изменена вследствие вызова подпрограммы.