Идентифицирует начало определения пользовательской функции.
Синтаксис:
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 ищет заданную функцию по следующей схеме:
Чтобы выполнить функцию из конкретного файла, используйте предложение 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