Перейти к основному содержимому Перейти к дополнительному содержимому

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 не будет копироваться, поскольку не является переменной. Наконец, глобальная переменная С не будет изменена вследствие вызова подпрограммы.

Подробнее

 

Помогла ли вам эта страница?

Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!