Сайт Информационных Технологий

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.

  1. Прямой вызов функции по ее имени. Часто используется при составлении новых функций qW. Проектирование новых функций qW и, соответственно, использование прямых вызовов вложенных в них других функций требует от Пользователя qW достаточно серьезного уровня освоения qW'а и в ближайших параграфах рассматриваться не будет. За справками отсылаем к справочной документации qW [5]. Единственные функции, которые мы будем вызывать прямым образом в рамках первоначального освоения qW это гиперфункции $$G и $$GG.
  2. Вызовы функций отработки событий (только их) могут быть сделаны через обработчик событий, о чем пойдет речь в параграфе "События qW".
  3. Вызов функции при помощи метафункции $$F и метапроцедуры D, обеспечивающих поиск переопределенных функций. О нем и пойдет речь сейчас.

Вызов оформляется в виде:

Некоторая Переменная Пользователя = $$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). В рассматриваемом алгоритме анализ возвращаемого значения не производится и им Пользователь должен заниматься специально.

image44.gif (6912 bytes)

 


Site of Information Technologies
Designed by  inftech@webservis.ru.