При создании специализированных ДС необходимо использовать системные программные средства диалога. Они входят в состав ОС и оформлены в виде методов доступа. Метод доступа определяет набор операций для работы с терминалами данного типа, структуру сообщений и правила их обработки. Программисту предоставляются макрокоманды на языке ассемблера для программирования диалога.
В составе ОС ЕС имеются методы доступа: 1) графический (ГМД); 2) базисный телекоммуникационный (БТМД); 3) общий телекоммуникационный (ОТМД).
Графический метод доступа обеспечивает работу локальных дисплеев комплекса ЕС7906, графических дисплеев и связь мини-ЭВМ (типа СМ ЭВМ) с ЕС ЭВМ.
Базисный телекоммуникационный метод доступа обслуживает как локальные, так и удаленные терминалы, в частности широко распространенные дисплеи комплекса ЕС7920. Имеет гибкие и мощные средства для построения систем телеобработки.
Общий телекоммуникационный метод доступа имеет более ограниченные средства по организации связи с терминалами, однако макрокоманды метода доступа представляют язык высокого уровня для обработки сообщений. Особенность ОТМД заключается в наличии программы управления сообщениями (ПУС), которая обеспечивает централизованную обработку сообщений. Прикладные программы пользователей могут быть сделаны практически независимыми от ПУС и используемых терминалов. Терминальный ввод — вывод программируется с использованием стандартных средств языков высокого уровня для работы с перфокартами и устройствами печати, а при выполнении программы потоки данных связываются с соответствующим терминалом.
Подготовка сообщенияк обмену.При любом методе доступа на физическом уровне можно выделить две фазы ввода сообщений с терминала:
1) определение готовности терминала к передаче входного сообщения пользователя;
2) прием ЭВМ входного сообщения.
Готовность терминала к передаче часто оформляется в виде управляющего сигнала «Внимание». Этот сигнал может быть обнаружен ОС через систему прерываний или с помощью периодического опроса (например, по времени). Пока пользователь не сформирует входное сообщение и не нажмет клавишу, вызывающую сигнал «Внимание», система будет обрабатывать другие диалоговые или пакетные запросы. Наличие сигнала «Внимание» позволяет в принципе организовать асинхронное диалоговое взаимодействие пользователя с САПР.
Кроме обработки сигнала «Внимание» и непосредственного ввода — вывода методы доступа предусматривают промежуточное хранение сообщений в оперативной или внешней памяти ЭВМ (буферы и очереди), сборку и разборку сообщений при передаче по частям, добавление или удаление управляющей информации и пр.
На рис. 4.2 показан алгоритм прохождения односегментного сообщения через систему, управляемую ОТМД. Рассмотрим шаги обработки сообщения р программе управления сообщениями.
Рис. 4.2. Схема алгоритма ПУС
Шаг 1. Обнаружение ОС готовности терминала к передаче и принятие входного сообщения в ЭВМ.
Шаг 2. Накопление данных в буфере (как только сформирован очередной сегмент, выполняется входная обработка сообщения: контроль, преобразование кодов, выдача сообщений об ошибках и т. п.).
Ш а г 3. Передача сообщения в очередь к ПП (еслитребуется обработка в ПП), иначе передача сообщения в очередь терминала.
Ш а г 4. Прием сообщения из очереди к ПП в буфер и передача после входной обработки в очередь предварительного считывания.
Шаг 5. Обработка прикладной программой по операторам GET или READ данных из очереди считывания.
Шаг 6, 7. Передача результатов работы прикладной программы по операторам PUT или WRITEв буфер ПУС и далее выходная обработка для ПП.
Шаг 8. Поступление сообщения в очередь к другой программе и в очередь терминала.
Шаг 9. Выходная обработка сообщения для канала связи.
Шаг 10. Передача сообщения на один или несколько терминалов.
Диалог с помощью локального дисплея.Чтобы организовать синхронный диалог с локальными дисплеями одного типа в рамках небольших САПР, нет необходимости строить сложную программу управления сообщениями. Можно децентрализовать обработку сообщений в специальных подпрограммах организации диалога, которые вызываются из прикладных программ. В простейшем случае достаточно разработать с помощью макрокоманд базисного телекоммуникационного доступа на языке ассемблера подпрограмму, осуществляющую: 1) выход выходного сообщения; 2) ожидание сигнала внимания; 3) ввод входного сообщения.
Обращение к этой подпрограмме имеет вид
CALL DSPLY (NC, DATA, TERM),
где NC — номер строки для установки курсора; DATA — область сообщений (при входе в подпрограмму должна содержать выходное сообщение, при выходе — ответ пользователя); TERM — имя описания терминала (задается с помощью языка управления заданиями).
При использовании подобных подпрограмм для связи прикладной программы с терминалом возникает задача преобразования прочитанной числовой информации во внутримашинное представление и обратного преобразования при выводе чисел. В языке ПЛ/1 имеются средства внутреннего преобразования данных (GET/PUT STRING). В языке ФОРТРАН таких возможностей нет, однако можно применить промежуточный файл сообщений, с которым прикладная программа осуществляет ввод — вывод по формату.
С помощью аналогичных вышерассмотренной подпрограмм можно создавать простые монопольные (на одного пользователя) ДС. Для создания ДС коллективного использования необходим монитор управления вычислительными процессами пользователей, средства для управления данными в режиме диалога (редактор текстов, библиотекарь, архивариус и др.) и средства пакетирования заданий. При этом к защите ресурсов пользователей от взаимного влияния и к надежности программ предъявляются повышенные требования.
В прикладных программах необходимо обеспечить контроль вводимой информации, обработку программных ситуаций (деление на нуль, переполнение и т. п.) и санкционирование доступа к информации с помощью парольной защиты. Никакие действия пользователя за терминалом не должны приводить к аварийному завершению его диалогового процесса и тем более системы в целом.
Пример программы на языке ПЛ/1.Программа предназначена для выбора диалоговой подпрограммы по меню Экран в программе представлен двояко: непрерывной областью и массивом строк. В начале программы очищается область экрана, формируются строки меню и выводятся на дисплей с помощью подпрограммы терминального ввода — вывода. Ответом на меню служит номер функции, вводимый пользователем в первой позиции последней строки. Допустимый ответ преобразуется в индекс перехода, по которому осуществляется обращение к выбранной подпрограмме. После исполнения подпрограммы происходит возврат на выдачу меню В случае неверного ответа меню выдается пользователю для повторного выбора функции