Команда FUNCTION

Идентифицирует начало определения пользовательской функции.

Синтаксис:

FUNCTION FunctionName

Параметры:
FunctionName
В Visual FoxPro имена функций могут быть длиной до 254 символов. В FoxPro для Windows и FoxPro для MS-DOS имена функций могут состоять не более чем из 10 символов.
В FoxPro для Macintosh имена функций состоят не более чем из 31 символа. Чтобы отличить в FoxPro для Macintosh имя файла программы, имеющее в длину более 10 символов, от имени функции, начинающегося теми же 10 символами, поставьте имя файла программы в кавычки или укажите для него расширение.

Комментарии:
Во многих программах используются часто повторяющиеся подпрограммы. Описав наиболее часто используемые подпрограммы в виде отдельных функций, вы сможете упростить программу, уменьшить ее размер и облегчить сопровождение.
FUNCTION FunctionName представляет собой оператор программы. Он обозначает начало функции в программе и идентифицирует функцию по имени.
После оператора FUNCTION FunctionName идут несколько команд Visual FoxPro, образующих функцию. В качестве последней строки функции можно задать команду RETURN, хотя она всегда выполняется неявно.
Конец функции определяется следующим оператором FUNCTION или концом файла, если других операторов FUNCTION в файле нет.
Если выдать команду DO с именем функции, Visual FoxPro ищет заданную функцию по следующей схеме:

  1. Visual FoxPro просматривает файл, содержащий данную команду DO.
  2. Если в этом файле функция не найдена, Visual FoxPro просматривает открытый файл процедуры. Файлы процедуры открываются по команде SET PROCEDURE.
  3. Если в текущем файле процедуры функции нет, Visual FoxPro просматривает все программы в цепочке выполняемых файлов программ. Цепочка просматривается с последней выполнявшейся программы до первой выполнявшейся программы.
  4. Если функция и здесь не найдена, Visual FoxPro ищет ее среди автономных программ. Если соответствующий файл программы найден, эта программа выполняется. В противном случае Visual FoxPro генерирует сообщение об ошибке.

Чтобы выполнить функцию из конкретного файла, используйте предложение IN в команде DO.
По умолчанию параметры передаются в функции по значению. О том, как передавать параметры в функции по ссылке, см. SET UDFPARMS. Всего в функцию можно передать не более 27 параметров.

Пример:

* В следующем примере создаются две функции: LONGDATE и QUARTER.
* LONGDATE преобразует переменную типа Date в символьную строку,
* которую можно использовать в отчетах. QUARTER возвращает номер
* квартала года исходя из номера месяца. Эти две функции можно
* использовать для печати заголовка в отчете.

SET CENTURY ON
@ 5,0 SAY longdate({02/16/95})
@ 6,5 SAY quarter(DATE( ))

FUNCTION longdate
PARAMETER mdate
RETURN CDOW(mdate) + ', ' + MDY(mdate)

FUNCTION quarter
PARAMETER qdate
DO CASE
	CASE MONTH (qdate) > 9
		RETURN 'Fourth Quarter'
	CASE MONTH (qdate) > 6
		RETURN 'Third Quarter'
	CASE MONTH (qdate) > 3
		RETURN 'Second Quarter'
	OTHERWISE
		RETURN 'First Quarter'
ENDCASE

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