Документация по Clarion

FUNCTION (Объявить функцию)


метка FUNCTION(список параметров)
[метка] локальные данные
CODE
операторы
RETURN(значение)

Список параметров Необязательный список переменных которые передают значения ФУНКЦИИ. Этот список определяет имя каждого параметра используемого в пределах исходного кода ФУHКЦИИ. Каждый параметр отделяется запятой. Тип данных каждого параметра задается в прототипе функции в MAP-структуре.
Локальные данные Объявляет Локальные Динамические данные которые могут использоваться только этой функцией.
CODEНачало выполнимых операторов.
операторыВыполнимые инструкции программы.
RETURNЗавершает выполнение функции и возвращает значение в выражение в котором функция использовалась.
ЗначениеЧисловая или строковая постоянная или переменная которая определяет результат вызова функции.

Декларация ФУНКЦИИ начинает секцию исходного кода который может быть выполнен обращением к метке ФУНКЦИИ (со списком параметров, если есть). Функция может использоваться как компонент выражения, или параметр ПРОЦЕДУРЫ или другой ФУНКЦИИ в секции кода ПРОГРАММЫ. Выполнение ФУНКЦИИ завершается (требуемым) оператором RETURN в ее секции CODE.


Данные объявленные в пределах ФУНКЦИИ, между ключевыми словами FUNCTION и CODE, являются "Локальными Динамическими данными" к которым может обращаться только данная ФУНКЦИЯ (если они не переданы как параметр другой ПРОЦЕДУРЕ или ФУНКЦИИ). Эти данные кладутся на стек, память под них выделяется при входе в функцию, и освобождается при выходе из нее.
ФУНКЦИЯ должна быть объявлена в MAP модуля-ЧЛЕHА или ПРОГРАММЫ. Если она объявлена в MAP ПРОГРАММЫ, то она доступна любой другой процедуре или функции в программе. Если же объявлена в MAP модуля-ЧЛЕHА, то функция доступна только другим процедурам или функциям из этого модуля-ЧЛЕHА.
Пример:
PROGRAM
MAP
FulIName(STRING.STRING,STRING),STRING
!Прототип функции с параметрами
DayString,STRING
!Прототип функции без параметров
.
CODE
: !Глобальные операторы
:
FulIName FUNCTION(Last,First,lnit) !Функция полного имени
CODE !Hачало секции кода
IF Init !Если нет среднего инициала
RETURN(CLIP(First) & ' ' & Last)
! вернуть полное им
ELSE !в противном случае
RETURN(CLIP(First) & ' ' & Init & '. ' & Last)
! вернуть полное им
. !конец условия if
DayString FUNCTION !функция названия дн
CODE !Hачало секции кода
Day# = (TODAY()%7)+1 !Получить день недели из
!системной даты
EXECUTE Day# !Execute, возвращает название
!дн
RETURN('Воскресенье')
RETURN('Понедельник')
RETURN('Вторник')
RETURN('Среда')
RETURN('Четверг')
RETURN('Пятница')
RETURN('Суббота')
. !Конец структуры execute
См. Также:



Содержание раздела