Когда программа вызывает процедуры или функцию ,она может им послать данные для обработки. Однако, когда вы создаете процедуру или функцию, которые производят операции на данных, посланных им из вызывающей программы, то процедура или функция должны содержать в своем определении параметры, для приема данных. В приведенных ниже секциях содержится информация о работе с параметрами:

Определение параметров в процедурах и функциях

Когда программа посылает данные в процедуру или функцию, параметры в процедуре или функции принимают эти данные, с тем, что на данных можно было произвести операции. Когда вы желаете создать процедуры или функции, которые будут обрабатывать данные, посланные вызывающей программой, вам необходимо включить в определение процедур или функций параметры, которые будут принимать эти данные..

Приведенная ниже строка кода показывает основной формат для включения параметров в определение процедуры:

  CopyCode imageСкопировать код
PROCEDURE myProcedure
   LPARAMETERS Par1, Par2, Par3, ...
   * Вставьте здесь код процедуры.
ENDPROC

-или-

  CopyCode imageСкопировать код
PROCEDURE myProcedure(Par1, Par2, Par3, ...)
  * Вставьте здесь код процедуры.
ENDPROC

Первая процедуры включает оператор LPARAMETERS который может содержать один или более параметров. Вторая процедура перечисляет те же самые параметры, заключенные в круглые скобки, сразу после имени процедуры. Использование оператора LPARAMETERS, или заключение списка параметров в круглые скобки определяет параметры, область видимости которых принадлежит локальной области процедуры. Вы может использовать ключевое слово PARAMETERS вместо LPARAMETERS для акцептирования параметров принадлежащих частной области видимости. Вы можете послать множественные значения в процедуру или функцию, разделяя значения запятой.

Например, в приведенном ниже примере показано определение процедуры, которая включает в себя параметры. Первая процедура включает оператор LPARAMETERS и два параметра, myPar1 и myPar2. Вторая процедура перечисляет теже самые параметры, заключенные в круглые скобки (()) сразу после имени процедуры. Обе процедуры добавляют значение, указанное в myPar2 к значению, указанному вв myPar1 и присваивают результат для myPar1. По умолчанию, данные посылаются по ссылке, так что новое значение myPar1 замещает его оригинальное значение.

  CopyCode imageСкопировать код
PROCEDURE myProcedure
   LPARAMETERS myPar1, myPar2
   myPar1 = myPar1 + myPar2
ENDPROC

-OR-

  CopyCode imageСкопировать код
PROCEDURE myProcedure(myPar1, myPar2)
  myPar1 = myPar1 + myPar2
ENDPROC

Схожим образом вы можете включить параметры в определение функции. Для получения более подробной информации, смотрите описание команд PROCEDURE, FUNCTION, LPARAMETERS и PARAMETERS.

Передача данных в процедуры или функции

Вы можете передать данные, или, более точно, "аргументы" из вашей программы в процедуры или функциями двумя способами, в зависимости от приведенного ниже:

Например, когда вы вызываете процедуру с помощью команды DO, вы можете послать данные используя ключевое слово WITH и список параметров. В приведенном ниже примере, переменные myVar и myVar2 содержат значения 4 и 5. Когда вы вызываете процедуру myProcedure с помощью команды DO, список параметров, определенных с ключевым словом WITH посылает эти переменные в процедуру:

  CopyCode imageСкопировать код
myVar = 4
myVar2 = 5
DO myProcedure WITH myVar, myVar2

По умолчанию, переменные и массивы посылаются в процедуры по ссылке. Поэтому, изменения, сделанные в процедуре в посланных переменных и массивах, возвращаются назад в управляющую программу. Например, предположим, что процедура увеличивает значение, содержащееся в myVar на величину, указанную в myVar2. Измененное значение myVar становится новым значением myVar, когда процедура возвращает управление вызывающей программе.

С другой стороны, вы хотите использовать команду DO, но желаете послать данные по значению, заключив каждый параметр в круглые скобки, (()), как это показано в приведенном ниже примере:

  CopyCode imageСкопировать код
DO myProcedure WITH (myVar), (myVar2)

Когда вы вызываете функцию, вы можете послать данные с помощью списка параметров, заключенных в круглые скобки, как это показано в приведенном ниже примере:

  CopyCode imageСкопировать код
myFunction(myVar, myVar2)

По умолчанию, переменные и массивы посылаются в определенные пользователем функции по значению. Поэтому, изменения, произведенные в функции над посланными переменными или массивами не возвращаются назад вызывающей программе. Однако, вы можете послать переменные и массивы по ссылке, предварив переменные и массивы символов (@), как показано в приведенном ниже примере:

  CopyCode imageСкопировать код
myFunction(@var1, @var2, ...)

В приведенной ниже таблицы суммированы пути, по которым вы можете послать переменные в процедуры и функции.

Вызов процедуры или функции Комментарии

DO myProcedure WITH var1, var2, ...

Вызывает процедуру и посылает параметры по ссылке.

DO myProcedure WITH (var1), (var2), ...

Вызывает процедуру и посылает параметры по значению.

myFunction(var1, var2, ...)

Вызывает функцию и посылает параметры по значению.

myFunction(@var1, @var2, ...)

Вызывает функцию и посылает параметры по ссылке.

Смотрите также