Составители:
Рубрика:
103
Использование подпрограмм будет проиллюстрировано в программе с Меню в
разделе 3 данной части.
2.6.6. Функции, определяемые пользователем (UDF)
а) Если UDF определяется как внешняя (доступная для любых программ и для
использования в командном окне наряду со встроенными функциями Visual FoxPro 5.0),
то ее следует записать в отдельный файл (имеющий ее имя) с обрамлением:
FUNCTION <имя_функции>
PARAMETERS <parameter_list>
Значение, которое будет возвращать UDF, записывается в строке с оператором
RETURN.
Рассмотрим создание UDF на примере.
Пусть требуется создать UDF quartal, возвращающую сообщение о номере
квартала по введенной дате.
Наберите программу (MODIFY COMMAND quartal):
FUNCTION quartal
PARAMETERS qdate && сюда будет приниматься дата.
DO
CASE && конструкция выбора.
CASE MONTH(qdate)>9 && функция MONTH( )
RETURN «Четвертый квартал» && возвращает номер месяца
CASE MONTH(qdate)>6 && по аргументу - дате
RETURN «Третий квартал»
CASE MONTH(qdate)>3
RETURN «Второй квартал»
OTHERWISE
RETURN «Первый квартал»
ENDCASE
Запишите UDF на диск (Ctrl-W). В командном окне наберите
?quartal(date( ))
Здесь date( ) - системная дата (по календарю ЭВМ).
На
экране - соответствующий номер квартала.
Если хотите проверить UDF на других датах, вводите их с помощью функции
преобразования символов (C) в дату (to D) - например:
?quartal(CTOD(«12.05.83»))
или - лучше - используйте соглашение Visual FoxPro 5.0 о вводе дат - возьмите их в {},
например:
?quartal({12.05.94})
б) Определение UDF как внутренней отличается только тем, что она записывается
вместе
с программой, в которой определена. Внутренняя функция может быть
использована и в других программах, если указать имя ее «материнской» программы в
качестве процедурного файла.
Например, добавьте в программную реализацию функции quartal любую первую
строчку, например, zzz=0 выше строки FUNCTION.
Теперь при запросе
?quartal(date( ))
будет диагностироваться ошибка: не будут найдены параметры, т.
к. они должны быть
описаны во второй (а не в третьей, как получилось) строке («No PARAMETER statement
found» - не найдена строка с параметрами). Введите в командной строке
103
Использование подпрограмм будет проиллюстрировано в программе с Меню в
разделе 3 данной части.
2.6.6. Функции, определяемые пользователем (UDF)
а) Если UDF определяется как внешняя (доступная для любых программ и для
использования в командном окне наряду со встроенными функциями Visual FoxPro 5.0),
то ее следует записать в отдельный файл (имеющий ее имя) с обрамлением:
FUNCTION <имя_функции>
PARAMETERS
Значение, которое будет возвращать UDF, записывается в строке с оператором
RETURN.
Рассмотрим создание UDF на примере.
Пусть требуется создать UDF quartal, возвращающую сообщение о номере
квартала по введенной дате.
Наберите программу (MODIFY COMMAND quartal):
FUNCTION quartal
PARAMETERS qdate && сюда будет приниматься дата.
DO CASE && конструкция выбора.
CASE MONTH(qdate)>9 && функция MONTH( )
RETURN «Четвертый квартал» && возвращает номер месяца
CASE MONTH(qdate)>6 && по аргументу - дате
RETURN «Третий квартал»
CASE MONTH(qdate)>3
RETURN «Второй квартал»
OTHERWISE
RETURN «Первый квартал»
ENDCASE
Запишите UDF на диск (Ctrl-W). В командном окне наберите
?quartal(date( ))
Здесь date( ) - системная дата (по календарю ЭВМ).
На экране - соответствующий номер квартала.
Если хотите проверить UDF на других датах, вводите их с помощью функции
преобразования символов (C) в дату (to D) - например:
?quartal(CTOD(«12.05.83»))
или - лучше - используйте соглашение Visual FoxPro 5.0 о вводе дат - возьмите их в {},
например:
?quartal({12.05.94})
б) Определение UDF как внутренней отличается только тем, что она записывается
вместе с программой, в которой определена. Внутренняя функция может быть
использована и в других программах, если указать имя ее «материнской» программы в
качестве процедурного файла.
Например, добавьте в программную реализацию функции quartal любую первую
строчку, например, zzz=0 выше строки FUNCTION.
Теперь при запросе
?quartal(date( ))
будет диагностироваться ошибка: не будут найдены параметры, т.к. они должны быть
описаны во второй (а не в третьей, как получилось) строке («No PARAMETER statement
found» - не найдена строка с параметрами). Введите в командной строке
Страницы
- « первая
- ‹ предыдущая
- …
- 55
- 56
- 57
- 58
- 59
- …
- следующая ›
- последняя »
