Продолжение табл. 3

Уровень

Возможность

та

mb

тс

Оа

оь

Ос

2b



Классы устройств ввода

Типы подсказки и эха на устройство

Длина входной очере­ди

Максимальный размер буфера для устройства ввода строки (в лите­рах)

Максимальный размер буфера для устройства ввода последовательно­сти позиций (в точках)

Число станций вывода или ввода-вывода

Число станций ввода «ли ввода-вывода

Общая память сегмен­тов

Станции вывода мета­файла

Станции ввода мета­файла

П
р и м ечание. Данные табл. 3 справедливы:

  1. Для текста точности ДО СТРОКИ и ДО ЛИТЕРЫ.

  2. Для станций, обеспечивающих заполнение ПО ШАБЛОНУ.

  3. Для станций, обеспечивающих заполнение ШТРИХОВКА.

  4. Для станций, обеспечивающих приоритеты сегментов.

  5. В связи с ограниченностью ресурсов и переменным размером записей дос­тижение указанных значений не всегда возможно.

  1. Состояние ЯГС и справочные функции

    1. Описание состояний

      1. ЯГС может находиться в одном из пяти различных (функциональных состояний, приведенных на черт. 13:

ГЯЗК (GKCL) —ЯГС закрыто;

ГЯОТ (GKOP) — ЯГС открыто;

СТОТ (WSOP) — по крайней мере одна станция открыта;

СТАК (WSAC) — по крайней мере одна станция активна;

СГОТ (SGOP) — сегмент открыт.

  1. Значение функционального состояния содержится в об­щей статистической переменной, которой до первого обращения к ЯГС присваивается значение ГЯЗК. Многие обращения к функци-

Возможные переходы между функциональными состояниям»

Черт. 13



ям ЯГС допустимы только в определенных функциональных сос­тояниях ягс.

  1. Общее состояние ЯГС определяется набором перемен­ных состояния, которые обеспечивают полное описание эффекта функций. Набор переменных состояния подразделяется на:

  1. функциональное состояние;

  2. таблицу состояния ЯГС;

  3. таблицу состояния сегмента для каждого существующего сегмента;

  4. входную очередь;

  5. таблицу состояния станции для каждой открытой станции;

  6. таблицу ошибочных состояний ЯГС.

    1. При обращении к определенным функциям перемен­ные состояния размещаются в памяти, делаются доступными или ■исключаются. Когда переменные состояния размещаются в памя­ти, в них записываются значения по умолчанию. При инициализа­ции таблицы состояния станции некоторые значения по умолчанию «берутся из таблицы описания станций, которая содержит данные для каждого типа станций, поддерживаемого данной реализацией ЯГС. Переменные состояния, принадлежащие этим подмножествам, из­меняются и опрашиваются путем обращения к функциям ЯГС.

    2. Если во время выполнения какой-нибудь функции ЯГС возникает ошибочная ситуация,.ЯГС вызывает функцию ОБРАБО­ТАТЬ ОШИБКУ. Во время выполнения этой функции ЯГС нахо­дится в состоянии обработки ошибки. В этом состоянии ЯГС до­пускает выполнение только справочных функций, функции ЗАРЕ­ГИСТРИРОВАТЬ ОШИБКУ и функции АВАРИЙНО ЗАКРЫТЬ ЯГС и не допускает никаких изменений в таблицах состояния, за исключением таблицы ошибочных состояний.

  1. Справочные функции

    1. Справочные функции выдают значение непосредствен- ■но либо получают их из различных таблиц. Типы данных этих значений и значения по умолчанию для полей таблиц приведены в .разд. 4.

    2. Справочные функции ЯГС построены таким образом, что при их выполнении ошибки появиться не могут. Справочные ^функции для значений, которые могут быть логически недоступны, «имеют выходной параметр «индикатор ошибки», определяющий, являются ли другие выходные параметры правильными.

Параметр доступности «индикатор ошибки» является целым и в случае, если другие значения не доступны, содержит номер ошиб­ки, который идентифицирует соответствующую ошибку ЯГС. Те же номера ошибок используются и при выполнении других функ­ций ЯГС, поэтому может быть составлен единый список сообще­ний об ошибках. Если ЯГС не находится в нужном состоянии, то выдается сообщение об ошибке с соответствующим номером, даже «если имеются другие причины, из-за которых запрашиваемые зна­чения оказываются недоступными. Если эти значения доступны, .выдаваемое значение параметра «индикатор ошибки» будет равно нулю.

  1. Если значение параметра «индикатор ошибки» не рав­но нулю, то значения других выдаваемых параметров зависят от жонкретной реализации. В описании каждой справочной функции приводится список значений параметра «индикатор ошибок», ко­торые могут быть выданы этой функцией.

  2. Некоторые справочные функции, выбирающие данные из таблиц состояния станции, имеют входной параметр типа «пе­речисление», который может принимать следующие значения:

УСТАНОВЛЕННЫЕ — значения выдаются в том виде, в ка- жом они были получены от прикладной программы;

•РЕАЛИЗОВАННЫЕ — выдаются значения, которые исполь­зовались станцией после того, как фактические значения преобра­зованы в имеющиеся на станции значения.

  1. Об р а б о тк а ошибок

    1. Для каждой функции ЯГС существует фиксированный набор ошибочных ситуаций, каждая из которых будет приводить к вызову функции ОБРАБОТАТЬ ОШИБКУ. Такой механизм конт­роля ошибок должен присутствовать во всех реализациях ЯГС. Функции ОБРАБОТАТЬ ОШИБКУ обеспечивают интерфейс меж­ду ЯГС и прикладной программой. Если функция ОБРАБОТАТЬ ОШИБКУ представлена прикладной программой, то она может интерпретировать информацию об ошибке и может запоминать данные в области данных для последующей интерпретации при­кладной программы после выхода из функции ЯГС, во время вы­полнения которой произошла ошибка.

    2. Стратегия обработки ошибок в ЯГС основана на следу­ющей классификации ошибок:

класс 1 — ошибки, вызывающие точно определенную реакцию;

класс 2 — ошибки, приводящие к попытке сохранить резуль­таты предыдущих операций;

класс 3 — ошибки, которые вызывают непредсказуемые ре­зультаты, включая потерю информации.

ЯГС различает три ситуации, в которых обнаруживаются ошиб­ки:

ситуация А — ошибка обнаружена в функциях ЯГС;

ситуация Б — ошибка обнаружена в функциях, к которым бы­ло обращение ЯГС (функции драйверов и операционных систем);

ситуация В — ошибка обнаружена в других частях приклад­ной программы.

  1. Если ошибки обнаружены вне ЯГС (ситуация В), то прикладная программа либо снова получает управление для про­должения выполнения программы, либо происходит аварийное за­вершение программы. В последнем случае результаты работы прог­раммы непредсказуемы (класс 3), и в худшем случае вся графи­ческая информация, подготовленная в задаче до этого момента, может быть потеряна. Если же прикладная программа получает управление, она может сделать попытку явно закрыть ЯГС надле­жащим образом или, по крайней мере, попытаться аварийно зак­рыть ЯГС путем обращения к функции АВАРИЙНО ЗАКРЫТЬ ЯГС. Аналогично, если ошибка возникла в функциях, вызываемых из ЯГС, и управление не возвращено в ЯГС надлежащим образом, то результаты также являются непредсказуемыми.

  2. Функция АВАРИЙНО ЗАКРЫТЬ ЯГС является сред­ством, зависящим от реализации. Ее назначением является сохра­нение как можно большей части подготовленной графической ин­формации. Ее можно непосредственно вызвать из прикладной прог-

3 Зак. Ж 4

раммы. Она также вызывается из самого ЯГС в виде стандартной’ реакции на ошибки класса 2.

  1. Ошибки, которые явно перечислены в составе описания- ЯГС, относятся к классу 1 ошибок. Эти ошибки либо обнаружива­ются внутри самого ЯГС, либо функция, вызванная из ЯГС, пере­дает управление в соответствующую функцию ЯГС вместе с со­ответствующей информацией об ошибке. Во всех случаях ошибок класса 1 ЯГС обращается к функции ОБРАБОТАТЬ ОШИБКУ. Ес­ли при вызове функции ЯГС возникает сразу несколько ошибоч­ных ситуаций, то сообщается по крайней мере об одной из этих ошибок.

  2. В прикладной программе может иметься собственная программа обработки ошибок или использоваться функция обра­ботки ошибок, предусмотренная в составе ЯГС. Любая функция- обработки ошибок получает от ЯГС следующую информацию:

  1. идентификацию ошибки;

  2. идентификацию функции ЯГС, которая вызвала функцию- ОБРАБОТАТЬ ОШИБКУ;

  3. файл ошибок.

  1. Функция ОБРАБОТАТЬ ОШИБКУ, входящая в состав- ЯГС, фактически только обращается к функции ЗАРЕГИСТРИ­РОВАТЬ ошибку с тем же самым набором параметров. Последняя функция выполняет следующие действия:

  1. записывает сообщение об ошибке и идентификатор функ­ции ЯГС в файл ошибок;

  2. возвращает управление вызывающей программе.

Вызов функций обработки ошибок в два этапа позволяет реа­лизовать в прикладной программе свою собственную функцию- ОБРАБОТАТЬ ОШИБКУ и в то же время сохранить доступ к сервисным возможностям, предоставляемым функцией ЗАРЕГИ­СТРИРОВАТЬ ОШИБКУ, как это можно видеть из следующего- примера прикладной программы, содержащей функцию ОБРАБО­ТАТЬ ОШИБКУ:

ОБРАБОТАТЬ ОШИБКУ (номер ошибки, идентификатор фун­кции ЯГС, файл ошибок);

произвести идентификацию функции ЯГС и ошибки для того,, чтобы различить следующие варианты:

вариант «специальная обработка»:

интерпретировать параметры ошибки, переданные из ЯГС;

сохранить информацию для прикладной программы в указан­ной ею области данных;

возвратить управление в вызывавшую функцию ЯГС;

вариант «стандартная обработка»:

вызвать функцию ЗАРЕГИСТРИРОВАТЬ ОШИБКУ со всеми- выше перечисленными параметрами;

возвратить управление вызвавшей функции ЯГС.КОНЕЦ.

  1. Все функции ЯГС при обнаружении ошибки выполняют «следующие действия:

  1. устанавливают состояние ошибки в положение ВЫКЛЮЧЕ­НО;

  2. вызывают функцию ОБРАБОТАТЬ ОШИБКУ с соответ­ствующими параметрами;

  3. устанавливают состояние ошибки в положение ВЫКЛЮЧЕ­НО;

  4. выполняют встроенные алгоритмы реакции на ошибку (обыч­но функция, вызвавшая ошибку, не выполняет никаких действий, но для этого иногда бывает необходимо выполнить некоторые опе­рации по очистке).

  1. Все функции ЯГС перед началом работы должны произ­водить следующие проверки (в указанном порядке):

  1. находится ли ЯГС в нужном состоянии;

  2. правильно ли заданы входные параметры.

Должна сообщаться информация, по крайней мере, о первой из обнаруженных ошибок (лишь в случае справочных функций пер­вая обнаруженная ошибка выдается через индикатор ошибки).

    1. Прикладная программа, обладающая собственной фун­кцией ОБРАБОТАТЬ ОШИБКУ, имеет доступ к набору перемен­ных, описывающих состояние ЯГС. Однако в процессе обработки ошибки нельзя модифицировать состояние ЯГС, то есть из прик­ладной программы, имеющей собственную функцию ОБРАБОТАТЬ ОШИБКУ, допустимо обращение только к справочным функци­ям, функции ЗАРЕГИСТРИРОВАТЬ ОШИБКУ и функции АВА­РИЙНО ЗАКРЫТЬ ЯГС. Это достигается путем установки сос­тояния ошибки в положение ВКЛЮЧЕНО до обращения из ЯГС к функции ОБРАБОТАТЬ ОШИБКУ и установки состояния •ошибки в положение ВЫКЛЮЧЕНО сразу после вызова этой фун­кции.

    2. Список ошибок ЯГС приведен в приложении 4. Спра­вочные функции не могут вызывать ошибки.

  1. С п еци а л ь н ы й интерфейс между ЯГС и при­кладной программой

    1. В ЯГС предусмотрен унифицированный механизм рас­ширения для обеспечения доступа к специфическим особенностям оборудования («стандартный способ выполнения нестандартных действий»). Он реализован с помощью функции РАСШИРЕНИЕ.

    2. Функцию РАСШИРЕНИЕ не следует использовать для «генерации геометрических выходных данных. Для этих целей луч­ше воспользоваться функцией ОБОБЩЕННЫЙ ПРИМИТИВ ВЫВОДА, которая предназначена для генерации геометрических выходных данных, не обеспечиваемых ЯГС.

3. ФУНКЦИИ ЯГС

  1. Правила описания функций

    1. Заголовок описания каждой функции должен содержать;: название функции;

состояния ЯГС, в которых функция может использоваться, ис­ключая состояния для справочных функций (см. п. 3.9), для ни* указываются только те состояния, в которые справочные функ­ции могут возвратить заданные правильные значения;

самый низкий уровень ЯГС, на котором данная функция явно определена и является обязательной.

  1. В списке параметров для каждого параметра указыва­ется следующая информация:

является ли параметр входным (вх) или выходным (вых); название параметра;

для координат — система координат (МК, НК, КУ), исполь­зуемая при вызове функции;

разрешенные значения для данных типа «перечисление» или любые ограничения на диапазон изменения значений для целых и действительных данных (например >0);

тип данных:

Ц — целые значения; Д — действительные значения; С — сим­вольные значения; Т — точка; И — имя; П — перечисленные зна­чения. Тип данных может иметь составную форму, в основе кото­рой лежит одна или несколько простых форм (например ПхТ), ил» составную форму типа 0 — общие значения записи данных.

Список функций ЯГС приведен в Приложении 3.

  1. Функции управления

    1. ОТКРЫТЬ ЯГС