Содержание к диссертации
Введение
2. Проектирование проблемно-ориентированного языка программирования, основанного на процессном методе описания имитационных систем.
2.1. Обзор языка 17
2.1.1. Массивы 19
2.1.1.1. Идентификатор 19
2.1.1.2. Список 19
2.1.1.3. Массив 19
2.1.1.4. Вырезки массива .20
2.1.1.5. Древовидное представление массива ..20
2.1.1.6. Массивы произвольного ранка ..21
2.1.2. Процессы 21
2.1.2.1. Переменные процесса 21
2.1.2.2. Тело процесса 22
2.1.2.3. Правило формирования тела процесса... 23
2.1.2.4. Данные процесса 28
2.1.3. Балансы 2S
2.1.3.1. Тело баланса 29
2.1.3.2. Продукт баланса 29
2.1.4. Блоки ; 29
2.1.4.1. Процессы блока 29
2.1.4.2. Балансы блока 30
2.1.4.3. Общие переменные блока 30
2.1.5. Задачи 30
2.1.5.1. Критерий задачи 30
2.1.5.2. фиксация переменных
2.1.5.3.. Размещение ЛД-массивов ...31
2.1.6. действия языка 32
2.2. Нотация и терминология... 33
2.3. Лексика . 34
2.4. Идентификаторы, имена, числа ... 35
2.5. Определение синтаксиса и семантики основных операторов . 35
2.5.1. Оператор поставить 36
2.5.2. Описание массива 36
2.5.3. Описание вырезок 3?
2.5.4. Описание вырезки .. 37
2.5.5. Вырезка 37
2.5.6. Модификация списка 38
2.5.7. Описание процесса 38
2.5.8. Данные 39
2.5.9. Описание числовых значений 39
2.5.10. Значения элементов 40
2.5. II. Описание баланса 41
2.5.12. Описание переменных блока 42
2.5.13. Общие блока 43
2.5.14. Описание блока 43
2.5.15. Описание задачи 43
2.5.16. Оператор заменить 45
2.5.17. Модификация баланса 47
2.5.18. Модификация блока 47
2.5.19. Оператор УБРАТЬ 48
2.6. Методика моделирования на ПРИМе 49
2.6.1. Язык схем 49
2.6.2. Примеры моделей, описанных на ПРИМе
2.6.3. Проведение имитационных экспериментов... 60
2.6.3.1. Смена параметров модели 61
2.6.3.2. Изменения в описаниях объектов блока 61
2.6.3.3. Переход к нескольким расчетным периодам... 62
2.6.3.4. Смена критерия ^3
2.6.3.5. Модификация описаний массивов 7
2.7. дополнительные операторы ^8
2.7.1. Дополнительные операторы автономного режима б8
2.7.1.1. Оператор выдачи описания объектов ^8
2.7.1.2. Оператор печати содержимого базы данных системы
2.7.1.3. Оператор запуска задачи на счет б8
2.7.2. Дополнительные операторы предтранслируемого режима {
2.7.2.1. Оператор связи с переменными программы...
2.7.2.2. Параметры процесса .. 70
2.7.3. Дополнительные операторы интерактивного режима...70
2.7.3.1. Оператор массив .70
2.7.3.2. Оператор вырезка .70
2.7.3.3. Оператор процесс 71
2.7.3.4. Оператор данные 71
2.7.3.5. Оператор баланс 71
2.7.3.6. Оператор блок 71
2.7.3.7. Оператор задача 71
2.7.3.8. Оператор счет задачи 71
3. Разработка и реализация языка модуля терминального доступа и аппарата процедур баз данных субд компас .
3.1. Язык модуля терминального доступа субд компас
3.1.1. Общие правила и элементы
3.1.1.1. Генерация МВД 73
3.1.1.2. Вход и выход из 1Щ 74
3.1.1.3. Ввод с терминала 74
3.I.I.4. Переменные, операнды ?4
3.1.2. Операторы
3.1.2.1. Операторы ЯМД 75
3.1.2.2. Операторы ввода-вывода 75
3.1.2.3. Операторы управления процессом вычислений. ?8
3.1.2.4. Оператор запуска последовательности ДУБНА - приказов 79
3.1.3. Реализация операторов ШЗД '
3.1.3.1. Организация библиотечных аапросов 80
3.1.3.2. Реализация операторов ЯМД 3.1.3.3. Реализация операторов ввода-вывода
3.1.3.4. Реализация стекового механизма в операторах запуска и исполнение библиотечных запросов.81
3.2. Аппарат процедур баз данных СУБД КОМПАС - механизм рас
ширения стандартного ЯМД ...82
3.2.1. Анализ предложений по процедурам ДД 82
3.2.2. Аппарат процедур Щ СУВД ШМПАС . 82
3.2.3. Реализация аппарата процедур ВД 85
4. Реализация ПРИМа с использованием СУВД"КОМПАС ^
4.1. Проектирование логической структуры базы данных (схемы)^
4.1.1. Отношения типа один ко многим . ^
4.1.2. Петлевой набор ...^
4.1.3. Отношения типа многие ко многим 90
4.1.4. Представление ориентированного графа.. 91
4.1.5. Соответствие между описанием языка и схемой ДЦ ...9І
4.2. Этапы проектирования и реализации компилятора ПРИМа...93
4.2.1. Проектирование схемы ПРИМа 93
4.2.1.1. Подсхема массива ^*
4.2.1.2. Подсхема процесса
4.2.1.3. Подсхема баланса 98
4.2.1.4. Подсхема блока 99
4.2.1.5. Подсхема задачи "
4.2.1.6. Целостность -^
4.2.2. Реализация основных операторов языка с использо -ванием аппарата процедур ВД 4.2.3. Генерация ЛП-задачи 106
4.2.4. Реализация дополнительных операторов интерактивного режима.
4.2.5. Режимы использования компилятора ПО
4.3. Описание экспериментальной версии компилятора. ПО
5. Заключение 112
Литература
- Идентификатор
- Определение синтаксиса и семантики основных операторов
- Оператор запуска последовательности ДУБНА - приказов
- Соответствие между описанием языка и схемой ДЦ
Введение к работе
С возникновением ЭВМ появились качественно новые методы для решения традиционных задач, связанных с изучением сложных систем,-прежде всего экономики.
За более чем три десятилетия развития вычислительной техники существенно изменились возможности ЭВМ - и не только возрос -шие быстродействие и оперативная память, а и уровень сервиса, предоставляемый пользователю.
Развитие вычислительной техники шло совместно с совершенствованием методов исследования сложных систем. Естественным ито -гом этих разработок явилось возникновение новой научной дисциплины, получившей название системный анализ" [221 .
Особое место в методах системного анализа"занимает имитация. Под имитацией принято понимать изучение объектов исследования путем проведения экспериментов с реализованными на ЭВМ математическими моделями этих объектов [13] .
Обеспечить имитационный эксперимент (ИЭ) призвана имитаци-онная система (ИС) [241 , следовательно, она должна содержать систему моделей, адекватно описывающую исследуемый объект с соответствующими алгоритмами их расчета, средства для описания вариантов моделей, вспомогательные, сервисные функции для наг -лядного ведения экспериментов (средства визуализации и анали -за полученного решения), а такке единый (под все решаемые в ИС задачи) банк данных.
Перечисленные требования к ИС определяют её архитектуру. Обычно выделяют следующие подсистемы [12] ;
- блок описания моделей и порождения новых вариантов;
- блок интерпретации полученных результатов: средства визуализации и анализа найденного решения;
- блок верификации моделей: средства анализа адекватности модели исследуемому объекту;
- блок лостоптимизационного анализа: средства для формального изучения модели.
Указанные блоки функционируют в рамках единой системы над общим банком данных» Каждый блок обладает своими средствами общения, предоставляемыми пользователю. Совокупность всех этих средств составляет входной язык ИС. Такой язык включает в себя язык моделирования (ЯМ) - на нем можно определять модели,порож-дать новые варианты и представлять простейшим образом результаты расчетов. Основу ЯМ составляют два множества: множество объектов и множество действий. Программа на ЯМ, определяющая ИЭ, -это последовательность описаний объектов и действий с ними. Семантика описания объектов заключается в представлении математических соотношений модели (МСМ),связывающих в виде равенств и/или неравенств переменные и параметры модели. Семантика действий - в возможности ЯМ порождать новые варианты моделей и управлять ходом ИЭ. Первую группу действий можно классифицировать по их отношению к вносимым изменениям в МСМ: будем различать действия, модифицирующие множество МСМ и действия, обновляющие числовые параметры модели, сохраняя множество МСМ неизменным.
Так как МСМ формируются в соответствии с семантикой объектов ЯМ, то модифицирующие действия определяются в терминах коррекции описания объектов языка. Вследствие взаимоопределяемости объектов языка друг через друга основным семантическим требованием модифицирующих действий является обеспечение непротиворечивости представления Всех объектов, описание которых зависит от корректируемого.
Числовые параметры модели обычно получаются в результате алгоритмической обработки первичных данных, поэтому в ЯМ должны предусматриваться средства для такого определения параметров модели с возможными последующими изменениями этих значений в ходе из.
Современные языки моделирования обладают большим многообразием по виду объектов и действий над ними. Рассмотрим некоторые из них, получившие наиболее широкое распространение, прежде всего с точки зрения средств организации ИЭ.
ЯМ стали развиваться с начала 60-х годов с возникновением имитации как метода исследования сложных систем, поведение которых зависит от случайных величин. Поэтому первые языки моделирования: ШМСКРИПТ [цг], ГПСС [43,44] , СИМУЛА [8] , СЛЭНГ [6 J были ориентированы на описание моделей дискретных событий. Основу этих языков составляют объекты, имеющие прямые аналоги в теории систем массового обслуживания. Различают постоянные и временные объекты - первые эквивалентны обыяным переменным универсальных языков программирования, а вторые могут объединяться в списки - для этого в языке определены специальные операторы действия с временными объектами. Модель в таких языках моделирования описывается в виде совокупности событий, связанных по времени операторами управления. Результатом имитационного эксперимента является множество статистических характеристик, формируемых автоматически в процессе счета программы, описывающей данный ИЭ. Приведенные ЯМ отражают ранний подход к имитации, когда в процессе ИЭ случайным образом изменялись некоторые параметры модели, а множество МСМ было неизменным на протяжении всего ИЭ, поэтому в таких языках моделирования отсутствуют модифицирующие действия. При необходимости изменить соотношения модели нужно написать новую программу. Что касается возможностей алгоритмической обработки первичных данных, то эти вопросы по-разному решены в перечисленных языках: СЙМУЛА, как универсальный язык программирования, допускает произвольную алгоритмическую обработку первичных данных, а в остальных имеются средства для связи с подпрограммами, написанными на универсальных языках программирования.
Все языки моделирования по виду определения МСМ можно разбить на два класса: в языках первого класса МШ являются самостоятельными объектами языка, а для языков второго класса типично неявное представление МСМ,
В языке дИНАМО Г341 модель описывается явно: программа на этом языке состоит из последовательности описания уравнений, причем одни и те же переменные могут входить в разные уравнения. Специальный вид уравнений позволяет статически спланировать последовательность вычисления значений переменных модели.
Можно обобщить принцип явного описания модели - по такому пути пошли разработчики языка УТОПИСТ [261 - на этом языке допускается описание модели в виде совокупности произвольных алгебраических соотношений, в том числе и в виде неявных функций. После определения модели язык позволяет ставить задачи типа "найти значения каких-либо переменных при условии, что значения некоторых других фиксированы".
Современный подход к имитации окладывался постепенно: сначала имитационные модели рассматривались как альтернатива оптимизационным моделям - и это не случайно, потому что первые системы, ориентированные на решение задач математического программирования, возникли с появлением трансляторов с универсальных языков программирования фОРЗРАН, АЛГОЛ и создавались в виде
- II библиотек стандартных алгоритмов. Явным недостатком такой организации программ и данных является то, что библиотечные алгоритмы требуют для своей работы данные фиксированной структуры, поэтому для реализации какого-либо ИЭ с моделью необходимо в одной программе описать модель с использованием библиотечных алгоритмов, определив требуемые данные в требуемом виде, а затем далее описать сам ИЭ, Кроме того, сложность оптимизационных моделей (прежде всего вычислительная сложность поиска оптимального решения) смещает акценты работы с такими моделями.
Зависимость разработчика от необходимости знать структуры данных, которые требуются для работы стандартных алгоритмов, частично снимается пакетами прикладных программ. При такой организации программ и данных пользователю предоставляется специализированный язык общения с пакетом и система сама организует последовательность вызова системных подпрограмм, которые обмениваются друг с другом данными также фиксированного формата.
Типичным представителем таких систем является ІШП ҐІ ]. Ограниченностью такого подхода является то, что разработчик вынужден писать программы, реализующие ИЭ, на входном языке паке -та и, если он оказывается неудовлетворительным для решения каких-либо задач ИЭ, то возникает необходимость расширения языка пакета новыми возможностями - эта задача не всегда имеет прием-лимые решения.
Среди систем, ориентированных на решение задач математического программирования, наиболее развитыми являются системы линейного программирования Г 1,2,7,451, во-первых, вследствие простоты определения математических соотношений линейных моделей, во-вторых, из-за наличия эффективных методов решения ли - 12 нейных задач большой размерности.
Большинство систем ташго типа, например [I, ZJ , ориентировано на какую-либо стандартную форму записи задачи линейного программирования и тогда объектами входного языка системы так или иначе являются массивы правых частей, двусторонних ограничений на переменные, типов ограничений и типов переменных, матри -цы ограничений и так далее. Модель формируется в терминах опре -деления значений этих массивов.
В системе МАГШР, реализованной в ВЦ АН СССР, применяется явный способ определения модели в виде обычных математических соотношений. Пользователь должен определить две процедуры: вычисления невязок и градиента, выполнить некоторые системные соглашения, и тогда система сгенерирует текст программы на АЛДЗЛе [15 ] , которая будет реализовывать описанный вариант модели и ИЗ. Так как параметрам и переменным модели ставятся в соответствие переменные АЛІШ-про граммы, то при такой организации обработку первичной информации можно вести средствами АЛГОЛа.
С возникновением и развитием машин третьего поколения по -явились новые технические возможности для организации ИЭ с оптимизационными моделями. От пакетной обработки к диалоговым системам - вот современное направление развития систем, ориентированных на решение задач математического программирования. Одними из первых систем такого типа были интерактивная система линейного программирования [45 1 и система диалогового планирования ДИСШІАН [7] . Что касается диалоговых систем для решения задач нелинейного программирования (НЛП), то в [171 , оценивая перспективы развития таких систем для решения задач большой размер - ІЗ носій (типичная ситуация для имитации), высказывается лишь предположение, что количество таких систем в ближайшие несколько лет возрастет, при этом подчеркивается необходимость проведения Экспериментальных работ в этом направлении. В [23]также отмечается необходимость тщательной проработки самого диалога, то есть тех средств, которые даются пользователю для оператив -ной работы.
Интерактивные системы НЛП находятся в настоящее время в стадии становления, однако уже разработаны ряд систем этого типа, например, ДИСО Г 25 ] , НЕДОПТ [20J - интерактивная система, использующая систему НЕДИС [Зі] ДЛЯ описания имитационных моделей и их вариантов.
Приведенные интерактивные системы - новый шаг на пути к созданию средств, обеспечивающих ИЗ с оптимизационными моделями. Системы [20], [25] позволяют в диалоге менять те или иные параметры модели, более того, в ДИСО [25J разработаны специальные операторы, позволяющие управлять поиском оптимального решения, меняя методы оптимизаций в процессе диалогового счета.
При анализе ранних ЯМ подчеркивалось, что такие языки не обладают модифицирующими действиями, - аналогичная ситуация с интерактивными системами НЛП. Развитые ЛП-системы позволяют фиксировать значения некоторых переменных или исключать некоторые соотношения.
В заключение краткого анализа ЯМ остановимся на ряде вопросов, имеющих непосредственное отношение к процессу проектирования и реализации новых ЯМ.
Во-первых, в рассмотренных ЯМ математическая модель формируется таким образом, что множество математических, соотношений модели остается неизменным на протяжении программы. Даже в ЛП - 14 - системах, позволяющих фиксировать переменные или отменять ограничения определенной задачи, при необходимости добавить новую группу математических соотношений в задачу нужно изменять таксі программы. Так как модифицирующие действия нередко используются в ходе ИЭ, то необходимость формирования новой программы для нового ИЭ существенно замедляет процесс имитации в целом, а в некоторых ситуациях становится проблематичной диалоговая организация ИЭ в таком режиме.
Во-вторых, пакеты прикладных программ со своими входными языками являются замкнутыми (автономными) системами по отношению к универсальным языкам программирования, а так как пара -метры модели обычно формируются при помощи таких языков, то, если язык пакета не обладает возможностями алгоритмической обработки, возникает необходимость в разработке специализированных интерфейсов между языком пакета и универсальным языком программирования. Учитывая сложность таких интерфейсов, разработчики пакетов стремятся внести возможности универсальных языков в язык пакета - такой путь, в свою очередь, осложняет реализацию языка пакета.
В-третьих, все описанные выше ЯМ, ориентированы на файловую организацию данных и программ, когда свойства языка реализованы в виде подпрограмм, обменивающихся друг с другом данными фиксированного формата. При этом подпрограммы в своих телах содержат описания форматов данных, с которыми они работают.
В такой ситуации, когда программы зависят от данных, разработка новых свойств языка сильно затруднена, так как для новых приложений необходимо разработать новые форматы данных, учитывающие старые, а это неизбежно ведет к изменению уже разработанных и реализованных программ.
В-четвертых, все описанные выше ЯМ, ориентированы на однозадачный режим работы, в то время как ИС призвана обслуживать разные категории пользователей [12J , работающих одновременно из разных задач над единым банком данных.
Из анализа приведенных трудностей, связанных с проектированием систем обработки данных, за последние полтора десятилетия возникла система взглядов, оформившаяся в научную дисциплину "информатика", которая изучает проблемы организации хранения и обработки информации.
Особое место в этих вопросах занимает проблематика баз данных [9J, [19], Г 39] . Характеризуя отличия систем, поддерживающих :базы данных и файлы в [19] подчеркивается, что преимущества баз данных проявляются прежде всего в неизбыточности, независимости, взаимосвязанности данных, их защите и возможности одно -временного доступа из разных задач.
Указанные свойства систем баз данных позволяют проектиро -вать ИС на новой архитектурной основе. Рассмотрим преимущества такой организации ИС. Каждая подсистема ИС функционирует по своей подсхеме, выделенной из общей схемы данных ИС. Концепция схем и подсхем, разработанная в предложениях КОДАСИЛ [39] , наиболее близко отражает многоцелевую направленность ИС на использование данных различными группами пользователей при работе в соответствующих подсистемах ИС. Независимость программ, каждая из которых работает по своей подсхеме, позволяет автономно разрабатывать ИС, кроме того, при внесении новых свойств в систему ранее разработанные программные средства не изменяются.
Средства обеспечения целостности данных позволяют эффективно реализовать модифицирующие действия входного языка ИС.
Идея включающего языка оказала плодотворное воздействие на развитие практических систем баз данных Г27 J . Первоначальные предложения КОДАСШ [39J по реализации языка манипулирования данными (ЯМД) как расширения какого-либо стандартного язы-ка программирования на практике были заменены более простыми и не менее удобными средствами организации прикладной программы, в которую операторы ЯМД включаются текстуально. При такой ор -ганизации прикладная программа обрабатывается в два прохода: сначала она предтранслируется, а затем поступает на вход транслятора включающего языка. Передача данных из Щ в прикладную программу и наоборот осуществляется через рабочую область, которая оформляется в прикладной программе по соответствующей подсхеме с учетом включающего языка, таким образом переменные рабочей области могут обрабатываться средствами включающего языка и, следовательно, обеспечивается алгоритмическая обработка первичных данных.
Все современные системы управления базами данных (СУЩ) наряду с работой из прикладных программ обеспечивают доступ к БД в интерактивном режиме, причем многие из них обеспечивают одновременную работу нескольких задач, ведущих доступ к ВД.
Идентификатор
Другие компоненты, внесенные в ядро ИС [ЗО] : пакет линейного программирования, сервисные программы, обеспечивающие минимальный набор средств, позволяющих описывать модели, запус -кать их на счет и представлять простейшим образом результаты расчетов. Совокупность всех средств, входящих в ядро ИС составляет язык ПРИМ [14 1 .
Язык ПРИМ (ПРоцессная имитация) разработан на основе процессного метода описания имитационных систем [ю] . В статье [II1 описывались основные объекты и действия, в работе [14J -рассматривается его дальнейшее развитие: - удалены вспомогательные объекты цель и ограничение, так как они являются частными случаями процесса; - обобщено понятие массива (2.I.I); - введено понятие вырезки (2.1.4); ч ... - упрощено понятие процесса (2.1.2); -конкретизировано правило формирования тела процесса (1.2.3); - уточнено понятие баланса(2.1.3); - упрощено понятие блока (2.1.4); - обобщено понятие задачи; теперь каждому блоку сопостав ляется несколько задач с разными критериями и, возможно, -разным набором зафиксированных переменных (2.1.5); - изменены действия с объектами (ЕЛ.б); - введены вспомогательные действия для связи с прикладной программой и организации диалога (2.6).
Язык ПРИМ предназначен не только для описания моделей, но и для проведения имитационных экспериментов с ними, поэтому в языке помимо объектов (массивы, процессы, балансы, блоки, задачи) определены действия (заменить, убрать, взять). Они позволяют модифицировать описания существующих в системе объектов, удалять "отработавшие" объекты, либо связывать пере -менные прикладной программы с переменными модели. Под прикладной программой понимается программа, написанная на универсальном языке программирования высокого уровня (например, ПАСКАЛе, gQPTPAHe, АЛГОЛе), в которую вставлены тексты-описания объектов и действий ПРИМа. Такая программа обрабатывается в два прохода: трансляции предшествует предтрансляция. Предтранслируемый режим необходим для организации имитационного эксперимента, так как при составлении модели всегда присутствуют этапы подготовки числовой информации, используемой в модели, и обработки полученного решения - эти задачи естественно решать средствами универсальных языков.
Не менее важны два других режима использования компилятора ПРЙМа: интерактивный и автономный - в первом помимо основных операторов языка, допускается использование ряда вспомогательных операторов, позволяющих вести диалог по "инициативе ЭВМ", а второй удобен когда в прикладной программе присутствуют только операторы ПРИМа.
Модифицирующие действия в ПРИМе носят глобальный характер: если модифицируется описание объекта А, то во всяком объекте В, в описании которого используется объект А, изменения в описании осуществляются автоматически, йсли считать, что описания объектов языка порождают те или иные типы данных, то с этой точки зрения модифицирующие действия эквивалентны динамическому (в процессе выполнения программы) изменению определенных типов.
Рассмотрим описание объектов и действий языка. Массивы ПРЙМа предназначены для определения типа индекса переменных процесса (2.1.2). Каждому массиву, объекту языка, приписываются характеристики (атрибуты): имя массива, упорядоченное множество элементов (оно характеризуется количеством эле-ментов), ранк массива. Дадим рекурсивное определение массива.
Идентификатор - это массив с нулевым ранком и единичным количеством элементов. Множество элементов идентификатора совпадает с ним самим.
Определение синтаксиса и семантики основных операторов
Имя - последовательность оукв, цифр и знака минус, начинающаяся с буквы. Первые шесть символов имени являются значащими, а остальные игнорируются. Другими словами, имя - это шести-символьный идентификатор. Все значения в ПРИМе - действительные числа, которые определяются как число: : [-] целое-без-знака [. целое-без-знака J ,где целое-без-знака - последовательность цифр. Последовательность чисел разделяется пробелом: числа: : в {число ]
Сначала определим операторы, которые можно использовать в любом режиме. В разделе (2.7) определяются дополнительные one-раторы, зависящие от режима.
В приложении I. приводится таблица номеров ошибочных ситуаций и их краткое описание. Всякий раз, когда возникает ошибочная ситуация, дальнейшее описание оператора игнорируется. Кроме ошибочных ситуаций могут возникать предупреждающие ситуации - их отличие от ошибочных в том, что анализ оператора продолжается и после возникновения такой ситуации, при этом компилятор выполняет по умолчанию некоторые действия. В приложении 2 приводится таблица предупреждающих ситуаций и их краткое описание, В программе операторы отделяются друг от друга точкой с запятой.
Оператор определяет новый объект языка массив, процесс, баланс, блок, задача. При этом предполагается, что в системе нет объектов с именами имя-1, имя-2, имя-3, имя-4, имя-5.
Описание массива о писание-массива: : = ("СПИСОК имя-1 ] имя-2 МАССИВ имя-3 модификация - списка Согласно определениям (2.I.I) должны выполняться следующие правила: 1. Если присутствует слово СПИСОК, то имя-1 обязательно должно быть именем существующего в системе списка. 2. Если слово СПИСОК отсутствует, то полагается, что определяемый массив (2.5.1) - список, тогда все массивы имя -2,... должны быть идентификаторами, а массивы имя-3 - списками." 3. имя -2 -имя подмассива, существующего в системе, иначе полагается, что имя-2 определяет новый идентификатор. Все последующие подмассивы должны иметь один и тот же ранк. 4. Если слово СПИСОК присутствовало, то известно количество подмассивов определяемого массива (2.1.1.2). Когда подмас-сивов определено больше, чем требуется, то выдается предупреждающее сообщение.
Если подмассивов определено меньше, чем требуется, то последним элементам списка массива ставится в соответствие последний определенный подмассив.
Описание вырезок. данное понятие позволяет определять поименованные подмножества элементов (2.1.1.4) определяемого массива (2.5.1). Описание-вырезок: :« ВЫРЕЗКА (имя [описание-вырезки J \ ,...
Вырезки разных массивов могут иметь одинаковые имена, но вырезки одного массива обязаны иметь разные имена. Кроме того, для любого массива ненулевого ранка предопределяется одноименная с ним вырезка (2.1.1.4) с атрибутами начало и длина равны і .. ми единице и количеству элементов массива.
Синтаксис языка определен таким образом, что из контекста всегда известно для какого массива определяется вырезка, поэтому для последовательности имен, разделенных точками, должны выполняться требования, приведенные в определении (2.1.1.4). Описание-вырезки: := (имя). ...
Оператор запуска последовательности ДУБНА - приказов
В работе проводится анализ инструментальных средств сетевых СУДД, построенных на основе предложений КОДАШЛ, для представления структур данных компиляторов проблемно-ориентированных языков программирования, а также организация пред -транслируемого и интерактивного режимов использования компилятора такого языка.
Для достижения этих целей В СУБД КОМПАС разработаны язык модуля терминального доступа и аппарат процедур баз данных, позволяющие реализовать компилятор проблемно-ориентированного языка, допускающего использование в трех режимах: автономном, диалоговом, интерактивном. Язык модуля терминального доступа СУВД КОМПАС Г38 J Языки манипулирования данными современных СУБД обычно проектируются таким образом, что имеется некоторое подмножество ЯМД, которое можно использовать как в прикладных программах на включающихя языках, так и при диалоговой работе [40, 41] .
Модуль терминального доступа (МВД) - стандартная компонен-та СУВД КОМПАС [36 - 38] . Язык модуля терминального доступа (ЯМВД) дополняет язык манипулирования.данными (ЯМД); к опера-торам ЯМД добавлена группа операторов ввода-вывода, управления процессом вычислений и оператор исполнения последовательности приказов мониторной системы "Дубна" [18 1 . Указанные возможности позволяют рассматривать ЯМВД как самостоятельный язык про -граммирования. Наиболее эффективно ЯМВД может использоваться для: - оперативного доступа к базе данных с целью выборки или модификации данных; - определения стандартных запросов к базе данных и их исполнения; - создания пакетов прикладных программ (ППП) с диалоговым входным языком.
Первое назначение обеспечивается средствами ЯМД, встроенного в ШЭД, совместно с операторами ввода-вывода. Второе -возможностью запоминать поименованные тексты запросов на ЯМЭД, а лотом исполнять их, вызывая по имени нужную группу приказов. Третье назначение обеспечивается оператором исполнения последовательности приказов мониторной системы "Дубна" и операторами управления процессом вычислений совместно с аппаратом процедур баз данных. В этом случае ЯМЭД используется для построение диалогового входного языка ППП. Сами же прикладные программы выполняются либо автоматически при некоторых операциях с записями или наборами в определяемом схемой порядке, что поддерживается аппаратом процедур баз данных, либо запускаются оператором исполнения последовательности приказов мониторной системы "Дубна".
Перед работой на ШЭД необходимо сгенерировать МЭД, то есть настроить МЭД на работу с базой данных пользователя по заданной им подсхеме. Для этого достаточно предтранслировать стандартную текст-заготовку, поставляемую в дистрибутивной версии СУБД КОМПАС, по указанной пользователем подсхеме. Поставив оттранслированный МЭД в личную библиотеку, затем можно работать на ЯМТД с конкретной базой данных. для работы на ШВД нужно сформировать задачу, содержащую в паспорте раздел ТЕЛЕ, а в пакете для мониторной системе "Дубна" карты, указывающие на расположение библиотек ПАСКАЛя [28] и КОМПАСа, МВД, настроенного на работу по определенной при генерации подсхеме и карт вызова предтранслятора в режиме МВД: После вызова задачи система выдает сообщение: s s в ПРЕДТ = s s МВД = "имя подсхемы", где "имя подсхемы" - то имя, которое было указано пользователем при генерации МВД. Затем выдаётся приглашение, сигнализирующее о готовности воспринимать операторы ЯМВД. Выход из МВД осуществляется по приказу КОНЕЦ.
Ввод с терминала операторов ЯМВД реализован с использованием процедуры ПАСКАЛя РА вГЛ/D , которая имеет ряд особенностей, описанных в [28] . После появления приглашения можно набирать группу операторов ШВД, разделённых точкой с запятой. Операторы будут интерпретироваться в последовательном порядке с учетом операторов управления процессом вычислений, которые могут изме нять обычный порядок.
Соответствие между описанием языка и схемой ДЦ
Реализация операторов ЯЩ в ЯМВД.
Пред транслятор - одна из компонент СУ.ВД КОМПАС. В нём выделен блок генерации параметров обращения к оператору процедуры связи резидентного модуля от блока генерации текста обращения. В МВД аналогичный блок заменён обращением к оператору процедуры связи с параметрами, полученными от основных блоков предтрансля-тора. Кроме того, в МВД здесь же вставляется обращение к оператору процедуры ввода с терминала, а не из входного потока. Затем введенный текст транслируется основными блоками предтранслятора, после чего происходит обращение к блоку выполнения ЯМД - операторов .
Реализация операторов ввода-вывода. Существенной особенностью СУВД КОМПАС является то, что объектная схема представляется средствами стандартной сетевой базы данных [35 ] , к которой можно обращаться стандартными операторами ЯМД. Для того, чтобы присвоить значение заданному элементу некоторой записи, достаточно, работая по схеме схем: - найти в базе данных объектного представления подсхемы заданную запись, - найти в базе данных объектного представления подсхемы заданный элемент, - проверить совпадение типа операнда с типом элемента, - используя табличную подсхему, настроиться на адрес элемента в памяти, - через указательные переменные[28] присвоить значение найденному элементу.
Для реализации оператора вывода записи и её элементов в предтрансляторе определяется вспомогательный оператор, который также использует представление объектной схемы в виде стандартной Щ и формирует текст выдачи элементов записи или всех элементов записи на АЦПУ и/или терминал.
Для реализации операторов управления процессом вычислений и оператора запуска последовательности приказов мониторной системы- "Дубна" используется стековый механизм. "Верхушка" стена-запись типа буфер (рис. 4), состоящая из элементов: - упакованного массива символов, в котором содержится текст приказов, - счётчика уже "отработанных" символов, - логической переменной, указывающей на наличие или отсутствие оператора ЗАПУСК.
Процедура считывания символа в режиме МИД берёт очередной символ не из входного потока, а из "верхушки" стека. Оператор ВЫПОЛНИТЬ сначала "обнуляет" текущую верхушку, а затем передаёт управление блоку анализа, то есть информация в старой "верхушке" теряется, однако стек будет обрабатываться до тех пор, пока в нём есть записи. Оператор ИСПОЛНИТЬ заводит новую "верхуш ку", предварительно упрятав старую в стек, а затем передает управление блоку анализа, - следовательно, инфэрмация после one ратора ИСПОЛНИТЬ будет сохранена и обработана. Аналогично работает оператор НА. Оператор ЗАПУСК упрятывает текущую "верхушку" и выходит на конец МВД. После окончания исполнения "Дубна" -приказов вновь вызывается М2Д и перед блоком анализа осуществляется проверка был или не был приказ ЗАПУСК. Если приказа не было, то стек полностью обновляется, а если он был, то восстанавливается "верхушка" стека и управление передаётся блоку анализа.
В соответствии с предложениями КОДАСИЛ [39 J в схеме можно указать процедуры, которые СУДД должна выполнять до, после той или иной операции языка манипулирования данными или при возникновении исключительного состояния. Однако КОДАСИЛ не конкретизирует правила написания процедур баз данных [39] . Аналогично в [27 J приводятся примеры использования редко реализуемых в СУВД средств, основанных на процедурах ВД, но также не уточняются правила написания таких процедур Анализируя предложения КОДАСИЛ по процедурам Щ [27, 39 j , можно сделать вывод, что им не хватает единого подхода к роли и значению процедур Щ в языке манипулирования данными. В [27] лишь отмечается, что процедуры Щ позволяют доопределять семантику ЯМД-олераторов, однако можно пойти еще дальше: ставить задачу проектирования аппарата процедур Щ как механизма расширения операторов стандартного ЯМД (3.2.2).