4.4.4. Функции qW.
Основным исполняемым программным блоком в qW является экранная форма. Как исполняемый блок экранная форма содержит в себе совокупность исполняемых элементов – функций. В общем случае, функция qW представляет собой алгоритм, состоящий из других функций qW более низкого уровня, связанных между собой М-кодом. Совокупность всех имеющихся функций
qW образует некоторую сетевую структуру, на нижнем уровне которой находятся М-функции работы с базой данных ($ORDER, SET и др.) и функции работы с оконным интерфейсом (для GUI это ^$W, ^$D и ^$E – структурированные переменные стандарта MWAPI, для CHUI это OPEN^%WINTER и др.). Для Пользователя доступен весь набор функций, из которых он может составить интересующий его алгоритм и оформить его в виде функции.В qW составление Пользователем функции возможно двумя различными методами. Традиционный для различных программных инструментов метод – записать свою функцию в модуль – библиотеку в соответствии с принятыми в qW правилами оформления, с которыми можно ознакомиться в справочной документации qW. Нетрадиционный метод – переопределить некоторую имеющуюся в qW функцию нужным Пользователю образом. Второй метод более быстр, компактен и прост. Наличие метода переопределения является несомненным достоинством qW как инструмента, поскольку позволяет существенно снизить требования к уровню знаний Пользователем системных
вещей qW. Предполагается, что Пользователь qW при составлении своих алгоритмов будет использовать в основном метод переопределения функций и, соответственно, будет использовать нижеописанные вызовы функций типа 2 и 3.Классификация функций.
Базовая классификация функций qW связана с их использованием в проектировании Приложений qW. Различают два типа функций - Пользовательские и Рабочие. Пользовательские функции являются функциями более высокого уровня и составлены из Рабочих функций.
Имена Рабочих функций, за исключением $$G и $$GG, состоят из четырех букв (без цифр!). Если Рабочая функция может быть переопределена, то первая буква в имени характеризует уровень их возможного переопределения:
y,z - уровень фрейма, экранной формы и элемента экранной формы.
s - уровень фрейма и экранной формы.
f - уровень фрейма.
Умолчания этих функций содержатся в программах %qfu, %qf999(CHUI) и %qg999(GUI).
Если Рабочая функция не может быть переопределена, то первая буква характеризует принадлежность к классификационной группе:
q - доступ к БД. Отработка в программе %qget.
w - функции взаимодействия с оконным интерфейсом. Отработка в программе %qfw (CHUI) или %qgw (GUI).
с - общесистемные функции. Отработка в программе %qfc.
х - системные пользовательские функции. Отработка в программе %qfx.
о - функции сервисного обслуживания. Отработка в программе %qfo.
b - специальные функции режима построителя. Отработка в программе %qfb (CHUI) или %qgb (GUI).
t - функции транслятора. Отработка в программе %qft.
h - функции формирования и вывода печатных форм. Отработка в программе %qfh.
К Рабочим функциям также относятся так называемые гиперфункции $$G и $$GG (они не переопределяемые).
Пользовательские функции подразделяются на функции отработки событий, функции-параметризаторы и небольшое количество сервисных функций, относимых по характеру своего использования к Пользовательским. Если Пользовательская функция может быть переопределена, то первая буква ее четырехсимвольного имени, также как и у Рабочих функций, характеризует уровень возможного переопределения. Не переопределяемые Пользовательские функции обычно начинаются на "c". Три последних символа в именах функций отработки событий являются цифрами, образующими номер ассоциированного с этими функциями события.
Пользовательские функции, в отличие от Рабочих, в большинстве случаев не имеют формальных параметров. Точнее говоря, источником параметров для функций отработки событий являются функции - параметризаторы. Дальнейшее подразделение Пользовательских функций на группы будет описано в следующих главах.
Вызовы функций.
Существует три способа вызова функций qW.
Вызов оформляется в виде:
Некоторая Переменная Пользователя = $$F(“Имя Функции”,Параметр1,…,Параметр6)
D D(“Имя Функции”,Параметр1,…,Параметр6).
Явно задаваемые параметры Параметр1,…,Параметр6 индивидуальны для каждой функции, их может быть любое количество в пределах шести и может не быть вообще. Параметры могут быть обязательными и необязательными. Обязательные параметры должны быть заданы, необязательные могут быть пропущены. В качестве параметров Вы можете использовать системные переменные. Если Вы пропускаете параметр в конце, то просто его не пишите, если в середине, то оставляете запятые – разделители. Например:
D D(“Имя”,Параметр1,Параметр2,Параметр3,Параметр4,Параметр5) – опускаем Параметр2 и Параметр5, получаем D D(“Имя”,Параметр1,,Параметр3,Параметр4).
Схема исполнения любой функции qW с использованием $$F и D представлена на рис 4.4. В конечном итоге вызов функции осуществляется по ее имени, состоящим из 4 символов. Первый символ в имени определяет путь поиска программного текста этой функции. Если функция может быть переопределена, то ее поиск сначала осуществляется в исполняемой программе (qf_№фрейма), а затем в модуле – библиотеке. Если не может быть переопределена, то сразу в модуле – библиотеке.
Функции на z,у ищутся сначала на уровне текущего элемента экранной формы, потом на уровне текущей экранной формы, затем на уровне текущего фрейма. Функции на s – начиная сразу с текущей экранной формы, на f только на уровне фрейма. (Напомним Вам, что уровень переопределения для функции Вы оформляете при проектировании в соответствующих полях строки описания этой функции. В строке описания Вы вводите или не вводите номер элемента, номер экрана, и номер фрейма.).
В качестве входных параметров функция qW, в общем случае, использует явно задаваемые параметры и значения переменных, заимствованных из локальной среды qW (в локальную среду qW входят системные переменные, служебные понятия и др. В качестве выходных параметров функция возвращает в общем случае пустую или непустую строку, и изменяет значения переменных локальной среды. В процессе исполнения некоторые из функций обращаются к базе данных, вызывают функции оконного интерфейса, ожидают прерываний от клавиатуры или мыши. Кроме того, как уже было сказано, функция может при помощи тех же $$F и D вызывать другие функции qW, схема исполнения которых будет точно такой же (как на рис.4.4). В рассматриваемом алгоритме анализ возвращаемого значения не производится и им Пользователь должен заниматься специально.
Site of Information
Technologies Designed by inftech@webservis.ru. |
|