Команда PARAMETERS

Присваивает данные, переданные из вызывающей программы, локальным переменным памяти или элементам массивов.

Синтаксис:

PARAMETERS ParameterList

Параметры:
ParameterList
Задает имена переменных памяти или массивов, которым присваиваются данные.
Параметры в списке ParameterList разделяются запятыми. Их должно быть, по крайней мере, столько же, сколько в операторе DO ... WITH. Если в операторе PARAMETERS указано больше переменных или массивов, чем было передано оператором DO ... WITH, то оставшиеся переменные или массивы инициализируются значением "ложь" (.F.). Всего может быть передано не более 27 параметров.
Функция PARAMETERS( ) возвращает количество параметров, переданных последней выполнявшейся программе.

Комментарии:
Когда команда PARAMETERS используется совместно с DO ... WITH, она должна быть первым исполняемым оператором в вызываемой программе, процедуре или пользовательской функции.
По умолчанию оператор DO ... WITH передает в процедуры переменные и массивы по ссылке. Если какое-либо значение в вызываемой процедуре изменяется, то в соответствующую переменную или массив вызывающей программы возвращается новое значение. Если вы хотите передать переменную или массив по значению, поставьте в скобки имя переменной или массива в списке параметров DO ... WITH. Изменения, которым параметр подвергнется в вызываемой процедуре, не будут передаваться обратно в вызывающую программу.
В процедуру и в пользовательскую функцию переменные по умолчанию передаются по ссылке. Чтобы передавать переменные в пользовательскую функцию по ссылке, используйте команду SET UDFPARMS TO REFERENCE.

Пример:

* В следующем примере параметры передаются в программу обработки
* ошибок.

ON ERROR DO errhand WITH ERROR( ), MESSAGE( ), ;
	MESSAGE(1),PROGRAM( ),LINENO( )
USE nodatabase
ON ERROR			&& restores system error-handling routine

PROCEDURE errhand
PARAMETERS gnError, gcMess, gnMess1, gcProg, gnLineNo
? 'Error number: ' + LTRIM(STR(gnError))
? 'Error message: ' + gcMess
? 'Line of code with error: ' + gnMess1
? 'Line number of error: '+ LTRIM(STR(gnLineNo))
? 'Program with error: ' + gcProg

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.