Текст
                    С.Б.ВЕКШИН
ДИАЛОГ
И ПРОБЛЕМНОЕ
МАКРОПРОГРАММИРОВАНИЕ
В ДИСКОВОЙ ОПЕРАЦИОННОЙ
СИСТЕМЕ ЕС ЭВМ
ИЗДАТЕЛЬСТВО «НАУКА»


АКАДЕМИЯ НАУК СССР ИНСТИТУТ ВЫСШЕЙ НЕРВНОЙ ДЕЯТЕЛЬНОСТИ И НЕЙРОФИЗИОЛОГИИ НАУЧНЫЙ СОВЕТ НО КОМПЛЕКСНОЙ ПРОБЛЕМЕ «КИБЕРНЕТИКА» С. Б. ВЕКШИН ДИАЛОГ И ПРОБЛЕМНОЕ МАКРОПРОГРАММИРОВАНИЕ В ДИСКОВОЙ ОПЕРАЦИОННОЙ СИСТЕМЕ ЕС ЭВМ ИЗДАТЕЛЬСТВО «НАУКА» МОСКВА 1981
Я/ДК 681.3.061 С. Б. В е к ш и н. Диалог и проблемное макропрограмми¬ рование в дисковой операционной системе ЕС ЭВМ. М.: На¬ ука, 1981. В книге описана дисковая операционная система, обеспе¬ чивающая обмен информацией с программистом при состав¬ лении и отладке заданий, дающая возможность эксплуа¬ тировать вычислительный комплекс с минимальным набо¬ ром внешних устройств ввода—вывода при дефиците опера¬ тивной памяти в мультипрограммном режиме с произволь¬ ным изменением приоритетов разделов. Система позволяет активно пользоваться библиотеками исходных и объектных модулей, обрабатывать информацию посредством встроен¬ ного макрогенератора и выполнять сервисные функции. Предназначена для научных и инженерно-технических ра¬ ботников. Табл. 12, ил. 16, библ. 35. Ответственный редактор доктор биологических наук И. А. ШЕВЕЛЕВ 30502—207 ^ 055(02)—81 708—81, кн. 2 1502000000 © Издательство «Наука», 19S1 г.
ПРЕДИСЛОВИЕ В настоящее время научно-техническая революция ставит задачи, при решении которых возникает необходимость практи¬ чески мгновенного обмена информацией между человеком и ма¬ шиной. Поэтому в настоящее время большое внимание уделяется соз¬ данию мультипрограммных диалоговых операционных систем для самых распространенных сейчас ЭВМ третьего поколения — ЕС ЭВМ [34, 35]. Такие системы должны упрощать и ускорять отладку и модификацию научно-экспериментальных проблемных программ, а также программ автоматизации производственных процессов, должны допускать применение при их создании новых прогрессивных методик и максимально учитывать особенности творческой деятельности программиста-разработчика при об¬ щении с вычислительной машиной. Настоящая книга в основном посвящена описанию созданной и внедренной автором в Инсти¬ туте высшей нервной деятельности и нейрофизиологии АН СССР диалоговой системы PALLADA, облегчающей эксплуатацию и значительно расширяющей возможности дисковой операцион¬ ной системы ЕС ЭВМ (ДОС ЕС), ибо стандартная система ДОС ЕС в силу некоторых своих ограничений оказалась весьма неудоб¬ ной для организации оперативного внешнего управления вычи¬ слительным процессом в ходе выполнения программ и особенно при отладке больших и сложных заданий, спецификой которых является обеспечение двухстороннего обмена информацией с экспериментальным живым объектом: ее прием, анализ в реаль¬ ном масштабе времени и управление этим объектом согласно ре¬ зультата?.! анализа. Хотя диалоговая система замышлялась первоначально для решения лишь подобных проблем, она в процессе многочис¬ ленных доработок приобрела универсальный характер и впол¬ не применима на любом вычислительном центре, занимающемся разработкой и модификацией математического обеспечения. Основным достоинством разработанной системы является воз¬ можность эксплуатации ЭВМ с минимальным или ограниченным набором внешних периферийных устройств при дефиците опера¬ тивной памяти в режиме мультипрограммирования с произволь¬ ным переключением приоритетов разделов. Формирование прог¬ раммного задания в режиме диалога человек—машина, простота работы с библиотеками ЭВМ на устройствах прямого доступа, наличие мощного системного макрогенератора позволяют поль¬ зователям при разработке программных комплексов или систем широко применять прогрессивный принцип модульного программи¬ рования, а также проблемно-ориентированного макроязыка. 3
Материал в книге расположен таким образом, что она может служить одновременно и учебным и справочным пособием не толь¬ ко по использованию собственно диалоговой системы, но и но эксплуатации ДОС ЕС в научно-исследовательском вычислитель¬ ном центре. Подробное изложение оригинального материала совместно с описанием необходимых положений ДОС ЕС, разбор нетривиаль¬ ных методов программирования и новых, разработанных автором, системных макрокоманд на большом количестве примеров позво: ляет надеяться, что книга будет полезна не только квалифициро¬ ванным, но и начинающим пользователям. Автор считает своим долгом выразить глубокую признатель¬ ность и благодарность Н. И. Векшиной, докт. биол. наук И. А. Шевелеву, канд. физ.-мат. наук А. А. Фролову, канд. техн. наук А. Я. Дудину, прочитавшим рукопись и сделавшим ценные замечания по улучшению методики изложения материала, а также сотрудникам отделов математического обеспечения НИИЭВМ, оказавшим неоценимую консультативную помощь при разработ¬ ке диалоговой системы. Все критические замечания и предложения, которые сочтут нужным сделать читатели книги, автор примет с благодарностью. С. Векшин
Глава I ВВЕДЕНИЕ В ДИСКОВУЮ ОПЕРАЦИОННУЮ СИСТЕМУ ЕС ЭВМ § 1.1. ЭВМ и операционная система. Наиболее гибкой структу¬ рой и универсальными возможностями на сегодняшний день об¬ ладают ЭВМ третьего поколения — ЭВМ, элементную базу ко¬ торых составляют интегральные микросхемы. Автоматизирован¬ ные технологические линии, координация и управление про¬ изводством как в пределах одного предприятия, так и отрасли в целом, перспективное планирование развития народного хо¬ зяйства, робототехника, автоматические системы исследования экспериментных объектов и, в частности, анализ и моделирование биологических систем и процессов, диагностика заболеваний - вот далеко неполный перечень областей применения этих ЭВМ. Независимо от того, каким образом осуществляется програм¬ мирование конкретной проблемной задачи, в программе должны быть предусмотрены операции, не связанные непосредственно с алгоритмом, но без наличия которых ЭВМ не сможет исполнить данную программу. К этим операциям относятся операции вво¬ да-вывода, т. е. операции передачи информации между внешними устройствами и центральным процессором (представляющим со¬ вокупность электрических схем исполнения машинных команд и схем управления, связывающих многочисленные модули и блоки машины в единое целое), обработка сбойных ситуаций, даже если возникновение их маловероятно, загрузка отдельных участков исполняющейся программы с внешнего носителя в опе¬ ративную память и т. д. Максимальная эффективность исполь¬ зования машинного времени не может быть достигнута без авто¬ матического управления процессом выполнения программ. По¬ этому каждая современная ЭВМ всегда имеет операционную си¬ стему. Операционная система — это набор системных программ, которые организуют непрерывную работу ЭВМ от программы к программе в рамках одного задания, автоматический переход от одного задания к другому при обработке их пакета с минималь¬ ным участием человека, обеспечивают управление процессом обмена информацией с внешними устройствами, поддерживают диалог с оператором или пользователем и выполняют самые различные сервисные функции, начиная от автоматического со¬ ставления программы в машинных кодах по тексту на входном языке и подготовки ее к исполнению (т. е. процедур компиля-
ции и редактирования) и кончая обслуживанием библиотек ЭВМ на магнитных носителях информации. Конкретное внешнее устройство, на котором хранится опера¬ ционная система, называется резидентным. На ЭВМ Единой системы среднего класса (таких, как ЕС-1020, ЕС-1022, ЕС-1030) наиболее эффективна в эксплуатации дисковая операционная система — ДОС ЕС. § 1.2. Управляющая программа ДОС ЕС. Основой операционной системы является Управляющая программа. В ДОС она состоит из четырех компонентов: программы первоначальной загрузки системы; супервизора, состоящего из ядра, постоянно присут¬ ствующего при работе системы в оперативной памяти ЭВМ, и тран¬ зитных программ, вызываемых с резидентного диска по мере необ¬ ходимости в специальную транзитную область оперативной па¬ мяти; программы Управления заданиями; программы Внимание, осуществляющей связь с оператором. Разделение Управляющей программы на корневую, вызываю¬ щую программу (ядро супервизора) и транзитные подпрограммы, хранящиеся на магнитных дисках, позволяет уменьшить до ми¬ нимума необходимый операционной системе объем оперативной памяти ЭВМ. Это дает возможность увеличить длину и соответ¬ ственно сложность программ пользователей, выполняемых под управлением ДОС. Операционная система ДОС может одновременно управлять выполнением трех независимых различных программ, т. е. под¬ держивает режим разделения времени или режим мультипрограм¬ мирования. Каждая из этих программ находится в своей обла¬ сти оперативной памяти, называемой разделом. Каждый из разделов обладает различным приоритетом вы¬ полнения операций и конкурирует с другими разделами за ис¬ пользование центрального процессора. Следует подчеркнуть, что на ЕС ЭВМ вычислительные и ло¬ гические операции, выполняемые центральным процессором си¬ стемы, могут быть совмещены во времени с операциями ввода— вывода, т. е. операциями передачи информации между централь¬ ным процессором и внешними устройствами, подключенными к его мультиплексному или селекторным каналам. Канал сам по себе представляет как бы малую вычислительную машину. Подобно центральному процессору, он выполняет про¬ грамму команд, хранящуюся в оперативной памяти. Эта программа описывает, с каким устройством и каким образом должен быть осуществлен обмен информацией. Если в разделе, обладающем более высоким приоритетом, в данный момент времени выполняется операция ввода—вывода, то центральный процессор в это время освобождается для работы с другим разделом,обладающим более низким приоритетом [1—3,10]. Следовательно, для увеличения эффективности системы в ре¬ жиме мультипрограммирования в разделах высокого приоритета должны исполняться программы, совершающие большое ко¬ 6
личество операций по обмену информацией с внешними устрой¬ ствами либо работающие с медленными устройствами типа гра¬ фопостроителя, пишущей машинки и дисплея [10]. Программы, работающие в режиме диалога с оператором или пользователем, также должны выполняться в разделе с более высоким приори¬ тетом, так как для них характерно состояние ожидания опреде¬ ленной реакции человека. Наиболее яркими примерами таких программ являются системы автоматизированного проектиро¬ вания, обучающие и диалоговые системы, системы для управляе¬ мого физиологического эксперимента, в котором ЭВМ анализиру¬ ет параметры состояния живого объекта и производит направлен¬ ное изменение этого состояния. Это программы, при выполнении которых ЭВМ активно включается в процесс творческой деятель¬ ности человека. В ДОС ЕС разделы маркируются BG, F2, F1. При стандартной эксплуатации системы самым высоким приоритетом обладают программы, выполняющиеся в разделе F1, а самым низким — в BG. § 1.3. Логические устройства ДОС ЕС. Устройства, преобра¬ зующие информацию со стандартного кода DKOI ЕС ЭВМ (При¬ ложение G) в код какого-нибудь внешнего носителя информации и наоборот и управляющие собственно процессом записи или считывания данных, называются устройствами ввода—вывода, или внешними устройствами. Работой каждого внешнего устрой¬ ства управляет контроллер, подключенный к одному из каналов ЭВМ (§ 1.2). Для того чтобы начать операцию ввода—вывода, центральный процессор должен знать тип устройства, номер ка¬ нала, к которому оно подсоединено, и номер этого устройства в канале, т. е. его коммутацию — способ подключения к ЭВМ. Тип реального устройства полностью определен его шифром, а коммутация — физическим адресом [12, 16]. В Приложении А приведены шифры большинства устройств ввода—вывода, с которыми может работать ДОС ЕС. Стандартная операционная система ДОС ЕС обеспечивает независимость программ пользователей от конкретных физических адресов внешних устройств. Эти программы оперируют с так называемыми логическими устройствами, т. е. с некоторыми аб¬ страктными образами реальных физических устройств, существую¬ щих в супервизоре операционной системы. Обращение к ним осу¬ ществляется при помощи стандартных символических имен. Используя специальные операторы и директивы, перед выполне¬ нием программы пользователь обязательно должен установить соответствие между именами логических устройств и истинными физическими адресами реальных устройств (§ 3.7). Эта иро- цедура называется назначением конкретных физических устройств логическим [3]. Назначение может быть стандартным, т. е. заданным при ге¬ нерации супервизора ДОС, постоянным, сохраняющимся на не¬ сколько заданий до обработки управляющей программой ДОС ЕС 7
специального оператора отмены или переадресации назначения, и временным, сохраняющимся в течение одного задания и отме¬ няющимся по оператору конца задания /&. Имена логических устройств, допустимые типы физических устройств и правила назначения приведены в Приложении В. § 1.4. Библиотеки ДОС ЕС. Операционная система, а также все часто используемые системные и проблемные программы и их составные части — блоки и подпрограммы — хранятся на магнитных носителях информации, которые являются библио¬ текой машины. В ДОС ЕС эта библиотека состоит в общем случае из системной библиотеки и личных библиотек пользователей. Системная библиотека находится на резидентном пакете маг¬ нитных дисков и состоит из трех частей: библиотеки абсолютных модулей CL, библиотеки объектных модулей RL и библиотеки исходных модулей SL. Каждая из этих библиотек может быть значительно увеличена в объеме за счет создания одноименных личных библиотек на других пакетах магнитных дисков. В библиотеках абсолютных модулей хранятся готовые к вы¬ полнению программы пользователей и системные программы, составляющие операционную систему ДОС ЕС. К системным программам относятся Управляющая программа; трансляторы с языков АССЕМБЛЕР ДОС, ФОРТРАН, ПЛ/1, КОБОЛ, РПГ, АЛГАМС; сервисные программы: Библиотекарь, Редактор связей, программы перезаписи массивов данных с од¬ ного носителя информации на другой и программы для инициа¬ лизации (форматирования) этих носителей в случае магнитных дисков и лент. Элементом библиотеки CL является программная фаза — результат работы Редактора связей. Собственно программа может состоять как из одной, так и из нескольких фаз. Редактор связей всегда заносит проблемную программу пользователя перед исполнением в библиотеку CL на временное или постоянное хранение. В библиотеке PiL хранятся перемещаемые модули — резуль¬ тат работы трансляторов с различных языков программирования. Эти модули могут быть как завершенной программой, так и ее независимыми частями, из которых Редактор связей скомпонует готовую программу и поместит ее в библиотеку CL [4]. В библио¬ теке RL обычно в форме перемещаемых модулей содержатся стан¬ дартные подпрограммы ввода—вывода, обработки ошибок, а также подпрограммы, реализующие различные часто применяе¬ мые математические и логические методы и приемы. В библиотеке SL содержатся наборы данных — книги, пред¬ ставляющие собой части отлаживаемых программ на входных языках программирования, макроопределения — стандартные под¬ программы на входных языках, часто используемые пакеты зада¬ ний операционной системы и т. п. Каждая запись книги называ¬ ется предложением. 8
Перемещаемые модули и книги каталогизируются соответствен¬ но в библиотеки RL и SL системной программой Библиотекарь. Программа Библиотекарь, кроме того, выполняет функции ко¬ пирования, корректировки и слежения за состоянием всех библио- тек ДОС [1, 5, 17]. § 1,5. Предпосылки создания диалоговой системы PALLADA. Как бы совершенна ни была операционная система ДОС ЕС, с течением времени она перестает удовлетворять требованиям развивающегося научно-исследовательского вычислительного цен¬ тра. Ограничения, накладываемые ею на выполняемые задания, все чаще приводят не только к неэффективному использованию ЭВМ, но и к необходимости включения в исследовательские проб¬ лемные программы чисто системных блоков и даже к модерниза¬ ции стандартной Управляющей программы. Например, отсутствие в ДОС возможности, позволяющей проблемной программе вводить и выводить данные по каналу прямого управления, особенно часто используемому при эксплуа¬ тации ЕС ЭВМ как базовой ЭВМ для автоматизированного управ¬ ляемого физиологического эксперимента, привело к необходимости модификации стандартного супервизора ДОС. Была введена но¬ вая команда обращения к супервизору (SVC 240), сделавшая возможным использование в проблемной программе привилеги¬ рованных команд, к которым, в частности, относятся команды обмена информацией по каналу прямого управления [6—9]. Используемый в ДОС ЕС метод абсолютной (простой) загрузки приводит, особенно при мультипрограммной работе, с одной сто¬ роны, к непроизводительному заполнению библиотек абсолютных модулей копиями одинаковых программ, начинающихся с раз¬ личных адресов, для исполнения в разных разделах оперативной памяти, и, с другой стороны, к невозможности гибко перераспре¬ делять оперативную память между разделами. В Институте кос¬ мических исследований АН СССР был разработан и внедрен метод перемещаемой загрузки программных фаз, что также потребовало существенной модификации стандартного супервизора ДОС и написания новой версии Редактора связей [33]. Задачи статистического анализа и моделирования биологи¬ ческих систем, проведение физиологических экспериментов, уп¬ равляемых ЭВМ, предполагают создание сложных и длинных программ. Каждый из их блоков может насчитывать до 300—400 операто¬ ров. Поэтому отлаживать и корректировать такие задачи тради¬ ционным способом весьма неэффективно из-за больших потерь машинного времени на ввод колоды перфокарт с программой. Кроме того, при многократном использовании такой колоды, оператор должен проявить максимум усердия, чтобы ввести в ЭВМ замятые перфокарты. Желательно было бы хранить тексты отдельных отлаживаемых блоков таких программ в личных библиотеках исходных модулей в виде книг, а также компоновать задание из этих книг и данных, 9
вводимых одновременно с перфокарт или перфоленты. Такое задание должно быть сформировано автоматически, без участия оператора и многократной перезаписи отдельных его частей на стандартные носители информации и включать в себя как управ¬ ляющие операторы или директивы Управляющей программы ДОС ЕС, так и исходный текст программы и набор исходных дан¬ ных для ее исполнения. Наконец, нужно исполнить это сформи¬ рованное задание опять же без дополнительных действий опера¬ тора. Неплохо было бы иметь возможность заносить на хранение перемещаемые модули, полученные после трансляции отдельных подпрограмм (написанных на языках ДОС ЕС), сразу в личную или системную библиотеку RL в пределах одного задания после трансляции. Операционная система ДОС ЕС такими возможностями не обладает. При разработке алгоритма управляемого с помощью ЭВМ эк¬ сперимента все его варианты предусмотреть в принципе невоз¬ можно, поэтому невозможно и написание универсальной про¬ граммы многократного пользования, модифицируемой только вводом новых ключевых данных [29, 30]. При изменении условий эксперимента, естественно, программу опыта приходится коррек¬ тировать, изменяя лишь незначительные части текста. Эту работу ЭВМ вполне могла бы проделать полуавтоматически под руководством программиста, если бы операционная система по¬ зволяла модифицировать исходный текст программы, написанной на любом языке ДОС ЕС, или набор данных в соответствии со значениями специальных текстовых переменных. Стандартная система ДОС может обрабатывать таким образом только макро¬ определения АССЕМБЛЕРА [И, 17]. Режим мультипрограммирования — эффективный и удобный режим для проведения автоматизированных научных экспери¬ ментов, для отладки программ с помощью терминалов непосред¬ ственной связи человек—машина в режиме диалога, т. е. для выполнения заданий, связанных с периодами более или менее дли¬ тельного ожидания ввода информации. Такой род заданий обя¬ зательно должен выполняться в разделах ЭВМ, обладающих высо¬ ким приоритетом при одновременном выполнении какой-либо счетной задачи в разделе низшего приоритета. Отладка программ в режиме диалога с привлечением библиотек исходных модулей требует использования функций системной программы Библио¬ текарь в полном объеме также в высокоприоритетном разделе. Только в этом случае обеспечивается и эффективная эксплуатация ЭВМ и предоставляются максимальные удобства пользователям. Камнем преткновения при создании диалогового вычислитель¬ ного комплекса на базе^ЭВМ^с минимальным (или ограниченным) набором периферийных устройств ввода—вывода информации в условиях дефицита оперативной памяти является практическая неосуществимость режима мультипрограммирования при эксплу¬ атации стандартной системы ДОС, невозможность использования 10
более мощных операционных систем (ОС ЕС, ДОС ЕС + про¬ грамма Администратор [31]), неизменяемое назначение приорите¬ тов разделов и жесткое закрепление программы Библиотекарь при выполнении функций корректировки за фоновым разделом BG, обладающим самым низким приоритетом. Все изложенное и побудило автора создать такую диалоговую систему, которая обладала бы всеми указанными способностями и в то же время максимально использовала возможности, предо¬ ставляемые стандартной операционной системой ДОС ЕС, яв¬ ляясь ее органическим продолжением. Такая система создана и введена в эксплуатацию в вычисли¬ тельных центрах Института высшей нервной деятельности и ней¬ рофизиологии АН СССР, ВНИТИ11 (птицеводства), Минмясомол- прома РСФСР, НПО «Скорая помощь» НИИ скорой помощи им. Н. В. Склифосовского.
Глава II ЛОГИ ЧЕС КАЯ СТРУКТУРА ДИАЛОГОВОЙ СИСТЕМЫ § 2.1. Обзор диалоговой системы. Диалоговая система PALLADAпредназначена для управления операционной системой ДОС ЕС. Ее основная функция — подготовка программного задания в виде файла (т. е. набора данных) с последовательной организа¬ цией записи на устройстве прямого доступа. Этот файл называется файлом заданий или файлом SYSOPT [14]. Он формируется из дан¬ ных, поступающих в ЭВМ с перфокарт, перфоленты, из системной и личной библиотеки исходных модулей SL, а также с диалоговых внешних устройств: пультовой пишущей машинки или дисплея. Длина одной записи файла SYSOPT 80 байт. Информация, храня¬ щаяся в библиотеке SL в виде книг, может представлять собой как простые наборы текстовых данных, так и системные макро¬ определения (подобные каталогизированным процедурам в опе¬ рационной системе ОС ЕС [12]), в которых отдельные участки тек¬ ста могут быть многократно изменяемыми. В этом случае данные участки описываются с помощью параметров и опера¬ торов системного макрогенератора. В файл SYSOPT записываются также стандартные директивы ДОС и программы Библиотекарь, автоматически генерируемые при выполнении определенных стандартных функций системы, задаваемых пользователем с помощью специальных операторов. Операторы диалоговой системы по синтаксису и компоновке однотипны со стандартными операторами ДОС. Некоторые из этих стандартных операторов одновременно являются и операторами диалоговой системы (Приложение С). Система PALLADA считает файл заданий сформированным, если во входном потоке данных встречается оператор конца про¬ граммного задания — /&. При этом в файл SYSOPT заносятся концевые записи и он закрывается. Далее этот файл назначается как стандартное устройство ввода заданий системы ДОС ЕС (SY- SIN) и подготовленное программное задание выполняется обычным образом: Управляющая программа последовательно считывает директивы из файла заданий и по ним задает режимы выполнения непосредственно шагов задания. Когда задание выполнено, ЭВМ вновь входит в связь с системой PALLADA. Таким образом осуще¬ ствляется непрерывная обработка заданий, следующих одно за другим в высокоприоритетном разделе выполнения операций 12
ЭВМ, закрепленным за диалоговой системой, а именно фоновым— BG. Это не опечатка. Для максимального использования всех возможностей ДОС в процессе первоначальной загрузки системы PALLADA фоновый раздел BG получает высший или средний при¬ оритет [14]. Описанный основной режим работы называется автоматическим (режим AUTO). Диалоговая система может формировать рабочее задание и для исполнения в разделах переднего плана F1 или F2, записывая его в файл SYSOPT1 или SYSOPT2 соответственно. Это режим MULTY. Если включен режим копирования (режим SCRIB), то система PALLADA файл заданий не формирует и введенная в машину информация может быть выдана на алфавитно-цифровую печать, перфокарты и перфоленту. Особенно режим SCRIB удобен при отладке системных макроопределений. При вводе управляющих операторов, которые содержат ошиб¬ ки или имена отсутствующих в библиотеках SL наборов данных, система PALLADA переходит в диалоговый режим связи с поль¬ зователем для устранения этих ошибок, после чего восстанавли¬ вается нормальный режим работы AUTO или SCRIB. При обнаружении в задании неисправимых ошибок устанавли¬ вается аварийный режим ERRS и его обработка автоматически прекращается. Оставшиеся операторы и данные, принадлежащие этому заданию, пропускаются системой до обнаружения конце¬ вой карты /&. После этого диалоговая система переходит к выпол¬ нению следующего задания. В режиме каталогизации (режим GATALR) диалоговая систе¬ ма самостоятельно формирует на файле SYSOPT заключительную часть задания на каталогизацию в библиотеку RL перемещаемых модулей программ, записанных предварительно в специальном файле SYSLNK резидентного пакета магнитных дисков в процессе компиляции их исходных текстов’со стандартных языков ДОС ЕС. Этот режим будет рассмотрен подробно в § 3.6. Следует отметить, что система PALLADA может быть сгенери¬ рована в двух модификациях в зависимости от комплекта внешних устройств, обеспечивающих непосредственный контакт человек — машина, и режима работы вычислительного центра. Монодиалоговая система применяется при безоператорной ор¬ ганизации эксплуатации ЭВМ. В этом случае каждый пользова¬ тель в вычислительном центре должен одновременно исполнять работу и программиста и оператора машины. Бидиалоговая систе¬ ма применяется при возможности создания терминала (рабочего места) программиста-пользователя] (это либо вторая пультовая пишущая машинка, либо дисплей SYS015), удаленного из машин¬ ного зала, и организации операторного обслуживания машины. Эти модификации различаются тем, что бидиалоговая система об¬ ладает возможностью альтернативного выбора устройств для вво¬ да задания: либо оно формируется целиком только с терминала 13
&/?7/7t7//rm^a' safa/tux 14
с Р 3 < s s я I Е* Л I м * Зг О 5 ~ н о Я s § 5 g о к s сз Л г н 15
пользователя, либо, как и при монодиалоговой системе, с перфо¬ карт, перфоленты или устройства SYSLOG — основного средстве общения оператора с операционной системой ЭВМ в диалоговом ре¬ жиме. Это устройство обычно является пультовой пишущей ма¬ шинкой и иногда дисплеем. Возможность такого выбора определяется приоритетностью опроса готовности устройств ввода данных в следующей последо¬ вательности: 1. устройство INPUT1 (обычно ввод перфокарт); 2. устройство INPUT2 (обычно ввод перфоленты); 3. терминал пользователя. В случае готовности устройств первого или второго приорите¬ та задание начинает вводиться с них, а терминал пользователя*^ время формирования и исполнения этого задания блокируется и заменяется устройством SYSLOG. Та же замена осуществляется системой и при выключенном терминале пользователя. В против¬ ном случае весь механизм выбора устройств блокируется и ввод информации возможен, как указывалось выше, только с терми¬ нала пользователя SYS015. Процесс эксплуатации бидиалоговой системы подробно рассмотрен в § 4.4 и 4.23. Обобщенная структурная схема диалоговой системы PALLADA и функциональная схема выполнения потока программных зада¬ ний под ее управлением в непрерывном («пакетном») режиме при¬ ведена на рис. 1. § 2.2. Файловая организация диалоговой системы. Рассмотрим подробнее, как происходит замыкание непрерывного круга обра¬ ботки заданий. Система PALLADA структурно состоит из двух фай¬ лов на устройствах прямого доступа (для каждого из разделов). Первый файл называется файлом постоянных директив, второй, как указывалось выше,— файлом заданий или файлом SYSOPT. Файл постоянных директив раздела BG содержит инструкции стандартной программы Управление заданиями ДОС, а именно: — операторы для назначения и описания необходимых диа¬ логовой системе внешних устройств и участков (файлов) на дис¬ ках; — оператор Ц UPSI, задающий стандартный режим листинга системы (вывод управляющих операторов на алфавитно-цифровую печать — системное устройство SYSLST); — оператор // EXEC nPALLFOH, который вызывает управ¬ ляющую программную фазу (ядро) диалоговой системы PALLADA в оперативную память ЭВМ для исполнения; — операторы назначения файла заданий раздела BG как стан¬ дартного устройства для ввода потока заданий системой ДОС, а именно SYSIN; „ w — операторы повторного назначения файла^ постоянных ди¬ ректив как устройства SYSIN в случае неисправимых машинных сбоев Файлы постоянных директив для разделов F1 и F2 вместо опе¬ раторов // UPSI и // EXEC nPALLFOH содержат 16
оператор Ц EXEC FGPWAIT1 (либо FGPWAIT2), который вызывает программу опроса и сброса ключа готовности соответ¬ ствующего файла заданий; оператор STOP, прерывающий пакетную обработку в разде¬ ле F1 или F2 до возобновления ее оператором. Если приоритет у раздела не будет изменяться и являться са¬ мым низким, то этот оператор можно не использовать, специально включив в соответствующую программу FGPWAITn процедуру ожидания. В этом случае программа FGPWAITn будет в цикле опрашивать бит готовности файла заданий данного раздела до ус¬ тановки его в единицу, после чего пакетная обработка сразу будет продолжена. Файлы постоянных директив формируются при генерации ди¬ алоговой системы и при ее дальнейшей эксплуатации не изменя¬ ются. Созданный данной системой для любого раздела файлвУБОРТ содержит в конце сформированного задания, которое должна быть выполнено под управлением стандартной системы ДОС ЕС, операторы назначения файла постоянных директив как устройства SYSIN. Таким образом, два рассмотренных файла создают бесконеч¬ ную цепь выполняемых в каком-либо разделе заданий, состоящую из двух звеньев, причем одно звено, а именно файл заданий, яв¬ ляется изменяющимся (рис. 2) [14]. Это необходимое и достаточное условие для непрерывного функ¬ ционирования системы PALLADA. Следует особо подчеркнуть, что для функционирования диа¬ логовой системы не требуется ни выделения дополнительной опе¬ ративной памяти, занимаемой сервисными блоками супервизора при использовании операционной системы ОС ЕС, ни дополнитель¬ ного высокоприоритетного раздела, как того требует, например, комплекс ДОС ЕС + программа Администратор (POWER-II) -f- + программа Терминал, разработанный в Институте математики АН БССР [31]. В то же время система PALLADA почти полностью дублирует, а в некоторых случаях и превосходит возможности этих стандарт¬ ных систем, имея значительно более простой диалог с оператором ЭВМ или пользователем. Все это предопределяет возможность эффективного использо¬ вания диалоговой системы на машине с малым объемом (от 64 ки¬ лобайт) оперативной памяти либо при ее дефиците и с минимальным или ограниченным набором периферийных внешних устройств, который не позволяет (или сильно усложняет) эксплуатацию такого вычислительного комплекса в режиме мультипрограммирования в стандартной системе ДОС ЕС. Начальный запуск системы осуществляется с помощью про¬ цедуры первоначальной загрузки IPL. Эта процедура заключается в первичном назначении с помощью специальных управляющих операторов ДОС файла постоянных директив как системного уст- 17
(,и i«: wnw,) ,u idi чтш, т////УЛ1ЛЛЛ2/ 1/7727ф . (ZidOMfj ШОШ Щвй 771777 (Zd) id рлллфлг i/ллф \ ц> 111 ill ? ц 5| III It ■'3 vha ^ NJ NJ Ш !Й 'ilsl ^ til !||кЦ N |1‘С I 1ШЛУ ЛЛ//Л/7ЛГ 2/ЛЛф
ойства SYSIN [3, 17]. Общие сведения об управляющих операто¬ рах как стандартных, так и обрабатываемых диалоговой системой, а также процедура IPL рассматриваются в последующих главах. § 2.3. Операции системы PALLADA. Основной функцией диа¬ логовой системы PALLADA является формирование на файле SYSOPT программного задания для любого раздела ЭВМ из по¬ тока данных, поступающих в ЭВМ с внешних устройств ввода ин¬ формации в непрерывном (с перфокарт, с перфолент) и/или в диа¬ логовом режиме связи с пользователем (через пультовую пишу¬ щую машинку или дисплей). Задание формируется в соответствии с управляющими операто¬ рами диалоговой системы и системного макрогенератора. Управ¬ ляющие операторы синтаксически близки к стандартным картам управления ДОС ЕС и состоят из знака оператора (// или <), следующего за ним пробела, кода оператора и поля параметров. Операторы указывают способ первичной обработки вводимой информации. Так, автоматически 2 готовятся задания для работ с библиотеками ДОС ЕС, задаются сервисные действия системы, обрабатываются ошибочные данные во входном потоке информа¬ ции, оформляется начало и конец исполняемого задания, изме¬ няется приоритетность разделов оперативной памяти и т. д. Вот полный перечень операций диалоговой системы. Основные: 1. Назначение раздела оперативной памяти ЭВМ, в котором должно быть выполнено программное задание. 2. Ввод и формирование этого задания на файле SYSOPT с перфокарт, перфоленты, с пультовой пишущей машинки или дисплея. 3. Ввод и формирование программного задания системным макрогенератором как из простых наборов данных, так и из сис¬ темных макроопределений, хранящихся в системной и личной биб¬ лиотеках исходных модулей ДОС. Сервисные: 1. Оформление начала и конца обрабатываемого задания на файле SYSOPT, вывод на алфавитно-цифровую печать (системное устройство SYSLST) его имени, текущей даты, промежутка вре¬ мени, в течение которого задание выполнялось на ЭВМ, а также служебной идентифицирующей информации: фамилии програм¬ миста, названия отдела и т. д. 2. Определение типа библиотеки, с которой будет произво- диться'работа,— личная или системная. Рис. 2. Файловая организация диалоговой системы: формирование и исполнение програм¬ мных заданий в режимах AUTO и MTJLTY Оператор STOP включается в файл постоянных директив раздела F1 или F2 в том случар, если этому разделу при эксплуатации системы может быть назначен средний пли высший приоритет. Программа FGPWAITn должна быть сгенерирована в этом случае без про¬ цедуры ожидания 19
3. Назначение или исключение режима вывода на SYSLST стандартных и системных управляющих операторов, полного тек¬ ста введенной информации. 4. Назначение устройства ввода перфокарт стандартным уст¬ ройствам ввода исходных данных (SYSIPT) в случае необходимо¬ сти. 5. Перенумерация входного потока данных с присвоением сим¬ волического имени (4 символа) при его перезаписи в файл SYSOPT. 6. Автоматическое формирование задания для каталогиза¬ ции набора данных в системную или личную библиотеку SL. 7. Автоматическое формирование задания для трансляции программ и каталогизации их перемещаемых модулей в личную пли системную библиотеку RL. 8. Перенос наборов данных из личной библиотеки SL в систем¬ ную и наоборот в режиме копирования или системной макроге¬ нерации. 9. Перенос перемещаемых модулей программ из личной биб¬ лиотеки RL в системную и наоборот. 10. Включение системного макрогенератора и присвоение на¬ чальных символьных значений его параметрам (до 8 символов). И. Получение информации о приоритетности разделов ЭВМ на диалоговом устройстве. 12. Изменение приоритетности разделов ЭВМ. 13. Вывод на SYSLST, а также на перфокарты и перфоленту входного потока информации в режиме копирования или систем¬ ной макрогенерации (режим SCRIB); одновременно можно вы¬ водить данные как на одно, два, так и на все три устройства. 14. Переключение с непрерывного режима ввода в диалоговый. 15. Разметка поля диалогового устройства для облегчения безошибочного ввода данных пользователем в ЭВМ. 16. Изменение строки текста набора данных (книги) при его переносе из ^библиотек SL в файл заданий путем установления в необходимом месте связи с диалоговым устройством. 17. Аннулирование неполностью сформированного на файле SYSOPT задания из-за обнаруженных ошибок при вводе данных с диалогового устройства. 18. Аннулирование последней записи на файле SYSOPT, со¬ держащей ошибку при ее вводе с диалогового устройства. § 2.4. Обработка ошибок управляющих операторов диалоговой системы. Как только во входном потоке информации попадается ошибочный оператор, система PALLADA выдает одновременно на SYSLST и на диалоговое устройство информационное сообщение. Если этот оператор был считан не с диалогового устройства, то на нем дополнительно выводится и собственно этот ошибочный опе¬ ратор. Система при этом переходит в диалоговый режим, чтобы дать возможность пользователю исправить этот оператор, не сни¬ мая задания. Следует подчеркнуть, что эта ситуация может воз¬ никнуть либо при ошибочных параметрах оператора, -либо при попытке записать в файл заданий несуществующий в библиотеках 20
набор данных (неверное имя книги). После ввода исправленного оператора система возвращается в прерванный режим работы. Некоторые ошибки в операторах системного макрогенератора, приводящие к неисправимым ошибкам создания программного за¬ дания, а также попытка выполнить слишком большое задание, не помещающееся в файл SYSOPT, приводят к немедленному пре¬ кращению обработки этого задания и пропуска всех относящихся к нему оставшихся данных до обнаружения системой оператора конца задания — /&. Пользователь должен знать, что при ошибке в поле знака или ключевом слове система не сможет распознать управляющий опе¬ ратор и он будет внесен в файл SYSOPT как обыкновенная за¬ пись, что приведет к неправильному формированию программного задания. Если такая ошибка произошла при вводе данных с диалогового устройства н пользователь вовремя заметил ее, то он сможет или проигнорировать последнюю запись файла SYSOPT или аннули¬ ровать его полностью и сформировать задание заново. § 2.5. Передача информации пользователю диалоговой систе¬ мой. Информационные сообщения системы PALLADA выдаются на SYSLST и на диалоговое устройство. Существуют четыре типа сообщений. К первому типу относятся сообщения о начале и конце задания, а также о том, что диалоговая система находится в режиме ожида¬ ния ввода задания. Эти сообщения заключены в косые черточки либо звездочки с двух сторон. 0 начале задания свидетельствует вывод оператора Ц JOB. Сообщения системы первого типа появляются только на диалого¬ вом устройстве ввода данных. Сообщения второго типа имеют ту же структуру, что и сообще¬ ния стандартной системы ДОС ЕС, и состоят из трех частей: кода сообщения (четыре символа), индикатора реакции пользователя (один символ), текста сообщения (произвольной длины). Первый символ кода сообщения имеет значение либо 0 (как у стандартного супервизора), либо 1 (как у програАммы Управле¬ ние заданиями). Три остальных символа кода сообщения являют¬ ся его номером [3, 13]. Индикатор реакции в сообщениях диалоговой системы при¬ нимает следующие значения: I, D или С. 1 показывает, что сообщение чисто информационное и не тре¬ бует от пользователя никаких дополнительных действий. D предоставляет пользователю возможность исправления ошибки путем повторного ввода оператора системы или требует выбора одного из стандартных ответов — YES или N0. С показывает, что при обработке задания возникли неиспра¬ вимые ошибки, и оно снимается; в этом случае никаких действий °т пользователя не требуется. Эти сообщения выводятся на диалоговое устройство и на SYSLST. 21
// STRING- + -r-r-,-n+ -n+ ТТЛ—1+ тптптп-пттгтг i ri n-n-i-n~rm-n-i-n-i i i i rt-rri vi . i i n i & i // STRING fКпммен/тт/ша ' j -i-,-r-r-r+-|-|~l~ I I 7 п I ■ IT Г I I ■ ■ ■ Г I I ГГТЧ ! I I I I I I I I I i j I I 1 I l*^* ) j Jma 0/7?/7a/77/7/76/ fffyarfa/nt/fawmcjr /7/7// l/j: #/?//?£> s /7£/7/p/7x/z/7m, /7?/7/р/7У7ен/776{ /У /7/У/7/7/7г/7#/7г/7 ///7/77/7/7/y/7mfi/Z. < SEP + I I I ; i +-п+ тттп+ i i' i i i i i i i i M i i м i i Гм i i i i i ii i i i ii i i i ; i i i ri i i i i i < REP ^Комментарии/ ~t~~ 1 ; 1 | ~П+ Mill* I I I I I I I Ж'/7ММ£’///77/7/7///У ' T I I I I I I I I I I I I I I I I I I Г I T Г I I I I J/77Z/ /777^/7а/77/7/76/ /7/?/7a/7/Z/776/<?a/a/77/7/7 /7/71/ ///Г /7/7//Cy/77/:/77/7//// f ///lfo/7f /7а////6//Г, /:V///77//tfaf/S0Af 7// /f///?/7///7/77f//// ///7/7/7/7/76/J7 A//7- /7///7£// /7 /77/7/1/7 JTZ/7/7//////. J Рис. 3. Сообщения типа «строка» диалоговой системы и соответствующие управляющие операторы Сообщения третьего типа выдаются системным макрогенера¬ тором при обнаружении ошибок в операторах генерации макро¬ определений. Ошибочный оператор заносится в выводной поток данных. Информационное сообщение помещается в этом же опе¬ раторе, заменяя символическое имя и порядковый номер данного оператора в этом наборе, т. е. с 73-й по 80-ю позицию. Проверить правильность генерации системных макроопределений быстрее и легче всего в режиме SCRIB. Сообщения этого типа имеют вид *ERR=nn* (где тт — номер сообщения) Сообщения четвертого типа (рис. 3) появляются после операто¬ ров, переводящих систему из режима непрерывного ввода потока данных с перфокарт, перфоленты или библиотек SL в диалоговый, разрешая пользователю ввести одну строку данных. Перед перехо¬ дом диалогового устройства в режим связи с пользователем на нем выдается строка знаков «—», форматирующая поле этого устрой¬ ства. В этой строке отмечены знаками «+» 1, 7, 10, 16 и 72 пози¬ ции. Кроме того, эта строка может содержать информационное сообщение (длиной до 32 символов), указанное как параметр в со¬ ответствующем управляющем операторе. Информационно-диагностические сообщения диалоговой си¬ стемы приведены в Приложении D, а системного макрогенера¬ тора — в Приложении Е.
Глава III УПРАВЛЯЮЩИЕ ОПЕРАТОРЫ И ДИРЕКТИВЫ § 3.1. Программа и задание. Чтобы решить на ЕС ЭВМ какую- либо задачу, нужно написать для нее программу на одном из язы¬ ков ДОС ЕС и сформировать рабочее задание. Рабочее задание — это совокупность управляющих операторов операционной системы и исходных данных (например, текстов программ). Задание должно начинаться оператором Ц JOB и заканчивать¬ ся оператором/&. Рабочее задание может быть разделено на шаги задания. Шаги одного задания выполняются последовательно. Выполнение каж¬ дого последующего шага задания зависит от успешного выполне¬ ния предыдущих шагов. Шаг заканчивается управляющим опе¬ ратором Ц ЕХЕС (вызов программы из библиотеки абсолютных модулей для выполнения) или Ц RSTRT (повторный запуск про¬ граммы с контрольной точки) [3, 17]. С учетом дополнительных возможностей, предоставляемых диа¬ логовой системой, можно определить структуру шага задания следующим образом: — оператор инициализации задания // JOB; — операторы конфигурации системы и управления листингом (вывод управляющих операторов на устройство SYSLST) // ACTION, // DETUR. // FIANT, // LOG ii т. д.; — управляющие операторы и директивы назначения исполь¬ зуемых программой внешних устройств и описания файлов на дис¬ ке и магнитной ленте // ASSGN, // CLOSE, // TLBL, // DLBL, // EXTENT и т. д.; — операторы включения системного макрогенератора и при¬ своения начальных символических значений его параметрам Ц DD; — операторы установления режима выполнения программы // UPSI и // OPTION; — операторы Редактора связей ACTION, PHASE, INCLUDE, если назначен режим редактирования, т. е. сборки готовой про¬ граммы из перемещаемых модулей (как полученных в результате компиляции их текстов с исходных языков ДОС ЕС, так и храня¬ щихся в библиотеках объектных модулей) и настройки этой про¬ граммы на начальный заданный адрес ее выполнения [4]; — оператор Ц ACTION CARD или аналогичный,] если тре¬ буется вводить поток исходных данных с перфокарт, как со стан¬ дартного устройства ввода данных; 23
— оператор // EXEC; — набор исходных данных (например, текст программы) или операторы его формирования из книг, хранящихся в библиотеках SL, // СОРУ. Рабочее задание в простейшем случае состоит из одного шага. Его примерная структура в этом случае следующая: — оператор начала задания Ц JOB; — оператор выбора типа библиотек Ц ACTION SYSTEM; — операторы и данные шага задания; — оператор конца задания /&. Методы формирования рабочих заданий для выполнения опре¬ деленных стандартных действий, предоставляемых операционной системой ДОС и диалоговой системой PALLADA, будут подробно рассмотрены в следующих главах на большом количестве приме¬ ров. § 3.2. Синтаксис операторов и директив. Любая управляющая инструкция как стандартной системы ДОС, так и диалоговой си¬ стемы состоит, как упоминалось выше, из следующих элементов: признака типа инструкции системы, кода операции, поля пара¬ метров. Признак типа определяет инструкцию как директиву, как опе¬ ратор или как оператор системного макрогенератора. В управ¬ ляющих операторах в поле признака типа записываются две на¬ клонные черты //. Директивы либо не имеют поля признака, либо его зона остается пустой (пробелы). И, наконец, признаком опера¬ торов системного макрогенератора является открывающая ка¬ вычка <• Код операции определяет функции управляющего оператора и директивы. Поле параметров следует за кодом операции и содержит уточ¬ няющую информацию для выполнения той или иной функции опе¬ рационной системы. Параметры управляющих операторов разде¬ ляются запятыми. Наличие пробела в поле параметров является признаком его окончания. Признак типа, код операции и поле параметров отделены друг от друга пробелами. Этим синтаксическим правилам не подчиняются только три оператора: /& — конец задания, /* — конец файла, * — коммен¬ тарий. Директивы и управляющие операторы ДОС и диалоговой си¬ стемы вводятся в общем потоке данных задания в непрерывном или диалоговом режиме. Директивы программы Внимание вводятся оператором только с системного устройства управления вычислительным комплексом SYSLOG (обычно пультовая пишущая машинка) после нажатия кнопки ВНИМАНИЕ [3, 16]. Операторы системного макрогенератора обрабатываются си¬ стемой только при вводе макроопределений из личной или систем¬ ной библиотеки исходных модулей. 24
Полный список инструкций ДОС и диалоговой системы PAL¬ LADA с указанием системных программ, которые их обрабаты¬ вают, приведен в Приложении С. Ниже приводится описание как операторов управления диа¬ логовой системой PALLADA, так и наиболее важных и часто при¬ меняемых операторов и директив стандартной системы ДОС gQ программ Управление заданиями, Внимание, Редактор связей и]Библиотекарь. § 3.3. Условные обозначения. В целях упрощения записи пара¬ метров управляющих операторов и директив приняты стандарт¬ ные для книг по ДОС ЕС условные обозначения [3, 17]. 1. Заглавные буквы и знаки пунктуации (за исключением квадратных, фигурных скобок и многоточия) изображают инфор¬ мацию, которая должна быть записана пользователем без изме¬ нения. 2. Строчные буквы указывают информацию, окончательный вид которой зависит от пользователя (чаще всего это различные комментарии и определения внешних устройств, имен и т. д.). 3. Информация, заключенная в квадратные скобки, представ¬ ляет собой необязательный параметр и может опускаться; в пос¬ леднем случае предполагается стандартный режим обработки дан¬ ного оператора. 4. Информация, заключенная в фигурные скобки, является альтернативной, т. е. пользователь должен выбрать один из при¬ веденных вариантов. 5. Многоточие указывает, что далее может быть записано про¬ извольное количество параметров оператора. Если после него стоит цифра, заключенная в кружок, например (5), то она показы¬ вает максимальное количество параметров. 6. Если подчеркнутый параметр опускается, то ему приписы¬ вается системой стандартное значение. § 3.4. Оператор инициализации задания. Любое задание, вы¬ полняемое под управлением диалоговой системы PALLADA, начинается с обработки оператора инициализации задания — оператора Ц JOB. Этот оператор сообщает системе имя задания и указывает на начало потока его управляющих карт и данных. Диалоговая система при этом восстанавливает стандартный ре¬ жим функционирования AUTO. Следует отметить, что при отсутствии оператора Ц JOB как первого оператора в задании диалоговая система автоматически генерирует его, причем данное задание получает имя N0 ф NAME. Оператор // JOB выводится на SYSLOG — диалоговое уст¬ ройство при считывании задания с перфокарт или перфоленты. На системном устройстве печати SYSLST листинг задания (до¬ кумент работы системы) всегда начинается с заголовка (рис. 4). Заголовок задания включает в себя его имя, распечатываемое большими буквами, текущую дату его выполнения и информацию пользователя или стандартное сообщение. 25
II C_J C_D <_> 0-4 II II Ж < СЦ zc «Э cx; 1 с_э uu or **** *жж X X X x >< X Ж ж * жжЖЖ*ж ж ж X ж Ж * ж ж жЖ ЖЖ ж Ж ж ж ж Ж жжж Ж Ж Ж ж х ж ж ж , ж Ж ж Ж ■ ж . ж жж ж Ж Ж ж ж ж ж ЖЖ Ж Ж Ж Ж Ж Ж Ж Ж Ж ж ж ж жж Ж Ж ж* ж Ж* ж Ж Ж ж Ж Ж X Ж х *Ж £ *ж ж ж ж ^ * * Ж ж ж ж ж ж * <-о cz. f=* ж ж ж ж ж ж ж ж No — -г «л СЭ с=> Рис. 4. Системный листинг задания
Оператор Ц JOB, ошибочно введенный в ЭВМ в середине вы¬ полняемого задания, не обрабатывается диалоговой системой и пропускается. формат оператора // JOB следующий: // JOB имя [, комментарий] имя — имя задания. Его длина может изменяться от 1 до 8 символов. Система обрабатывает имена,f состоящие только из латинских букв от А до Z, цПфр от Q до 9 и двух специальных знаков Q и #• Остальные знаки автомати¬ чески заменяются на П • комментарий — информация пользователя длиной не более 25 байт, выводимая на SYSLST. При отсутствии комментария печатается стандартное сообщение — название института, в котором была создана диалоговая систе¬ ма: Институт ВИД и НФ АН СССР.1, § 3.5. Оператор назначения раздела. Диалоговая система пре¬ доставляет пользователю возможность выполнять свое задание в любом разделе оперативной памяти ЭВМ. Программы, совер¬ шающие большое число операций ввода — вывода (например, трансляция, редактирование, перезапись информации, отладочный счет) и заканчивающиеся в среднем за 10—15 мин., нужно запус¬ кать в разделе BG, т. е. попеременно с самой диалоговой системой, которая функционирует в режиме AUTO. Следует еще раз подчеркнуть, что при работе системы PALLA¬ DA раздел BG должен иметь либо высший, либо средний прио¬ ритет. Программы, требующие многочасового счета, необходимо за¬ пускать в разделе с наиболее низким приоритетом. Программы, производящие обработку экспериментальных данных в реальном масштабе времени с длительными паузами ожидания ввода (например, для проведения управляемого физио¬ логического эксперимента), следует решать в самом приоритетном разделе [10]. Для запуска программ в разделах F1 или F2 следует перевести диалоговую систему в режим MULTY и сформировать файл зада¬ ний для какого-нибудь из них. Для подобного переключения служит оператор назначения раз¬ дела Ц DETUR. Он имеет следующий формат: // DETUR (рз) F1 илч F2 — имя раздела, в котором будет сформирован файл SYSOPT. После окончания формирования задания на диалоговое устрой¬ ство выводится информационное сообщение 1D14I, извещающее с возможности запуска программы в разделах F1 или F2. Далее диалоговая система вновь готова принять следующее задание. Если пользователь захочет запустить свое задание в том разде¬ ле, где в данное время уже выполняется программа, система вы¬ даст сообщение о недоступности данного раздела 1P21D. В этом 27
случае задание должно быть либо снято, либо запущено в другом разделе ЭВМ. Если система сгенерирована без поддержки мультипрограм¬ много режима работы, то ввод оператора Ц DETUR всегда при¬ водит к выдаче сообщения 1P22D. В этом случае, естественно, возможна работа только в разделе BG. При ошибочном задании имени раздела выдается сообщение 1S60D (Приложение D). § 3.6. Оператор конфигурации системы. Перед каждым зада¬ нием, выполняемым под управлением диалоговой системы, в файл заданий SYSOPT заносится стандартный набор . управляющих операторов и директив ДОС ЕС. Эта процедура носит название открытия файла SYSOPT. В частности, сюда входит стандартный оператор // JOB, сгенерированный при обработке оператора Ц JOB диалоговой системы, и операторы назначений для личных библиотек объектных и исходных модулей. Таким образом при стандартном открытии файла SYSOPT определяются личные библиотеки, и программы Библиотекарь и Редактор связей будут в первую очередь работать с ними. Оператор конфигурации (настройки) стандартной компоновки диалоговой системы логическими устройствами — Ц ACTION — модифицирует процедуру открытия файла SYSOPT, т. е. изменяет стандартный набор управляющих операторов и директив, зано¬ симых в него перед потоком данных с вводных устройств. Кроме того, этот оператор задает режим системного листинга и изменяет назначения системных логических устройств (SYSIPT и SYSLST) между шагами выполняемого задания, т. е. после процедуры открытия файла SYSOPT. Оператор // ACTION имеет следующий формат: // ACTION параметр, параметр,. . . (3) Параметры определяют функцию и местонахождение опера¬ тора в потоке входной информации задания и принимают следу¬ ющие значения: SYSTEM — отменяет стандартный режим работы с личными библиотека¬ ми объектных и исходных модулей. Стандартный режим работы с личными иблиотеками задается при генерации файла постоянных директив. Операто¬ ром// UPSI XI определяется наличие личных библиотек, а // UPSI ХО — их отсутствие. DISPLY отменяет стандартный режим назначения для логического устройства SYSLST. с\7'сгчоЛ°10ВаЯ система автоматически при открытии файла SYSOPT назначает для SYSLST либо алфавитно-цифровую печать (при генерации файла постоянных директив указан оператор // UPSI ХХХО), либо участок дисков (// UPSI XXXI). Последнее особенно удобно при работе с дисплеем, так как позволяет про- сматривать листинг программы на его экране и этим экономит бумагу на АЦПУ при отладке задач. 28
Оператор // ACTION с этими параметрами обязательно должен стоять после оператора Ц JOB или в случае его отсутствия быть первым в задании. 1 LOGX — задает режим печати для диалоговой системы, т. е. задает ре¬ жим, при котором возможен вывод на SYSLST либо всего задания, либо его выборочных операторов. NOLOGX — запрещает вывод на SYSLST входного потока задания. Параметры LOGX и NOLOGX — взаимоисключающие. LIST — задает режим распечатки всего входного потока данных задания. NOLIST — задает режим распечатки только управляющих операторов во входном потоке данных задания. Печатаются только те строки данных, в начальных позициях которых стоят две косые черты //, открывающая ка- вычка<, /* или /&. ■* Параметры LIST и NOLIST — взаимоисключающие и оказы¬ вают действие на диалоговую систему только в том случае, если действует режим LOGX. Один из режимов LIST или NOLIST задается как стандартный при генерации файла постоянных ди¬ ректив соответственно операторами Ц UPSI1 и Ц UPSI0 (§ 5.7) и, как и все стандартные назначения, действителен в начале каж¬ дого задания до соответствующего оператора // ACTION. Оператор Ц ACTION с параметрами LOGX, NOLOGX, LIST, NOLIST может стоять в любом месте задания. SCRIB — задает режим распечатки входного потока данных задания до оператора /&. Файл заданий при этом не формируется. Оператор // ACTION с этим параметром в задании должен быть первым после оператора // JOB. Оператор Ц ACTION с перечисленными выше параметрами не приводит к внесению в файл заданий дополнительных записей. CARD — назначает для SYSIPT устройство ввода перфокарт (при испол¬ нении задания с файла SYSOPT); идентичен стандартному оператору // ASSGN SYSIPT, Х'ООС', где Х'ООС' — адрес устройства ввода перфокарт (§ 3.7). После окончания работы очередного шага заданий следующий управ¬ ляющий оператор вводится опять из файла SYSOPT. Подчеркнем, что оператор Ц ACTION с этим параметром не оказывает влияния на режимы формирования файла SYSOPT. Данный оператор может употребляться только между началами шагов задания, но никак не среди его исходных данных. Запрещено употребление оператора Ц ACTION CARD после операторов // CATALS и // CATALR. И, наконец, оператор Н ACTION CARD должен стоять в задании не ранее строки данных, приводящих к открытию файла SYSOPT. Такой строкой может быть любой набор данных или управля¬ ющий оператор, исключая следующие операторы диалоговой си¬ стемы, не приводящие к открытию файла заданий: Ц JOB, //ACTION (с режимами SYSTEM, DISPLY, LOGX, NOLOGX, LIST, NOLIST), // DD, // DETUR, // FIaNT. П
Несоблюдение перечисленных правил приведет к выдаче со¬ общения об ошибке 1S70D, а нарушение синтаксиса — к выдаче сообщения 1S60D (Приложение D). После выдачи информацион¬ ных сообщений ЭВМ входит в связь с диалоговым устройством и пользователь получает возможность для исправления ошибочных операторов. § 3.7. Изменение приоритетности разделов ЭВМ. Одной из самых важных функций, поддерживаемых диалоговой системой, является изменение приоритетности разделов оперативной памя¬ ти ЭВМ. Как было указано (§ 3.5), при первоначальной.загрузке диа¬ логовой системы приоритет разделов, определенный стандартной системой ДОС ЕС, изменяется так, как было задано при генера¬ ции системы PALLADA. Особенность функционирования системы PALLADA, а именно диалоговый режим с пользователем, диктует следующую после¬ довательность приоритетности разделов: BG^F1-^F2 или BG->F2-^F1 — это возможные стандартные комбинации. Для ряда исследовательских задач, к которым относятся и управляемые эксперименты (биологический объект ЭВМ), ха¬ рактерны продолжительные периоды ожидания и необходимость постоянной готовности ЭВМ принять и обработать данные из экспериментальной камеры. Такие задания должны выполняться в разделе с высшим приоритетом [29, 30]. Многие задачи, в том числе моделирование различных биоло¬ гических систем, имеют ограниченное количество операций вво¬ да — вывода и требуют продолжительного многочасового счета, что при однопрограммном режиме чрезвычайно затрудняет от¬ ладку других программ и не дает возможность проводить управ¬ ляемые эксперименты. Поэтому такие задачи следует выполнять в разделе с низшим приоритетом. Наконец, существует еще значительный класс задач, связан¬ ных с большим количеством операций ввода—вывода (например, задаче бухгалтерского учета, АСУ и т. п.). Эти программы выгод¬ нее решать в разделе со средним приоритетом [10]. При большом разнообразии типов задач, решаемых на научно- исследовательском вычислительном центре, весьма полезно иметь возможность менять приоритетность разделов произвольным образом без перегенерации диалоговой системы. Для этой цели служит оператор // FIANT. Он выполняется сразу после ввода и не оказывает влияния на фюрмирующийся файл заданий. Дополнительно с помощью этого же оператора можно получить информацию о приоритетах разделов в данный момент времени. Это часто может потребоваться, если система сгенерирована как бидиалоговая (§ 4.4, 4.23). Пользователь в данном случае может не знать, какие приоритеты назначены разделам перед на¬ чалом его работы с ЭВМ, что затруднит правильный выбор прио¬ ритета выполнения его заданий. 30
формат оператора Ц FIANT следующий: // P.AVT I®0' F1’ F2| // FIANT | L1SX ] BG, FI, F2 — список идентификаторов разделов ЭВМ; задается в поряд¬ ке понижения приоритетности этих разделов. LIST — параметр, включающий функцию отображения на диалоговом устройстве списка идентификаторов разделов; их последовательность отража¬ ет действующие в настоящее время их приоритеты по рассмотренному выше правилу. Нарушение синтаксиса приводит к выдаче сообщения 1S60D. Попытка употребления оператора Ц FIANT в системе, сгенери¬ рованной без поддержки мультипрограммного режима эксплу¬ атации ДОС, приведет к выдаче сообщений 1P22D (Приложение D). § 3.8. Операторы каталогизации. Каталогизация — это про¬ цедура записи текстовой информации, т. е. программ, написанных на одном из языков ДОС ЕС, наборов управляющих операторов, системных макроопределений, в библиотеки SL, а также запись перемещаемых модулей программ, полученных в процессе ком¬ пиляции их исходных текстов, в библиотеки RL. Диалоговая система позволяет производить каталогизацию в библиотеки SL и RL как в личные, так и в системные с помощью операторов Ц CATALS и Ц CATALR соответственно. Использо¬ вание этих операторов значительно упрощает пользование стан¬ дартной программой Библиотекарь, сокращая число шагов в задании для достижения одного и того же результата. Следует особо отметить, что оба эти оператора так же, как и оператор Ц ACTION, модифицируют процедуру открытия фай¬ ла заданий, если следуют за операторами Ц JOB, //ACTION либо являются первыми в задании. При этом они в отличие от оператора Ц ACTION обязательно заносят в файл SYSOPT не¬ обходимую информацию. Оператор Ц CATALR в середине задания стоять не может. Оператор Ц CATALS формирует на файле SYSOPT задание для каталогизации в личную или системную библиотеку SL (выбор осуществляется предварительным указанием оператора Ц ACTION SYSTEM) наборов текстовой информации или систем¬ ных макроопределений. Входные данные, которые могут посту¬ пать со всех типов внешних устройств и использование которых предусмотрено в конкретном варианте диалоговой системы, сге¬ нерированном пользователем (рис. 1), автоматически нумеруются в соответствии с требованиями программы Библиотекарь, т. е. от нуля. Каждому номеру из четырех знаков предшествует иденти¬ фикатор (имя) длиной 4 байта. Эта информация располагается в 73 -г- 80 байтах каждой записи входного потока данных. Следует подчеркнуть, что стандартный оператор конца файла /* записывается в библиотеки SL в виде оператора диалоговой системы < EOF. Обратное преобразование производится при ис¬ полнении оператора копирования (§ 3.9). 31
Чтобы каталогизировать несколько наборов текстовой инфор¬ мации с разными именами, необходимо перед каждым из них ставить свой оператор Ц CATALS, который одновременно является признаком окончания предыдущего набора данных. Последний набор данных должен кончаться оператором ,/& (§ 3.21). Одно¬ временно наборы данных, как указывалось выше, возможно каталогизировать только либо в системную, либо в личную би¬ блиотеку SL. Формат оператора Ц CATALS следующий: //CATALS [подбиблиотека.] имя [, идентификатор] подбиблиотека—код подбиблиотека SL, состоящий из одного символа (цифра от 0 до 9 либо] латинская буква от А до Z). Этот параметр необязатель - ный. При его отсутствии система генерирует значение кода, равное А. имя — имя из 1 -г 8 алфавитно-цифровых знаков, под которым набор данных, следующий за оператором // CATALS, будет помещен в библио¬ теку SL. идентификатор — четыре произвольных знака, помещаемых в 73 н- 76 байтах каждой записи входного потока информации. Параметр необязатель¬ ный, при его отсутствии идентификатор формируется из первых четырех зна¬ ков имени набора; данных и дополняется пробелами справа, если это имя имеет длину, меньшую 4 байт. Оператор Ц CATALS, таким образом, позволяет совместить две операции программы Библиотекарь (а именно каталогизацию н перенумерацию нового набора данных) в одну, одновременно избавляя пользователя от употребления стандартных вспомога¬ тельных операторов этой программы [5]. Несоблюдение указанных правил приводит к выдаче системой сообщений об ошибках 1S60D и 1S70D. Оператор Ц CATALR переводит диалоговую систему в спе¬ циальный режим, позволяющий, во-первых, каталогизировать в личную или системную библиотеки RL перемещаемые модули программ, полученные сразу после компиляции их исходных текстов, в одном задании (программа Библиотекарь версий ДОС ЕС,^предшествующих 2.0, может выполнять эту процедуру только для модулей, полученных в результате работы компилятора с языка АССЕМБЛЕР в режиме «каталогизация с SYSLNK»), а во-вторых, переносить объектные модули из личной библиотеки в системную и наоборот (§ 1.4). Как указывалось выше, этот оператор не может стоять в сере¬ дине задания. ^ Досле оператора Ц CATALR могут следовать только шаги задания, либо начинающиеся вызовом программ- компиляторов с каких-либо языков ДОС, либо сервисной про¬ граммы RSERV сЪператором PUNCH (§ 4.18). Задание для каталогизации перемещаемых модулей в библио¬ теку RL, автоматически генерируемое диалоговой системой, со¬ стоит из следующих шагов. а. Компиляция исходных текстов программ пользователей (либо вызова сервисной программы RSERV) и записи перемеща- 32
ivtbix модулей, полученных в результате ее работы, на системное устройство SY5PCH, предварительно назначенное на диск и сов¬ мещенное с устройством SYSLNK (совмещенный файл для SYSPCH/SYSLNK носит имя SYSINP). b. Вызов информационной программы, принадлежащей си¬ стеме PALLADA, предназначенной для выдачи на диалоговое устройство контрольно-предупредительного сообщения о типе библиотеки (личная или системная), в которую будет произво¬ диться каталогизация модулей файла SYSINP. c. Повторный вызов корневой, управляющей части диалоговой системы в режиме CATALR (§ 2.1) для формирования на файле SYSOPT второй части задания каталогизации путем генерации необходимых стандартных управляющих операторов и переза¬ писи информации с файла SYSINP в необходимом формате. d. Выполнение заключительной части задания, сформирован¬ ной на файле SYSOPT. Оператор Ц ACTION SYSTEM, предшествующий оператору Ц CATALR, оказывает действие только на шаг «а» сгенерирован¬ ного задания. В случае появления ошибок при работе компиляторов или при отказе пользователя от каталогизации соответствующим ответом на сообщение информационной программы (1M02D) вызывается программа аварийного завершения каталогизации, после чего диалоговая система заканчивает выполнение этого за¬ дания, не переходя в режим CATALR. Схема функционирования системы PALLADA при создании задания для получения и каталогизации перемещаемых модулей в библиотеки RL приведена на рис. 5. Оператор Ц CATALR имеет следующий формат: Ц CATALR [n] [, SYSTEM] [, имя модуля] //CATALR [SYSTEM] [, имя модуля] Ц CATALR [п] [, имя модуля] п—|число перемещаемых модулей, записанных на SYSINP, для одно¬ временной каталогизации в библиотеки (1 ^ л ^ 9). При отсутствии данного параметра п принимается равным 1. SYSTEM — параметр, отменяющий стандартный режим работы с личными библиотеками, аналогичен одноименному параметру оператора // ACTION (§ 3.G). Если, например, система сгенерирована с постоянным стандартным назначением личных библиотек, то при указании этого параметра каталоги¬ зация подготовленных перемещаемых модулей должна будет производиться в системную библиотеку RL. имя модуля — имя, состоящее из 1 -г 8 алфавитно-цифровых символов (причем первый символ обязательно буква), под которым будет закаталогизи- рован первый перемещаемый модуль с файла SYSINP. Если этот параметр опускается, то все модули, в том числе и первый, будут каталогизированы в библиотеки RL со своими собственными именами, т. е. именами, указанными в первой записи каждого перемещаемого модуля, а именно в первой карте ESD [4]. 2 С. Б. Векшин 33
ЗЛНЗНРОУРГ 30M/>77g0JL/ - (IdOSASj Р"РРф Рнс. 5. Файловая организация диалоговой системы: формирование и исполнение заданий для получения и каталогизации переме¬ щаемых модулей в библиотеки Ш. (режимы AUTCM CATAI10
Несоблюдение правил использования оператора // CATALR приводит к выдаче системой сообщений об ошибках 1S60D и 1S70D. После выполнения первой части задания, результатом которой является формирование файла SYSINP, вызывается системная информационная программа. Она выдает на диалоговое устройство контрольно-предупредительное сообщение 1M02D с указанием возможности каталогизации содержимого файла SYSINP в лич¬ ную или системную библиотеку RL. Пользователь получает воз¬ можность еще раз проконтролировать правильность выполнения первой части задания. Если ошибок нет, то на это сообщение следует ответить YES, после чего диалоговая система сформирует и выполнит заключи¬ тельную часть задания, в противном случае следует ответить N0. Это приведет к снятию выполняемого задания и каталогиза¬ ция выполняться не будет. Любой другой ответ кроме YES или N0 игнорируется информационной программой, и после сообще¬ ния 1M03D она вновь установит связь с пользователем. Выдачу контрольно-предупредительного сообщения можно заблокировать, включив во входной поток задания на каталогизацию оператор Ц UPSI ХХХХХХХ1. Если при автоматическом формировании заключительной части задания диалоговая система попытается прочитать из файла SYSINP больше данных, чем там содержится (заданное в операторе // CATALR число перемещаемых модулей п больше истинного), то выдается сообщение 1D13C и выполнение задания также прекращается. В ходе нормального выполнения каталогизации в библиотеки SL или RL исходных текстов или перемещаемых модулей на SYSIST выдаются стандартные сообщения программы Библиоте¬ карь в формате: CATALS подбиблиотека. имя книги или CATALR имя модуля. В конце задания выдается таблица] состояния библиотек ДОС [5]. В заключение следует подчеркнуть, что задания на каталоги¬ зацию в библиотеки SL и RL могут исполняться только в фоновом разделе BG. Ввод операторов Ц CATALS и Ц CATALR при включенном режиме MULTY (т. е. после обработки оператора Ц DETUR) приводит к выдаче сообщения 1S7DD (Приложение D). § 3.9. Операторы и директивы назначения и описания логи¬ ческих устройств системы ДОС ЕС. Файлом называется информа¬ ция, имеющая строго упорядоченную структуру и хранящаяся на каком-либо носителе — магнитной лепте, дисках, перфокартах и т. д. В зависимости от типа внешнего устройства файлы могут иметь последовательную, индексно-последовательную и прямую организацию. Индексно-последовательные и прямые файлы могут 35 2*
храниться только на запоминающихся устройствах прямого доступа к данным (по ключу к каждой записи), например на маг- нитных дисках. Каждый файл на магнитных дисках должен быть снабжен информационной меткой пользователя — именем файла. При совершении операций ввода—вывода центральный про- цессор ЭВМ обменивается потоком данных с внешними устрой¬ ствами. При этом система ДОС контролирует метки на магнитных лентах и дисках при первичном обращении к ним программы. При несовпадении имени файла в программе или управляю¬ щем операторе с именем файла на внешнем носителе информации операция ввода—вывода не совершается, предотвращая ошибоч ную обработку или разрушение хранящихся данных. При создании файла на запоминающем устройстве с прямым доступом (на подобных устройствах обычно одновременно хра¬ нится много файлов), например на магнитном диске, пользователь, помимо имени файла, должен сообщить системе и его местополо¬ жение, указав необходимые участки этого диска. В этом случае имя файла записывается в специальную область диска, называемую оглавлением тома, вместе с этой дополнитель¬ ной информацией. В дальнейшем, чтобы работать с таким файлом, следует указать только его имя в соответствующем управляющем операторе. При этом операционная система после нахождения имени файла в оглавлении тома автоматически расшифрует ин¬ формацию о его местонахождении и осуществит поиск. Таким образом, имя файла в данном случае выступает не только в каче¬ стве контрольной информации, но и является как бы адресом это¬ го файла на диске. Итак, необходимой и достаточной информацией, которую сле¬ дует знать операционной системе для выполнения операций вво¬ да—вывода (§ 1.3), является установление соответствия между конкретными физическими устройствами вычислительного ком¬ плекса и логическими устройствами, используемыми в програм¬ мах пользователей. Имена файлов являются уточняющей инфор¬ мацией, обязательной лишь для запоминающих устройств прямого доступа. Как же задать эту информацию операционной системе? В § 1.3 указывалось, что управляющая программа ДОС позво¬ ляет назначать конкретные физические устройства логическим устройствам как на время исполнения одного задания (временные назначения), так и для целого потока заданий (постоянные назна¬ чения). Временные назначения в большинстве случаев определяются с помощью управляющих операторов, а постоянные — только директивами. Стандартные директивы ДОС отличаются от операторов только отсутствием двух косых черточек (//) перед кодом операции (§ 3.2), Рассмотрим стандартные управляющие операторы и директи¬ вы программы Управление заданиями, знание которых необхо¬ димо для грамотного формирования рабочего задания при необ¬ 36
ходимости обращения к внешним устройствам, не определенным стандартно, а также для генерации диалоговой системы. Директива и оператор ASSGN используются для назначения логическому устройству конкретного физического устройства. Директива используется для задания постоянного назначения, а оператор и директива с параметрами TEMP — временного, формат оператора ASSGN следующий: SYSXXX — логическое устройство; параметр может принимать все зна¬ чения, указанные в Приложении В. X'cuu' — шестнадцатеричный адрес физического устройства, где с — номер канала, пи — номер устройства в канале (§ 1.3). UA — показывает, что назначение для данного логического устройства отменяется и обращение к нему вызывает снятие задания. IGN — показывает, что назначение для данного логического устройства отменяется и все обращения к нему игнорируются системой (параметр не допускается для логических устройств SYSRDR, SYSIPT, SYSIN, SYSCLB). X'ss' — модификатор плотности записи на магнитную ленту: Х'С8— 32 байта/мм, Х'СО'— 63 байта/мм (если устройство обеспечивает такую плот¬ ность) . ALT — указывает, что назначается сменная магнитная лента, которая будет использоваться тогда, когда основная магпнтная лента, назначенная для того же устройства, будет исчерпана. Для одного логического устройства может быть назначено несколько сменных. Этот параметр не допускается для системных логических устройств SYSIN, SYSRDR, SYSIPT. TEMP — указывает, что назначение, производимое данной директивой , временное. Директива н оператор CLOSE используется для закрытия фай¬ ла на дисках и магнитных лентах, т. е. для записи конечной метки файла (для лент записи конечной метки тома и разгрузки устройства), а также для переназначения одних и тех же логиче¬ ских устройств различным физическим и отмены этого назначе¬ ния. Оператор CLOSE используется только для логических устройств, которым назначена магнитная лента. Формат оператора и директивы CLOSE следующий: Директива ASSGN имеет следующую структуру ASSGN SYSXX, [//] CLOSE SYSXX 37
SYSXXX — логическое устройство. В случае работы с магнитными дис¬ ками параметр принимает значения SYSIN, SYSRDR, SYSIPT, SYSLSr SYSPCII (предложение является только директивой); в случае работы с маг¬ нитной лентой — SYSPCH, SYSIST, SYSOUT.imn SYSOOO-xSYSmaх (предложение может быть как оператором, так и директивой). Остальные параметры аналогичны параметрам оператора ASSGN (см. выше). Ограничения следующие: параметр IGN не допускается для логических устройстз SYSRDR, SYSIPT, SYSIN; параметр ALT допускается только для логических устройств SYSLST, SYSPCH, SYSOUT. Для описания меток файлов на магнитной ленте и дисках, обеспечения возможности обработки системой ДОС этих меток, служат операторы программы Управление заданиями Ц TLBL // DLBL, // EXTENT и // LBLTYP. Оператор // TLBL сообщает операционной системе информа цию, необходимую для создания и контроля меток файлов на маг нитных лентах. Формат этого оператора следующий: // TLBL имя файла, ['идентификатор файла'], [дата], [ре гистрационный номер файла], [порядковый номер тома], [порядковый номер файла], [номер поколения], [номер версии поколения] имя файла — содержит 1-х7 алфавитно-цифровых символов и должно быть тождественным с именем файла.’ используемым в программе. идентификатор файла — может содержать 1-х 17 алфавитно-цифровых символов, включая пробелы; идентификатор файла обязательно заключается в апострофы. Он является полным названием файла. Если зтот параметр опус¬ кается, то в качестве названия файла используется параметр «имя файла». дата — для выводного файла определяет срок хранения файла и может быть задана в одной из двух форм: в виде числа, содержащего от одной до че¬ тырех цифр и указывающего количество дней хранения файла, и в виде аб¬ солютно]'.! даты истечения срока хранения файла, содержащей последние две цифры года и номер дня в году (гг/ддд). Номер дня может содержать от одной до трех цифр. Если дата опущена, то срок хранения файла принимается рав_ ным семи дням. Если дата имеет вид 00/000, считается, что она опущена. Для вводных файлов этот параметр значения не имеет [15]. регистрационный номер — состоит из 1 -х 6 алфавитно-цифровых симво¬ лов. Когда зтот параметр опускается, контроль на правильность установки нужной магнитной ленты не производится и хранящиеся на ней файлы могут быть уничтожены при ошибочной установке катушки. Остальные параметры используются редко и поэтому рассматриваться в книге не будут (см. [3, 17]). Оператор // DLBL сообщает системе информацию о метках файлов на магнитных дисках. Формат этого оператора следующий: // DLBL имя файла, ['идентификатор файла'], [дата], [код], IDSF1 38
Параметры имя файла и дата аналогичны одноименным параметрам one- ратора // TLBL (см. выше). идентификатор файла — может содержать 1ч-44 алфавитно-цифровых символов, чем и отличается от одноименного параметра оператора // TLBL. код __ определяет тип организации файла (или метод доступа к его дан¬ ным): SD — последовательный файл (если код опускается, подразумевается это значение), DA — файл прямого доступа, ISC — индексно-последователь¬ ный файл (создание), ISE — индексно-носледовательпый файл (расширение, добавление, извлечение); DSF — параметр имеет смысл только для выводных файлов и определяет секретность создаваемого файла. При обработке таких файлов на устройство SYSLOG всегда выдается предупредительное сообще¬ ние. Для оператора Ц DLBL допускаются карты продолжения [3]. Оператор Ц EXTENT описывает участки, занимаемые файлом на магнитных дисках. Участок пакета дисков представляет собой совокупность нескольких смежных дорожек на пакете дисков, отведенных для размещения записей одного файла. Файл может располагаться как на одном или нескольких участках одного пакета дисков, так и на нескольких пакетах (многотомный файл). Операторы // EXTENT всегда должны следовать за операто¬ ром Ц DLBL, и их число должно соответствовать числу участков магнитных дисков, составляющих файл [3]. В случае работы с вводным или обновляемым одноучастковым файлом оператор Ц EXTENT может отсутствовать — это наи¬ более простой и часто встречающийся случай использования фай¬ лов на диске. Формат оператора // EXTENT следующий: Ц EXTENT [SYSXXX], [регистрационный номер тома], [тнп участка], [номер участка], [адрес участка], [ко¬ личество дорожек], [дорожка разделения цилиндра] SYSXXX — логическое устройство (Приложение В). Если параметр опу¬ щен, то используется логическое устройство, указанное в предшествующем операторе EXTENT (подробнее см. [3]). регистрационный номер тома — состоит из 0 алфавитно-цифровых симво¬ лов и указывает имя пакета дисков, па котором находится описываемый в опе¬ раторе участок. Если параметр опущен, то контроль правильности установки нужного пакета дисков не производится. тип участка — записывается в виде цифр 1, 2, 4, 8. 1 — определяет участок диска, предназначенный для размещения данных на неразделенных цилиндрах (обыкновенный участок); 2 и 4 определяют участки индексно-после¬ довательных файлов, причем 2 — для независимой области переполнения, а 4 — для размещения индекса; 8 — определяет участок, предназначенный Для размещения данных на разделенных цилиндрах. Разделенный цилиндр — это цилиндр магнитного диска, дорожки которого разделены для нескольких файлов. Если, например, необходимо на нескольких цилиндрах устройства НМД ЕС-5052 создать два файла, то первый из них может занимать с 0 по 4 до рожки каждого из отведенных цилиндров, а второй — с 5 по 9 также каждого из этих цилиндров [15]. Разделение цилиндров используется для организации 39
более быстрого доступа к файлам, хранящимся на одном пакете дисков и о-; рабатываемых одновременно (параллельная обработка)- Файлы, создаваемые на разделенных цилиндрах, должны иметь только последовательную органа, зацию. Если параметр тип участка опускается, то он предполагается равным I. номер участка — десятичное число от 0 до 255, определяющее порядко¬ вый номер участка в многоучастковом файле. Нумерация участков файлов, имеющих последовательную и прямую орга- нпзацию, должна начинаться с 0. Для этих же типов файлов данный параметр может быть опущен. Для индексно-последовательных файлов данный пара¬ метр опущен быть не может, так как участок размещения главного индекса помечается 0, а при его отсутствии в файле первый участок должен быть по¬ мечен 1 (подробнее c-м. [3]). адрес участка — состоит из 1л-5 десятичных цифр и указывает номер первой дорожки участка (относительно нулевой). Этот параметр может] быть подсчитан по формуле адрес участка = = 11 X (номер цилиндра) -f- (номер дорожки на цилиндре), где f 10 для дисков типа ЕС-5052, ЕС-5056, п — (20 для дисков типа ЕС-5061 [15]. количество дорожек — указывает протяженность участка файла в дорож¬ ках и состоит из 1 -г 5 десятичных цифр. дорожка разделения цилиндра — 1-ы2 десятичные цифры, указывающие номер последней из дорожек, занимаемых участком файла в случае разделе' нпя цилиндров. Номер первой дорожки берется из адреса участка [3]. Следует отметить, что при плотном расположении участков файла или файлов на диске для определения параметра «адрес участка» очень удобно пользоваться следующим правилом: на¬ чальный адрес последующего участка равен начальному адресу предыдущего плюс количество дорожек предыдущего участка. Во всех трех операторах определения меток файлов на маг¬ нитных лептах и дисках на месте опущенного параметра, если он не является последним в списке, обязательно должна ставиться запятая. Для резервирования специальной области оперативной памяти для обработки меток файлов используется оператор Ц LBLTYP. Эта область должна резервироваться либо во время редакти¬ рования программы, либо (только для самоперемещающихся про¬ грамм) непосредственно перед вызовом ее из библиотеки абсолют¬ ных модулей для исполнения. В первом случае оператор // LBLTYP должен предшествовать оператору вызова Редактора связей (// EXEC LNKEDT), во втором — вызову проблемной программы пользователя. При отсутствии оператора Ц LBLTYP программа пользова¬ теля может оказаться испорченной. Формат оператора Ц LBLTYP следующий: / IRlTYpfTAPE 1 // LBLTYI |NSj)(nn)} 40
ТАРЕ — указывается при обработке файлов на магнитной ленте, имею¬ щих метки (резервируется 80 байт в начале раздела). NSD(nn) — указывается при обработке индексно-последовательных фай¬ лов и файлов прямою доступа независимо от того, обрабатывает ли данная программа еще какие-нибудь файлы; пп — максимальное количество участков, используемых одним файлом (десятичное число). Когда пп задается явно, резервируется 84 + (20 X пи) байт [3]. Управляющие операторы, определяющие метки файлов на магнитных лентах и дисках, а также участки дисков, им отводн¬ ых __ ц TLBL, /У DLBL, // EXTENT — могут быть сохранены в операционной системе для дальнейшего многократного исполь¬ зования путем записи их в область стандартной или постоянной информации о метках файлов на цилиндре меток резидентного пакета дисков (аналог стандартного назначения физических устройств логическим при генерации супервизора ДОС см. § 1.3). Цилиндр меток — последний цилиндр резидентного файла на диске. Он состоит из одной области стандартной информации о метках файлов, общей для всех используемых разделов, трех областей постоянной и трех областей временной информации о метках файлов для разделов BG, F1 и F2 при работе ЕС ЭВМ в режиме мультипрограммирования (§ 1.2). Информация о мет¬ ках, помещенная в область стандартной информации STDLABEL, доступна любой программе в любом разделе до обновления этой области (§ 3.8). Информация о метках, помещенная в область постоянной информации PARSTD, доступна только для программ, выполняющихся в том разделе, в котором она была туда записана. Обновление этой области также не может быть одновременным: в каждом разделе может быть обновлена только та часть области постоянной информации, которая ему отведена (§ 3.8). Следует отметить, что информация о метках в стандартном режиме функционирования ДОС всегда записывается в область временной информации USRLABEL на цилиндр меток по прави¬ лу, рассмотренному на примере области постоянной информа¬ ции. Эта область обновляется каждый раз при обработке опера¬ тора // JOB. Поиск информации о метках файла с данным именем при нача¬ ле операции ввода—вывода производится в следующем порядке: область USRLABEL, PARSTD, STDLABEL [3, 17]. § ЗЛО. Системные переключатели. Специальные средства опе¬ рационной системы, позволяющие устанавливать различные режимы функционирования как системных программ, так и про¬ грамм пользователей посредством обработки стандартных управ¬ ляющих операторов, носят название системных переключателей, в ДОС ЕС к этой категории принадлежат операторы Ц OPTION, Н LOG, Ц NOLOG, // UPSI и директивы LOG и NOLOG. Оператор Ц OPTION дает возможность определять или видо¬ изменять некоторый набор функциональных возможностей ДОС, 41
заданный при генерации супервизора системы (§ 1.2). Скорректщ рованный набор режимов (системных ключей) остается в си. е только в течение одного задания и до тех пор, пока не встретится переключение на противоположный режим. Формат оператора // OPTION следующий: Ц OPTION режим 1 [, режим 2, ...] Каждый из рассмотренных ниже режимов может быть как назначен с помощью этого оператора, так и отменен. Для отмени определенного режима следует указать либо альтернативный режим, исключающий первый, либо перед его наименованием поставить отрицание N0 (эта возможность реализуется для ре¬ жимов, помеченных звездочками). Например, для отмены режима LOG в операторе следует указать параметр NOLOG. В операторе // OPTION можно указать следующие режимы: LOG* — на SYSLST выводятся все управляющие операторы и директивы ДОС ЕС; DUMP* — па SYSLST выводится дампииг оперативной памя¬ ти (ее распечатка в шестнадцатеричном представлении) в случае аварийного завершения программы; LINK* — перемещаемые модули программ, полученные в ре¬ зультате работы компилятора с какого-либо языка программи¬ рования, записываются на SYSLNK для последующей их обработ¬ ки Редактором связей; DECK* — перемещаемые модули программ выводятся на SYSPCII: если указан режим LINK, то режим DECK игнори¬ руется. за исключением компиляторов с языков АССЕМБЛЕР, ПЛ/1, КОБОЛ, ФОРТРАН-1 V; LIST* — исходный текст программы выводится на SYSLST ERRS* - компиляторы с языков БАЗИСНЫЙ ФОРТРАН КОБОЛ, ПЛ/1 и АЛГАМС выводят на SYSLST список всех оши¬ бок, содержащихся в исходном тексте программы; SYM* — компиляторы с языков ПЛ/1, КОБОЛ, АЛГАМС выводят на SYSLST таблицу всех встречающихся в программе идентификаторов, компилятор с АССЕМБЛЕРА выводит эт> таблицу на SYSPCH, если указан режим DECK; LISTX* — компиляторы с языков ФОРТРАН-1 V, II Л/1> КОБОЛ и АЛГАМС выводят на SYSLST построенный ими по тек¬ сту программы перемещаемый модуль в форме, приближенной к языку АССЕМБЛЕР; XREE* — компиляторы с языков Г1Л/1, АССЕМБЛЕР и КОБОЛ выводят на SYSLST таблицу перекрестных ссылок; CATAL — вызывается каталогизация программы в библиоте¬ ку абсолютных модулей по завершении работы Редактора связей; режим CATAL включает в себя LINK; 48U — определяет 48-символьный алфавит на SYSIPT для ПЛ/1; 601 — определяет 60-символьный алфавит на SYSIPT для ПЛ/1; 42
SYSPARM — задает строку из 8 алфавитно-цифровых симво¬ лов, заключенных в апострофы, для макрогенератора компиля¬ тора АССЕМБЛЕР; возможность использования этого оператора дределяется во время генерации супервизора; USRLABEL, PARSTD, STD LABEL — вся последующая иНформация о метках файлов записывается на цилиндр меток в области USRLABEL, PARSTD или STDLABEL соответствен¬ но (§ 3.7). Смысл и употребление операторов // LOG и // NOLOG пол¬ ностью совпадают с одноименными режимами оператора Ц OPTION, а именно // OPTION LOG и // OPTION NOLOG. После первого оператора все стандартные операторы и директивы потока задания ДОС выводятся на устройство SYSLST, второй же оператор отменяет эту возможность. Директивы LOG и NOLOG являются директивами-аитаго- нистами. Первая из них задает режим ДОС, при котором все стан¬ дартные операторы и директивы, следующие за ней, выдаются на устройство SYSLOG. Вторая — отменяет этот режим. Следует подчеркнуть, что эти режимы не отменяются при обработке опера¬ торов Ц JOB и /&, т. е. действуют на несколько заданий. Операторы и директивы LOG и NOLOG параметров не имеют и записываются по общим правилам. Оператор Ц UPSI предназначен для модификации байта про¬ граммных переключателей, находящегося в области связи супер¬ визора. Каждый из разделов, в котором обработка заданий ведется в непрерывном (пакетном) режиме под управлением про¬ граммы Управление заданиями, имеет свою область межпро¬ граммной связи. Пользователь должен знать, что передавать информацию через эту область от одного шага задания к другому можно только в пределах одного задания: при обработке системой оператора Ц JOB область связи, включая и байт UPSI, обнуляется. Формат оператора Ц UPSI следующий: Ц UPS1 конфигурация битов конфигурация битов — состоит из 1-f 8 символов «О», «1» и «X». Каждый символ соответствует одному биту байта UPSI. Бит, которому соответствует «X», не изменяется. Если параметр содержит менее 8 символов, то крайние правые биты не изменяются. § 3.11. Оператор копирования. После обработки или записи в файл SY'SOPT рассмотренных выше начальных операторов за¬ дания, выполняемого под управлением диалоговой системы, в него должен быть помещен основной текст этого задания. Как указывалось выше, поток данных задания может считы¬ ваться системой с перфокарт, перфоленты, диалогового устрой¬ ства, а также личной и системной библиотек SL. Информация из этих библиотек переносится в файл заданий по оператору копирования (// COPY), занимая его место во вход¬ ном потоке. Эта процедура называется процедурой копирования. Следует подчеркнуть, что при поиске необходимого набора 43
данных (книги) сначала просматривается личная библиотека, а только затем системная. Поэтому если в обеих библиотеках встречаются книги с одинаковыми именами, то в файл заданий будет включена книга, хранящаяся в личной библиотеке. Оператор копирования имеет следующий формат: // COPY]— ^ ^ | имя 1 книги [(хххх, уууу)] [,... (5)1 (лодоиолиотскчи w подбиблиотека — код подблблпотекн SL, состоящий на одного символч (цифра от 0 до 9 или латинская буква от А до Z). При отсутствии этого парс:- метра диалоговая система генерирует значение кода, равное А. имя книги — имя набора данных пз 1 -ь 8 алфавитно-цифровых знаков в библиотеке. (хххх, уууу) — номер начальной и конечной записи /-й книги при еч выборочном копировании; хххх и уууу — десятичные числа пз четырех цифр При кодировании этого параметра незначащие нули опускать нельзя. Максимальное количество параметров оператора // COPY равно 5. Наборы данных из библиотеки SL будут включены в фай;». SYSOPT в том порядке, в котором перечислены их имена в опера торе копирования. Если диалоговая система не найдет ни в личной, ни в систем¬ ной библиотеках хотя бы одной из указанных книг, то выдается информационное сообщение 1M01D с указанием имени отсутству¬ ющей книги. Синтаксические ошибки в операторе Ц COPY при¬ водят к выдаче сообщения 1S60D. Как после одного, так и после другого сообщения система входит в связь с диалоговым устрой¬ ством и пользователь получает возможность исправить рассматри¬ ваемый оператор (Приложение D). § 3.12. Системный макрогенератор и вторичные операторы диа¬ логовой системы. В библиотеках SL могут храниться не только целые задания или их части, но и системные макроопределения — набор текстовых данных, набор вторичных операторов копирова¬ ния, операторов перехода и параметров системного макрогенера¬ тора. Если перед процедурой копирования пользователь присвоит значения параметрам с помощью одного или нескольких операто¬ ров определения данных (// DD), то при ее выполнении по систем¬ ному макроопределению будет построен желаемый текст, получен¬ ный в результате замены параметров на их значения и обработки операторов генераторного перехода. Итак, системное макроопределение, обязательно хранящееся в одной из библиотек SL, может содержать, помимо основного текста и параметров, операторы, называемые вторичными. Признаком вторичного оператора является знак открывающей кавычки «< в первой его позиции и следующий за ним пробел. Вторичные опе¬ раторы делятся на операторы системного макрогенератора и на независимые операторы. 44
Следует подчеркнуть, что последние обрабатываются только яри копировании набора данных из библиотеки в полном объеме /с з.И). От наличия операторов Ц DD они не зависят. К операторам системного макрогенератора относятся операто¬ ры генераторного перехода — условный (< AIF) и безусловный— (С AGO), оператор-метка (< LAB) и оператор коррекции зна¬ чения параметров (< SET). К независимым операторам относятся вторичный оператор копирования (< COPY), оператор обновления (< REP) и опера¬ тор конца файла (< EOF). Все вторичные операторы (за исключением < LAB) могут содержать параметры системного макрогенератора и перед ис полнением корректироваться или вообще создаваться согласно их значениям. Итак, процесс генерации макрорасширения управляется и на уровне данных, и на структурном уровне и потому является весь¬ ма гибким. § 3.13. Независимые вторичные операторы. Оператор обновле¬ ния < REP предназначен для установления связи ЭВМ с диалого¬ вым устройством при выполнении процедуры копирования. Пользователь во время паузы, вызванной данным оператором, может оперативно изменить одну строку копируемой книги, поме¬ щаемую в файл SYSOPT вместо данного оператора. Перед установ¬ лением связи с диалоговым устройством его поле форматируется сообщением типа «строка» (§ 2.5 и рис. 3). Причем имеется воз¬ можность одновременно вывести дополнительный напоминающий комментарий. Формат оператора обновления следующий: < REP ['комментарий'] комментарий — сообщение пользователя, заключенное в апострофы, длиной не более 32 символов. Включается в строку, форматирующую поле диалогового устройства. Параметр необязательный. При его ошибочной за¬ писи информационное сообщение не включается в форматирующую строку. Вторичный оператор копирования << COPY предназначен для промежуточного копирования набора данных из библиотеки SL (личной или системной), исполняемого до завершения основного копирования, вызванного системным оператором // COPY (§ 3.11). Каждая книга может иметь один или несколько таких операторов. Это дает возможность пользователю оптимально разбивать свой достаточно большой набор данных (например, программу на ис¬ ходном языке для отладки) на несколько книг-блоков, что упро¬ щает работу с диалоговой системой, особенно при его коррекции. Первый такой блок является вызывающим, он последовательно переносит в файл SYSOPT все вызываемые блоки, заданные в его теле с помощью операторов < COPY. Вызывающий блок копируется из библиотеки при обработке системного оператора // COPY (§ 3.11) и называется вызывающим блоком нулевого порядка. 45
у/7/7а0ля/ещег0 ff/re/ramff/ra \ Рис. 6. Схема формирования файла заданий при обработке вторичных операторов копиро¬ вания Вызываемый блок, в свою очередь, может являться и вызываю¬ щим, т. е. также содержать операторы < COPY. В этом случае он будет являться вызывающим блоком первого порядка, второго и т. д. Порядок формирования файла заданий при обработке вто¬ ричных операторов копирования пояснен на рис. 6. Следует подчеркнуть, что диалоговая система обрабатывает вызывающие блоки только до 9-го порядка включительно. При 40
нарушении этого требования, а также при отсутствии в библиоте¬ ках SL набора данных, имя которого присутствует в операторе ^ COPY, задание снимается с обработки и все оставшиеся отно- сящиесн к нему данные будут пропущены до обнаружения опера¬ тора /&. В первом случае будет выдано сообщение 1М04С, во вто¬ ром — 1М01С с указанием имени отсутствующей книги (Прило¬ жение D). Оператор вторичного копирования записывается в следующем виде: С COPY (— ^ ^ ) имя книги I по д био л потека.) Смысл и использование параметров полностью аналогичны си¬ стемному оператору // COPY. В операторе < COPY может быть указан только одинпараметр (в отличие от системного оператора). Оператор < EOF является аналогом стандартного оператора конца файла /*. При каталогизации набора данных в библиотеку исходных модулей оператор /* превращается в оператор < EOF. При выпол¬ нении копирования набора данных в файл заданий происходит обратное преобразование: < EOF -W *. При формировании заданий на каталогизацию без использо¬ вания системного оператора Ц CATALS, а также для обновления набора данных в библиотеке во входных данных оператор / * обязательно должен быть заменен на оператор < EOF. Формат этого оператора следующий: < EOF Следует еще раз подчеркнуть, что при задании в системном опе¬ раторе Ц COPY' функции выборочного копирования, независимые вторичные операторы не обрабатываются и заносятся без измене¬ ния в файл SY7SOPT. § 3.14. Системные макроопределения и оператор определения данных. Параметрами системного макроопределения называются специальные изменяющиеся поля текста в наборах данных библио¬ тек исходных модулей. Эти поля помечаются идентификаторами, состоящими из знака & и латинской буквы от А до R включитель¬ но (всего 18 параметров). Идентификатор, присутствующий в тексте макроопределения, заключенный в квадратные скобки, является параметром. Для присвоения этим параметрам определенных текстовых констант (состоящих из 1 8 символов) служит оператор определения дан¬ ных // DD. При генерации текста условные изображения параметров за¬ меняются их реальными значениями. Если используемый параметр не получит реального значения, то при обработке макроопределения он будет исключен из текста (рис. 7). Следует отметить, что включение в поток задания оператора 47
pau/r J/r/акцц /7ер/б/и a/repamap //ВВ ff/770/70(j 0/70/70/770/7 //Щ //амехехие Jxavexa/: S. К 0/70/70/770/76/ I 7 l //OHA=BA^,iB=£rEM_,iK=Z /ахХ6/Х [ п. , . //DD&K-^tt &R= PALLADA /^аедлажекие мах/?00/7/7вде/те' j хил, хаа/огщегаХ 0Л 0 0U0XU0/770-1 хе SL 00/0/76/770/77 /70-1 /а/776/ махра геЛ /zepamppa - I - ////рармацах > j ах асам ал & [ ^ }, | ~ «^ДОС/ЕСы ДИАЛОГО[iA] СИ|)в][д]и[4R][«k]u,[A^* ffCK/7/О </а0/77сл uj текста *■-ДОС/ЕС^ДИАЛОГОВАЯ^ СИ CTEMA^tbPALLABA^ft ^ * ДА &5 ЯК *R &К Рис. 7. Принцип обработки текста системным макрогенератором Параметру &Р значение не присвоено; — знак пробела // DD автоматически сообщает диалоговой системе, что все ниже¬ следующие операторы // COPY должны быть обработаны с по¬ мощью системного макрогенератора. При этом как отдельные пред¬ ложения, так и целые наборы данных библиотек SL, не содержа¬ щие ни его параметров, ни его операторов, будут включены в файл заданий без изменения. Если при подстановке реальных значений параметров длина какого-либо предложения книги превзойдет допустимую длину (72 байта), то оно усекается, а в поле иденти¬ фикации (73—80 байты) появляется сообщение об ошибке: ♦ ERR-01* (§ 2.5, Приложение D). Всегда следует иметь в виду, что при несоблюдении правил записи параметров в тексте они си¬ стемным макрогенератором не обрабатываются и помещаются в файл заданий в первоначальном виде. С помощью параметров, как указывалось выше, может быть изменен, помимо текста, и любой из вторичных операторов диало¬ говой системы, кроме оператора < LAB (§ 3.12). Формат оператора определения данных следующий: // DD идентификатор-'значение' [, идентификатор- значение , ... ©] идентификатор — совокупность знака & и латинских букв A,B,C,D,E, F,G,H,I,J,K,L,M,N,0,P,Q,R. Использование других букв приводит к выдаче сообщения об ошибке 1S71D. значение — набор 1 -f 8 любых алфавитно-цифровых символов (кроме апострофа), заключенный в апострофы, присваиваемый как значение указан¬ ному слева идентификатору. Превышение максимальной длины этого парамет¬ ра приводит к выдаче сообщения 1S72D с указанием идентификатора. 48
В одном операторе // DD число групп «идентификатор — значе¬ ние» не должно превышать 5, поэтому для определения большего числа идентификаторов нужно пользоваться несколькими подоб¬ ными операторами, следующими друг за другом. Значение, при¬ сваиваемое параметру последующим оператором // DD, затирает его предыдущее значение (рис. 7). Различные синтаксические ошиб¬ ки при записи оператора // DD приводят к появлению сообщения об ошибке 1S60D. Как видно из кодов сообщений об ошибках — 1S71D, 1S72D, 1S60D.— все они приводят к установлению связи с диалоговым устройством для их исправления пользователем. Можно добавить, что по оператору // DD никакой дополни¬ тельной информации в файл SYSOPT не записывается. § 3.15. Операторы генераторного перехода. Операторы систем¬ ного макрогенератора, так же как и его параметры, предназна¬ чены для генерации необходимого набора данных по макроопре¬ делению. Эти операторы обеспечивают генераторный переход, т. е. обеспечивают выбор одного блока книги из пескольких и включают его в файл заданий. Генераторный переход осущест¬ вляется с помощью трех операторов: < AIF — оператора услов¬ ного перехода, < AGO — оператора безусловного перехода, < LAB — оператора - метки. В операторе условного перехода сравниваются два параметра системного макрогенератора и, в зависимости от знака операции, производится генераторный переход на метку, определенную в по¬ ле параметра. Это обозначает, что все последующие предложения макроопределения будут пропущены (т. е. не переписаны в файл заданий) вплоть до обнаружения оператора-метки, в поле пара¬ метра которого указан тот же символ, что п в операторе условного перехода. Так же функционирует и оператор безусловного пере¬ хода, правда анализа параметров в нем не производится. Формат операторов системного макрогенератора следующий: <CAIF (идентификатор| | идентификатор) метка <CAGO метка <7 LAB метка идентификатор — совокупность знака & и латинских букв A,B,C,D,E, F,G,H,I,J,K,L,M,N,0,P,Q,R. Использование других букв приводит к ис¬ ключению оператора < AIF из обработки и записи его в файл заданий, причем в 73-80 байты этого оператора вместо идентифицирующего кода и порядково¬ го номера заносится сообщение об ошибке: *ERR-03*. Ошибка в синтаксисе оператора < AGO приводит к тем же результатам с занесением сообщения: *ERR-02*. Идентификатору присваивается значе¬ ние операторов // DD (§ 3.12). = = — знак, определяющий, что генераторпый переход на метку осу¬ ществится при равенстве значений двух системных параметров. |Г~ = — знак, определяющий, что генераторпый переход на метку осу¬ ществится при неравенстве значений двух системных параметров. 49
метка — любой алфавитно-цифровой знак. В операторах < AIF и < AC.0 одна н та же метка может использоваться многократно. Определяется ж« метка только один раз с помощью оператора < LAB. Рассмотрим пример простейшей альтернативной задачи, ре¬ шаемой с помощью генераторного перехода (генераторные пере¬ ходы показаны стрелками). Пусть имеется макроопределение всегда 2А ЗА А В AIF (&С = BLOCK 1Л BLOCK BLOCK AGO L LAB # - BLOCK BLOCK BLOCK LAB L С I) &D) # если & С = & D IB 2B 3B При равенстве значепий параметров &С и &D в процессе рабо ты системного макрогенератора в файл заданий заносится следую¬ щий набор данных, представленных последовательно двумя столб¬ цами. *А *В *BLOCK 1В *BLOCK 2В *BLOCK ЗВ *С *D Если &С и &D имеют неодинаковые значения, то результат ге¬ нераторного перехода будет следующим: *А ♦BLOCK 1А ♦BLOCK 2A ♦BLOCK ЗА *C *D Схема функционирования макрогенератора диалоговой си стемы при обработке оператора копирования представлена ш рис. 8. § 3.16. Оператор коррекции значения параметров. Часто при написании системных макроопределений бывает удобно вычис лять значения дополнительных параметров или изменять их в про¬ цессе выполнения процедуры макрогенерации. Для этой цели служит оператор макрогенератора <С SET 50
Его формат следующий: Г__1 [выражение | < SET идентификатор (и, 1) j . г j'константа' * ('идентификатор'] идентификатор — совокупность знака & и латинской буквы от Л до Ii включительно. Использование других букв приводит к исключению операто¬ ра <SET из обработки и записи его в файл заданий, причем в 73—80 байты этого оператора заносится сообщение об ошибке *ERR-03*. (n, 1) — помер начального байта и длина пересылаемой строки из вычис¬ ленного выражения или константы; 1 < и < 8 и 1 ^ 1 ^ 8. При несоблю¬ дении условия 1 + и—1<8 выдается сообщение об ошибке +ERR-02*. При отсутствии данного параметра пересылаются все 8 байт (и = 1 1 = 8). — или : — знак, определяющий функцию оператора < SET. При «=» идентификатору присваивается результат вычисления выражения или зна¬ чения константы. При «:» (двоеточие) идентификатор принимает значение зна¬ ка вычисленного выражения либо нуля. т. е. «-}-», «—», «0». выражение —[совокупность идентификаторов, десятичных целых поло¬ жительных констант и арифметических знаков «-[-», «—», «*», «/», где «*» — знак умножения 'константа' 'идентификатор' — заключение константы или идентификатора, стоя¬ щих справа, в кавычки определяет действие оператора < SET как полную или частичную пересылку их значения. Рассмотрим характерный случай использования оператора < SET. Пусть в тексте программы на ФОРТРАНЕ требуется определить массивы А размерностью N и В размерностью N (N + 1)/2. Макроопределение будет выглядеть следующим образом: С ПРИМЕР < SET & М = & N + 1 < SET &M = &N*&M/2 DIMENSION А ([& N]), В([&М]) STOP END Если бы в данном примере оператор < SET не использовался, то пришлось бы предварительно вычислить размерность массива и задать значение параметра &М в операторе // DD. При составлении арифметического выражения следует всегда помнить одну особенность его вычисления: последовательность операций определяется порядком их следования, а не приорите¬ том умножения и деления (так как скобки в выражении, стоящем за знаком равенства, не допускаются). Поэтому, лучше не использовать в одном выражении знака 52
<(д-» и «—» совместно со «*» и «/», а разбивать его на несколько частей, как показано в примере. Использование в операторе </ SET недопустимых знаков, а также вычислительные ситуации — деление на нуль и пере¬ полнение (результат занимает более 8 байт, т. е. больше 99999999) — приводят к прекращению его обработки и выдаче сообщения *ERR-04*. При отрицательном значении вычисленного выражения выдается сообщение *ERR-05*. Эти сообщения об ошибках всегда заносятся в 79—80 байты оператора (Приложение Е). Использование других модификаций оператора </SET подробно рассмотрено в § 4.14 п 4.15. § 3.17. Оператор разметки. В диалоговой системе предусмот¬ рена возможность переключения с непрерывного режима ввода в диалоговый не только по окончании входного потока данных, т.е. при переходе данного устройства ввода в состояние не готово, но и с помощью специального оператора — оператора // STRING. После его считывания на диалоговое устройство выводится строка, форматирующая его поле (рис. 3), и устанавливается диа¬ логовый режим ввода данных. Оставшаяся часть задания продолжает считываться в непре¬ рывном режиме после ввода одной записи этого задания с диалого¬ вого устройства. Для ввода нескольких записей в диалоговом режиме следует либо после оператора Ц STRING перевести соот¬ ветствующее устройство ввода перфокарт или перфоленту в со¬ стояние не готово. нажав кнопку СТОП, либо в задании преду¬ смотреть столько операторов //STRING, сколько дополнительных записей требуется добавить с диалогового устройства. Последний способ имеет смысл использовать только в случае использования дисплея в качестве устройства SYSLOG, так как вывод формати¬ рующей строки на пультовую пишущую машинку занимает много времени. Оператор // STRING имеет следующий формат: // STRING ['комментарий'] комментарий — сообщение пользователя, заключенное в апострофы, длиной не более 32 символов. Включается в строку, форматизирующую иоле диалогового устройства. Параметр необязательный. При его ошибочной за¬ писи информационное сообщение пе включается в форматизирующую строку. § 3.18. Коррекция файла заданий. При вводе заданий с диало¬ гового устройства пользователь может допускать ошибки — опечатки. Может случиться и досадный сбой устройства ввода. Обычно такие ошибки исправляются сразу же (в автономном ре¬ жиме диалогового устройства). Что же делать, если пользователь обнаружил ошибку в записи задания уже после того, как выдал команду исполнения (КТ на пультовой пишущей машинке) и эта запись уже помещена в файл заданий? Существуют три возможности коррекции этого файла в процессе ого формирования. 53
1. Стереть последнюю запись задания с помощью оператор;: // RETRY. 2. Стереть весь сформированный файл с помощью оператора // CANCEL. 3. Произвести полную реинициализацию системы с помощью оператора // REINIT. Выбор предпоследнего или последнего вариантов коррекции в основном определяется привычкой пользователя. Но в случае, если был ошибочно установлен режим MULTY с помощью опера¬ тора// DETUR, т. е. была сделана попытка сформировать для раз¬ делов F1 или F2 такое задание, которое в них исполняться не сможет, единственной возможностью исправить такую ошибку является полная решшциализация системы. Указанные операторы позволяют не исполнять заведомо невер¬ но сформированное задание для реинициализации диалоговой сис темы, что экономит не только машинное время, но и уменьшает нервное напряжение пользователя. Операторы коррекции файла заданий параметров не имеют и записываются так: // RETRY // CANCEL // REINIT После ввода оператора // RETRY выводится информационное сообщение 1D10I, а после оператора // CANCEL — 1D11I (Прило¬ жение D). Эти сообщения подтверждают выполнение запрошенных функ¬ ций коррекции. Реакция системы на ввод оператора // REINIT аналогична реакции на ввод оператора /& в режиме SCRIB, т. е. происходит перезагрузка ядра диалоговой системы, которая при этом всегда оформляет стандартным образом конец предыдущего задания и готовится принять следующее. При возможности нужно всегда отдавать предпочтение опера- Т0РУ // CANCEL перед // REINIT, так как он обрабатывается много скорее. § 3.19. Стандартные операторы управления пакетной обра¬ боткой. Для того чтобы временно приостановить исполнение мно¬ гошагового задания в стандартном режиме для выполнения опре¬ деленных действий (например, замена магнитной ленты или диска) или получить напоминающую информацию об этом действии, стандартная система ДОС ЕС представляет пользователю следую¬ щие операторы: комментарий, PAUSE и STOP. Оператор комментария предназначен для вывода на пультовую пишущую машинку (SYSLOG) любого сообщения и имеет вид * сообщение пользователя Звездочка в первой позиции записи задания и является единственным признаком этого оператора [3, 17]. 54
Оператор PAUSE организует приостановку пакетной обработ¬ ки задания в том разделе, в котором он был считан. Формат его следующий: Ц PAUSE [комментарий] После ввода этого оператора система встает в диалоговую связь с устройством SYSLOG. Когда все запрошенные заданием действия выполнены, пользователь может продолжить обработку своего задания, хранящегося на файле SYSOPT, нажав на кнопку КТ и этим прекратив связь с программой Управление заданиями [3,17]. Директива STOP применяется в мультипрограммном режиме эксплуатации ДОС ЕС. Она приводит к остановке пакетной обра¬ ботки заданий в своем разделе. Возобновить ее можно только по директиве программы Внимание — START — с указанием необ¬ ходимого раздела. Директива параметров не имеет и записывается следующим образом: STOP Подчеркнем, что при исполнении заданий в разделах с высшим или средним приоритетом выполнения операций (по назначению F1 или F2) в задании обязательно встречается директива STOP (рис. 2, § 2.2). Это создает необходимую паузу для обновления файла заданий этого раздела [3, 17]. Следовательно для запуска сформированного задания в дан¬ ном разделе пользователь должен войти в связь с программой Внимание, а затем выдать соответствующую директиву START F1 или START F2 (§ 4.6). Описанную процедуру удобнее всего исполнять после выхода ЭВМ в состояние ожидания перед вводом нового задания (§ 4.7). § 3.20. Оператор исполнения программ. Каждый шаг сфор¬ мированного на файле SYSOPT задания, подготовленного для вы¬ полнения под управлением стандартной системы ДОС ЕС, всегда заканчивается вызовом на исполнение какой-нибудь программы, хранящейся постоянно или временно в библиотеке GL. Оператор программы Управление заданиями, осуществляю¬ щей эту функцию, выглядит следующим образом: Ц ЕХЕС [имя программы] имя программы — необязательный параметр. Используется при вызове На исполнение постоянно хранящихся программ из библиотеки CL. Состоит из набора алфавитно-цифровых символов, первый среди которых обязательно латинская буква или знаки Q. @ л . Длина имопп программы не может превышать 8 байт [3, 17]. Наиболее часто используемые программы могут быть вызваны на исполнение следующими операторами. 1- Ц EXEC FFORTKAN — компилятор с языка ФОРТРАН-IV. 2. Ц EXEC PL/1 — компилятор с языка 11JI/1. 3. // EXEC ASSEMBLY — компилятор с языка АССЕМБЛЕР. 55
4. Ц EXEC ALGAMS — компилятор с языка ДОС-АЛГАМС. 5. Ц EXEC MAINT — программа Библиотекарь (коррек¬ ция исходных модулей). 6. Ц EXEC SSERV — сервисная программа обслуживания библиотек SL. 7. Ц EXEC RSERV — сервисная программа обслуживания библиотек RL. 8. Ц EXEC DSERV — сервисная программа распечатки ог¬ лавлений библиотек. 9. Ц EXEC TSERV — сервисная программа для создания и работы с библиотекой данных на магнитной лепте. 10. Ц EXEC LSERV — сервисная программа распечатки цилиндра меток. И. Ц EXEC LNKEDT —программа Редактор связей. За тремя основными программами диалоговой системы, вызы¬ ваемыми в режиме считывания управляющих операторов с файла постоянных директив (рис. 2), закреплены следующие имена: nPALLFOH — для раздела BG (основная мониторная про¬ грамма), FGPWAIT1 — для раздела F1 (программа опроса ключа го¬ товности), FGPWA1T2 — для раздела F2 (программа опроса ключа го¬ товности). При написании сложных системных многофазовых программ (т. е. вызываемых для исполнения из библиотеки CL не сразу, а по частям) нужно помнить о том, что время их вызова на испол¬ нение можно значительно уменьшить, если соблюдать следующие правила: первым символом в именах программ, исполняющихся в раз¬ деле BG, является П; первыми символами в именах программ, исполняющихся в раз¬ делах F1 или F2, являются «FGP». Все это приводит к занесению имен подобных программ в так называемое транзитное оглавление, которое при выполнении оператора // ЕХЕС просматривается в первую очередь. Правда, этим не следует злоупотреблять, так как объем транзитного оглав¬ ления ограничен. § 3.21. Оператор окончания задания. Последней записью каждого задания, исполняемого под управлением диалоговой си¬ стемы, обязательно должен быть оператор окончания задания /&. Этот оператор приводит к формированию заключительных за¬ писей на файле заданий (закрывает его) и переводит систему ДОС ЕС в стандартный режим функционирования. Таким образом, для того, чтобы сформированное в файле SYSOPT для раздела BG задание начало бы исполняться, следует ввести оператор /&. 56
Если выполнялась сервисная функция (§ 3.22), не приводящая к формированию файла заданий для раздела BG, или задание формировалось для исполнения в других разделах, то обработка оператора /& приводит к реинициализации диалоговой системы для ввода следующего программного задания. Оператор /& диалоговой системы полностью совпадает по на¬ писанию с аналогичным оператором программы Управление за¬ даниями: /& [комментарии] В концевые записи файла заданий обязательно заносится ком¬ бинация из двух стандартных операторов: /& // JOB PALLADA Совокупность этих операторов полностью завершает испол¬ няемое задание и готовит ДОС к принятию и исполнению следую¬ щего. Этот процесс включает в себя восстановление постоянных или стандартных назначений для логических устройств раздела, очистку дорожки временной информации о метках файлов раздела на цилиндре меток. Кроме того, в случае использования в закон¬ чившемся задании программы Библиотекарь данные операторы активизируют ее заключительную часть, которая обновляет (в случае необходимости) транзитное оглавление [5], т. е. заносит в него имена новых программ, начинающихся со знака П или символов «FGP», и выдает на SYSLST таблицу состояния систем¬ ных библиотек. § 3.22. Сервисные функции диалоговой системы. Кроме ос¬ новной функции — формирования программного задания в файле SYSOPT, диалоговая система может выполнять еще ряд действий над входным потоком данных, а именно осуществлять его вывод на алфавитно-цифровую печать, перфокарты и перфоленту. Понятие «входной поток данных» включает в себя смешанное задание из информационных записей, поступающих с перфокарт, перфоленты, библиотек исходных модулей и диалогового устройст¬ ва. На перечисленные устройства книги из библиотек SL могут выводиться как в режиме копирования, так и в режиме системной макрогенерации. К сервисным операторам относятся: оператор перенумерации // SIGNA, оператор // ACTION SCRJB и оператор управления выводом // SCRIB. Отметим, что оператором перенумерации можно пользоваться и в стандартном режиме функционирования диалоговой системы — Режиме формирования файла заданий. Этот оператор включает механизм перенумерации входных записей от нуля, а также изме¬ няет поле идентифицирующей информации (73 ж- 76 байты) этих записей. Оператор Ц SIGNA должен стоять в начале задания после всех операторов диалоговой системы (кроме // COPY,
Ц ACTION SCRIB и // SCRIB), но перед первой записью задания помещаемой в выводной поток данных (в стандартном режиме это файл SYSOPT). Формат оператора Ц SIGNA следующий: Ц SIGNA идентификатор идентификатор — четыре произвольных знака, помещаемых в 73 -о -ь 76 байтах каждой записи входного потока данных. Оператор Ц ACTION с режимом SCRIB предназначен, как указывалось в § 3.6, для вывода на SYSLST входного потока ин формации до оператора / & включительно. Оператор // SCRIB позволяет управлять назначением уст¬ ройств для выводного потока данных. Этот оператор в отличие от Ц ACTION SCRIB при задании определенного параметра (ЕХ) сохраняет работоспособным оператор Ц COPY, т. е. поддерживает обслуживание библиотек исходных модулей. Его формат следующий: // SCRIB параметр [,параметр 1 [,параметр] параметр — код, состоящий из двух знаков. Принимает следующие зна¬ чения: ЕХ — сохранение работоспособности оператора // COPY, LS — назначение для вывода устройства SYSLST, CD — назначение для вывода устройства вывода перфокарт, LI3 — назначение для вывода устройства вывода перфоленты. Ошибочное задание других кодов приведет к выдаче сообщения 1S60D (Приложение D). Оператор // SCRIB с режимами ЕХ и LS чаще всего использу¬ ется для отладки системных макроопределений. Режимы ЕХ и CD или ЕХ и LB в основном используются для создания копии отлаженных программ на перфокартах или пер¬ фоленте (как в режиме копирования, так и в режиме макрогене¬ рации). Напомним еще раз, что системный макрогенератор включается после ввода оператора Ц DD. Этот оператор обязательно должен предшествовать оператору // SCR IB, в противном случае он обра ботан не будет. Для вывода входного потока дапных на перфокарты и/или перфоленту в режиме дублирования (без обработки оператора Ц COPY) следует указывать только коды желаемых выводных устройств, а именно LS, CD и LB. Допускается вывод входного потока данных как на одно, два. так и на все три поддерживаемые системой устройства. Чтобы пронумеровать выводные перфокарты, следует перед оператором Ц SCRIB CD ввести оператор Ц SIGNA. Использование оператора Ц SIGNA для нумерации записей на выводной перфоленте лишено смысла, так как с целью макси малыш компактного расположения информации на нее выводится 58
только начальная информативная часть данных (незначащие кон- цевыепробелы и поле идентифицирующей информации опускаются). § 3.23. Общие правила формирования задания. Обобщим оче¬ редность использования управляющих операторов ДОС ЕС и диа¬ логовой системы для формирования различных программных за¬ даний. К начальным операторам в первую очередь относятся следую¬ щие: // JOB NAME (§ 3.4), // ACTION с режимами SYSTEM, DISPLY (§ 3.6), // DETUR (§ 3.5), // FIANT (§ 3.7), // SIGNA (§ 3.22) и// DD (§ 3.14). В случае отсутствия оператора // JOB, как указывалось в § 3,4, задание получает имя «NO^NAME». Порядок следования остальных операторов в этой группе безразличен. Ко второй группе относятся операторы, выполняющие про¬ цедуру открытия файла SYSOPT, модифицированную операторами первой группы. К ним относятся: //CATALR (§ 3.8), // CATALS (§ 3.8), // SCR IB (§ 3.22) и // ACTION с режимом SCR IB. В третью группу относятся операторы управления формирова¬ ния файла SYSOPT: // COPY (§ 3.11), вторичные операторы си¬ стемного макрогенератора (§ 3.12, 3.15, 3.16), // ACTION с режи¬ мом CARD, а также любые данные из входного потока задания, в том числе и стандартные операторы и директивы ДОС ЕС. Эти операторы используются согласно желаемой компоновке задания, причем оператор // ACTION CARD может использовать¬ ся только среди стандартных управляющих операторов ДОС, но никак не среди потока данных (§ 3.6). К четвертой группе относится оператор конца задания /&. Этот оператор является последним оператором задания (§ 3.21). К пятой группе относятся так называемые независимые опера¬ торы, исполнение которых допускается в любой момент, так как не приводит ни к установке новых режимов, ни к занесению инфор¬ мации в выходной поток данных. Это операторы // ACTION с режимами LIST, NOLIST, LOGX, NOLOGX (управление листин¬ гом) и// STRING (§ 3.17). К шестой группе относятся операторы коррекции файла зада¬ ний в диалоговом режиме — операторы Ц RETRY, // CANCEL и // REINIT (§„3.18). Использование при составлении задания этих правил обеспе¬ чит правильную его обработку и выполнение иод управлением диалоговой системы PALLADA и операционной системы ДОС ЕС.
Глава IV ЭКСПЛУАТАЦИЯ ДИАЛОГОВОЙ СИСТЕМЫ PALLADA § 4.1 Общие положения. Рассмотрим, как практически поль¬ зоваться системой. Пусть некоторый вариант диалоговой системы сгенерировав и записан на резидентном пакете дисков. В самом начале работы пользователь должен уметь инициали¬ зировать систему, т. е. произвести процедуру первоначальной за¬ грузки, правильно и в соответствии с потребностями заданий рас¬ пределив оперативную память ЭВМ и переменив, если необходимо, приоритеты разделов. Дальнейшая эксплуатация системы целиком зависит от регла¬ мента работ ЭВМ в данный день. Это может быть и отладка новых (или коррекция старых) программ, и запуск продолжительного многочасового счета, и проведение управляемых экспериментов,, и вывод на перфокарты или перфоленту готовых программ и т. д. О том, как наиболее эффективно использовать ЭВМ при соче тании таких разнообразных заданий, было рассказано в § 3.5 и 3.7. Целью настоящей главы является научить пользователя но¬ вым, может быть непривычным, приемам отладки и написания своих программ. В общем случае программные задания, обрабатываемые с по¬ мощью диалоговой системы, делятся па простые и сложные. К простым относятся задания, данные которых полностью по¬ ступают только с перфокарт, перфоленты и диалогового устрой¬ ства — это первичный режим использования ЭВМ. К сложным относятся такие задания, данные которых в ос новном хранятся в личной или системной библиотеках исходных модулей либо в естественной форме, либо в виде системных макро¬ определений (§ 3.14). Эти задания могут быть сформированы диало¬ говой системой как из одной, так и из многих книг, связанных или не связанных между собой вторичньши операторами копи¬ рования. Таким образом, диалоговая система дает возможность пользователю писать свои программы согласно принципу модуль¬ ного программирования. Изучив настоящую главу и Приложение D (сообщения систе¬ мы), можно безошибочно общаться с ЭВМ в диалоговом режиме и отлаживать задание с максимальной быстротой. § 4.2. Принцип модульного программирования. Модульное программирование состоит в расчленении всего алгоритма задачи. 60
на цепочку элементарных программных модулей (в нашем слу_ Чае книг, хранящихся в библиотеках исходных модулей) незави симо от того, представлены ли эти модули в виде классических подпрограмм или нет [10, 14]. Преимущества модульного программирования: логика составления больших программ сводится к незави¬ симому от ЭВМ синтезирующему уровню. Каждый модуль (осо¬ бенно представлепный в виде системного макроопределения) мо¬ жет рассматриваться как элемент некоторого частного проблемно- ориентированного языка; один и тот же модуль может использоваться для нескольких программ; модули могут формироваться и отлаживаться независимо друг от друга, в том числе и совершенно разными программистами; отладка больших программ упрощается тем, что в момент объ¬ единения модулей каждый из них уже отлажен. Остающиеся ошибки связаны только с организацией взаимодействия между ними. При отладке системных макроопределений такие ошибки проще всего выявляются в сервисном режиме SCRIB; благодаря модульной структуре программа может быть легко изменена либо созданием новых модулей, либо их перестановкой. § 4.3. Процедура первоначальной загрузки диалоговой системы. Первоначальная загрузка диалоговой системы IPL проводится в основном один раз при включении ЭВМ в начале рабочего дня. Этот процесс распадается на два: первоначальная загрузка стандартной системы ДОС ЕС и первоначальная загрузка соб¬ ственно диалоговой системы PALLADA. Может быть рекомендована следующая последовательность управляющих операторов и директив для проведения процеду¬ ры IPL.1 1. SET DATE —Kl, CLOCK = К2 2. ALLOC Fl = nK,F2=mK 3. MAP 4. //JOB PALLADA 5. ASSGN SYSIN,X'190' Обозначения: Kl — текущая дата, число/месяц/год; K2 — текущее время, часы/мипуты/секунды; п и ш — длина в килобайтах разделов F1 и F2 соответственно. Подробно операторы ALLOC и МАР описаны в § 4.6. Операторы 4 и 5 определяют назначение файла постоянных ди¬ ректив (для данного примера он находится на накопителе с фи¬ зическим номером Х'190') как системного устройства ввода ди¬ ректив п данных - SYSIN (SYSRDR & SYSIPT) - см. § 3.9. Последовательность действия оператора ЭВМ или пользова¬ теля следующая: К2 и К1 представ¬ ляют собой сово¬ купность трех дву¬ значных целых де¬ сятичных констант. 61
1. Установить резидентный пакет дисков на накопитель с но мером Х'190', а пакет дисков с личны и библиотеками на нако¬ питель с номером Х'191' (либо на тот, который указан при гене¬ рации диалоговой системы). 2. Нажать кнопку ЗАГРУЗКА на пульте машины в случае ЕС-1020 (22), либо выполнить аналогичную процедуру на ЭВМ других марок. 3. Положить подготовленный набор операторов в устройство ввода перфокарт и нажать кнопку ПУСК на этом устройстве. В результате ввода приведенного набора перфокарт на пуль товую пишущую машинку (SYSLOG) будет выдана таблица рас пределеиия оперативной памяти между разделами ЭВМ и сооб¬ щение 01211 DOS—PALLAD А IPL COMPLETE, информирующее о завершении процедуры первоначальной загрузки системы в фо¬ новом разделе. Как указывалось выше, при отсутствии заданий для обработки диалоговая система' после сообщения **WAITING** переходит в состояние ожидания. Это удобный момент для вызова путем на¬ жатия кнопки BII на пультовой пишущей машинке программы Внимание с целью инициализации пакетной обработки и в других используемых разделах — F1 и F2. Начинать эту процедуру следует с раздела с наинизшим прио¬ ритетом (обычно F2) по следующей схеме: 1. Ввести директиву программы Внимание START F2 (или F1). 2. Закончить связь с программой Внимание, нажав кноп¬ ку КТ. 3. После сообщения 1С10А PLEASE ASSIGN SYSRDR ввести с пишущей машинки назначения для SYSIN в разделе F2. дппрдг CYQTIV Y г\ п-1 /1 Файл постоянных директив расположен AooUriN oiollN, A IJ1 } па накопителе с номером Х'191' 4. Нажав на кнопку КТ, выполнить инициализацию пакетной обработки в разделе F2. 5. Повторно установить связь с программой Внимание и вы полнить пункты 1—4 для раздела F1 (если требуется). Этим полностью завершается процедура первоначальной за грузки диалоговой системы PALLADA. § 4.4. Формирование простых заданий в фоновом разделе После процедуры первоначальной загрузки, как и после оконча¬ ния выполнения любого задания, диалоговая система выходит i состояние ожидания, информируя об этом пользователя сообщени¬ ем ** WAITING При монодиалоговой конфигурации системы PALLADA, т. е~ системы с одним диалоговым устройством — пультовой пишуще!) машинкой (SYSLOG), для возобновления приема и обработки заданий требуется нажать кнопку ПРЕРЫВАНИЕ на пульте ЭВМ. При бидиалоговой конфигурации (система работает с двумя пишущими машинками SYSLOG и SYS015 либо с одной пишу 62
щей машинкой SYSLOG и дисплеем) система в состоянии ожида¬ ния постоянно готова к вводу задания с диалогового устройства SYS015, если оно включено и работоспособно. В противном случае восстанавливается монодиалоговый режим работы. Если к моменту реинициализации системы на устройстве ввода перфокарт или пер¬ фоленты уже находится подготовленное к обработке задание, то диалоговая система в состояние ожидания не переходит, а сразу на¬ чинает считывать записи этого задания до оператора / & либо до их исчерпания. В этом случае система и при моио- и при бидиалоговой кон¬ фигурации затребует продолжения ввода данных с устройства SYSLOG — пультовой пишущей машинки. Для возобновления считывания новой порции задания с перфокарт или перфоленты следует нажать на ней кнопку КТ. Как указывалось выше, простое задание полностью определено входным потоком данных (без библиотек исходных модулей). Пусть требуется выполнить следующее: 1. //JOB TEST1, ОТДЕЛ N0. 10 2. // ACTION LIST, SYSTEM 3. // OPTION LINK 4. // EXEC FFORTRAN • | исходный текст программы па языке ФОРТРАН-IV 5 J ^ б! // EXEC LNKEDT 7. // EXEC • } исходные данные для программы 8. /* 9. /& Это задание состоит из трех шагов: компиляции программы, на¬ писанной на языке ФОРТРАН-IV, ее редактирования и испол¬ нения (§ 3.10, 3.20). Чтобы выполнить такое задание, требуется сначала привести систему в состояние готовности для считывания его с желаемого Устройства по описанному выше правилу. В процессе ввода этого задания будут исполнены следующие Действия: 1. Открытие файла SYSOPT и вывод па SYSLST имени задания и комментария из оператора //JOB. 2. Назначение режима полной распечатки на SYSLST вводимых записей и отмена (или назначение в зависимости от генерации) назначения для личных библиотек исходных и объективных модулей. 3. Запись остальных данных (3 8) (исключая / &) в файл за¬ даний фонового раздела без изменений. 4. Закрытие файла заданий. После последнего /действия диалоговая система работу закан¬ чивает и передает управление программе Управление заданиями, 63
которая выполнит сформированное на файле SYSOPT задание и вновь решшциализирует диалоговую систему. Приведем без описания еще ряд типичных правильно сформированных простых заданий (примеры далее будут печататься местами в два столбца). //ACTION DISPLY // EXEC FFORTRAN /* /& Трансляция программы на языке ФОРТРАН-IV с выводом листинга на участок диска для последующего просмотра на экра¬ не дисплея. Задание получает имя «NO=#=NAME». // JOB JUPITER // OPTION CATAL PHASE Jl, ROOT // EXEC PL/1 /* PHASE J2, * // EXEC PL/1 /* PHASE J3, J2 Трансляция и каталогизация в библиотеку абсолютных моду¬ лей трехфазовой программы на языке IIЛ/1 [4]. Отсутствие опе¬ ратора // ACTION предполагает выполнение задания со стандарт¬ ными режимами. // JOB PRINT // ASSGN SYS005,X'00Ff // ASSGN SYS004, X'190' // EXEC LISTVTOC Вывод на АЦПУ (алфавитно-цифровая печать) оглавления тома пакета дисков, установленного на накопителе с номером Х'190'. Итак, под управлением диалоговой системы можно выполнять задания, сформированные по правилам стандартной системы ДОС. Это обеспечивает сохранение правила преемственности опера¬ ционных систем: задания, выполняемые под управлением младших версий операционной системы, исполняются без перекомпоновки и под управлением старших [14]. § 4.5. Особенности подготовки и ввода задания с перфоленты. Рассмотрим правила подготовки и ввода заданий с перфоленты. Диалоговая система работает с 8-дорожечной перфолентой, ин¬ формация на которой представлена в стандартном 7-битноМ // EXEC PL/1 / * // EXEC LNKEDT /& 64
коде ЕС ЭВМ КОИ-7 (Приложение F). Программное задание на такой перфоленте готовится на устройстве подготовки иерфолен- тЬ1 (УГ1ДЛ) ЕС-9020 «Брест-1» или ЕС-9021 «Препамат» [19]. большое задание всегда выгоднее готовить на перфоленте, чем на перфокартах, так как, во-первых, подготовка перфокарт произво¬ дится «вслепую» (стандартный карточный перфоратор ПА80-2/ЗМ не дает возможности визуально контролировать набиваемую ин¬ формацию), что является основной причиной большого числа оши¬ бок, во-вторых, диалоговая система позволяет вводить перфоленты с коррекцией, т. е. предоставляет пользователю или оператору возможность перебивать ошибочные знаки и отдельные записи без последующего ручного, весьма трудоемкого, редактирования всего задания (выбраковка соответствующих записей и склейка перфоленты) [22]. Забегая вперед, отметим, что диалоговая система создает воз¬ можность заводить большие программы с перфокарт или перфо¬ ленты только один раз для занесения в одну из библиотек ис¬ ходных модулей. Дальнейшая отладка этих программ заключается в многократной коррекции их текста в соответствующей библиотеке. Таким образом, один раз подготовленное задание на перфолен¬ те или перфокартах после его каталогизации в библиотеку более ценности не представляет вследствие наличия в нем ошибок и мо¬ жет быть уничтожено. Поэтому использование перфоленты вме¬ сто перфокарт дает и экономический эффект, так как она более проста в изготовлении и требует меньшее количество сырья на байт информации. Структура одной записи задания на перфоленте следующая: информационное поле (начинается с 1 позиции) длиной не более 72 байтов, код конца записи — клавиша CR или ^ (возврат ка¬ ретки) и отрезок чистой ленты с синхродорожкой длиной 2—3 см для визуального разграничивания записей. Соблюдение этих правил дает возможность быстрого восстановления задания на перфоленте даже в таком редком случае, как ее разрыв при первом вводе в ЭВМ. Как же исправить допущенную ошибку при подготовке пер¬ фоленты? Диалоговая система различает два типа ошибок: ошибка в последнем текущем знаке записи и ошибка не в последнем знаке. В первом случае при вводе по специальному коду предыдущий символ заменяется последующим, во втором — по специальному поду опускается вся ошибочная запись. Итак, для исправления ошибки в последнем текущем знаке следует после него нажать клавишу BS или <— (возврат на шаг) и, перебив ошибочный символ, продолжать подготовку задания. Для аннулирования всей ошибочной записи следует перед кодом CR или ^ нажать клавишу LF или ^ (перевод строки) [21, 22]. Перфолента с заданием подготовлена. Чтобы диалоговая сис¬ тема смогла бы безошибочно ее считать с устройства ввода, на¬ пример ЕС-6022, следует сначала скоммутировать его следую¬ щим образом: 3 С. Б. Векшин 05
ПОТЕРЯ^ ОШИБКА СБОЙ Б ПИТАНИЕ СИМВО¬ В ДАН¬ 0 БОРУ - А8ЮН0М готово ЛА НЫХ ДОС. ВКЛ. i Конец j ~1 1 ' ■ I СБРОС (мрто- шаг ; inpcroH 1 ПУСК стоп i |Т_ЕКИ L 1 L..J НЕЧЕТ ОТКП. ЧЕТ. . Б Л К. Ч'ЕЬ’ИБ ЗАБОИ ДОР. „(Г 5 А 3 v К8НЕЦ ЗАПИСИ Рис. 9. Положение тумблеров пулг/га оператора устройства чтения перфоленты ЕС-6022 при работе с диалоговом системой [20] 1. Переключатель типа перфоленты — 8. 2. Переключатель контроля четности — откл. 3. Тумблеры конца записи — 10110001 (код CR). 4 т. Ту мб л ер ЗАВ О И [22]. переключате- перфо ленты —■ откл. о. Тумблер БЛК. ДОР. — откл. 6. Тумблер ЧТЕНИЕ «0» — откл. На рис. 9 показана правильная коммутация лей операторского пульта устройства чтения ЕС-6022 [20]. При соблюдении перечисленных требований диалоговая си¬ стема правильно считает задание после приведения устройства ЕС-6022 в состояние Готово. § 4.6. Назначение и возможности программы Внимание. Сде¬ лаем теперь маленькое отступление и рассмотрим системную про¬ грамму Внимание, являющуюся одним из главных компонентов Управляющей программы стандартной системы ДОС. Программа Внимание предназначена для обеспечения опти¬ мальной работы вычислительного комплекса — запуска обработки заданий во всех разделах ЭВМ, получения информации о каком- либо исполняющемся задании путем диалоговой связи с опера¬ тором или пользователем, работающим с устройством SYSLOG. Она состоит из нескольких транзитных фаз (§ 1.2), располо¬ женных на резидентном устройстве. Эти фазы вызываются в спе¬ циальную область оперативной памяти (область А- и В-транзитов супервизора ДОС), т. е. не стирают исполняющиеся в это время задания. Благодаря этому программа Внимание может быть выз¬ вана для исполнения тотчас после нажатия кнопки ВН на пуль¬ товой пишущей машинке. О своей готовности принять директивы оператора системная программа Внимание сигнализирует сообщением 1I60A READY for communications с предшествующим префиксом «AR», если ЭВМ работает в мультипрограммном режиме. Если выдается другое сообщение, то для инициализации программы Внимание 66
и получения указанного выше сообщения с пишущей машинки сле¬ дует ввести ответ IGNORE. Для прекращения связи с программой Внимание следует на пультовой пишущей машинке без ввода данных нажать кноп- КУ КТ. Директивы программы Внимание могут быть разделены на две группы: управляющую и отладочную. К управляющим директивам относятся: ALLOG — позволяет перераспределять оперативную память между используемыми разделами ЭВМ FI, F2, BG. Позволяет исключать разделы переднего плана. Программа Внимание но этой директиве сначала определит общий объем оперативной па¬ мяти ЭВМ, а затем уточнит границы каждого раздела, начиная от конца (сначала для F1, затем для F2 и BG). Следует отметить, что размер разделов F1 и F2 не может превышать 512К (килобайт). Если указывается нулевая емкость раздела, то он уничтожается. Формат этой директивы следующий: Величина п или ш (целое четное число) указывает емкость разделов пе¬ реднего плана F1 и F2. BATCH — активирует пакетную обработку заданий в одном из разделов переднего плана. Разделу должна быть выделена память не менее 10К. Чтобы организовать обработку заданий с помощью диалоговой системы, следует после ввода этой директивы и уста¬ новления связи с программой Управление заданиями, вызванной в нужный раздел, объявить файл постоянных директив устрой¬ ством SYSIN (если это назначение не предусмотрено в суперви¬ зоре) и окончить связь с программой Внимание, нажав кнопку КТ. Формат директивы следующий: (-1 BATCH |F21 Параметр представляет собой имя раздела (по умолчанию предполагается BG). LOG и NOLOG — полностью соответствуют одноименным ди¬ рективам программы Управление заданиями (§ 3.8). МАР — производит выдачу на устройство SYSLOG таблицы распределения оперативной памяти между разделами. Эта директи¬ ва не имеет параметров. Листинг имеет следующий формат: сна¬ чала печатается идентификатор раздела (SP для супервизора, BG, F2, F1 для рабочих разделов ЭВМ), далее следует размер это¬ го раздела (кратный 2К), верхний предел отведенной разделу об¬ ласти оперативной памяти (в десятичном виде) и имя задания, ис¬ полняющегося в разделе. Если раздел свободен, то поле имени задания будет пустым (т. е. будет содержать пробелы). 67 3*
TIMER — позволяет закрепить интервальный таймер за одним из разделов ЭВМ. Эта директива используется для изменения стан¬ дартного назначения таймера, предусмотренного при генерации супервизора [3]. Формат директивы следующий: Параметр представляет собой имя раздела и должен присутствовать обязательно. Отладочные директивы позволяют управлять ходом выполне¬ ния проблемной программы и получать от нее желаемую инфор¬ мацию. Это следующие директивы: ALTER — позволяет с устройства SYSLOG изменить от 1 до 1G байт оперативной памяти, начиная с указанного адреса. Адрес и значение вводятся в шестнадцатеричном виде. Формат директивы следующий: яащие пули не опускаются). Корректирующая содержание оперативной памяти информа¬ ция вводится вслед за директивой. CANCEL — прекращает выполнение текущего задания в одном: из разделов и передает управление программе Управление зада¬ ниями, которая начинает обработку следующего задания. Эта директива записывается так: Параметр представляет собой имя раздела (если он опущен, то предпо¬ лагается BG). DSPLY —позволяет вывести на устройство SYSLOG содер¬ жимое 1G байт оперативной памяти. Адрес этой области задается так, как и в директиве ALTER. Формат этой директивы DSPLY хххххх DUMP — выводит на АЦПУ указанные области оперативной памяти. Программа Внимание использует логическое устрой¬ ство SYSLST, назначенное на АЦПУ в любом разделе. Р1а это устройство не должна осуществляться выдача результатов проб¬ лемными программами, чтобы служебная печать их не испортила. TIMER ALTER хххххх Параметр представляет собой шестнадцатеричный адрес памяти (незна- 68
Директива имеет следующий формат: пробел S BG F1 F1S F2S CEAREA хххххх, уууууу Второй операнд указывает раздел, устройство SYSLST которого будет использовано для служебной печати (по умолчанию предполагается BG). Идентификатор раздела должен быть заключен в круглые скобки. Первый операнд указывает распечатываемую область памяти. пробел — вызывает вывод на печать всей оперативной памяти и общих регистров (исключая область супервизора). S — то же, включая область супервизора. BG пли F1 или F2 — распечатывается оперативная память соответствую¬ щего раздела и общих регистров (без области супервизора). BGS или F1S или F2S — то же, включая область супервизора. CEAREA — печать области СЕ супервизора [16]. хххххх, уууууу — распечатывается область памяти, заключенная между начальным хххххх и конечным уууууу адресами. Адреса задаются в шестнад¬ цатеричном виде, причем незначащие нули не опускаются. MSG — передает управление подпрограмме обработки внеш¬ них прерываний, включенной в основную проблемную программу, исполняемую в разделах переднего плана. Действие этой дирек¬ тивы аналогично результату от нажатия кнопки ПРЕРЫВАНИЕ на пульте ЭВМ. Отсутствие такой подпрограммы приводит к вы¬ даче на SYSLOG сообщения 1C40I NO ROUTINE LINKAGE. Формат этой директивы Параметр представляет собой имя раздела, для которого моделируется внешнее прерывание. PAUSE — приводит к приостановке ввода управляющих опе¬ раторов с SYSIN и устанавливает связь программы Управление заданиями с оператором. Пауза организуется после окончания либо шага, либо всего задания. Непрерывный ввод управляющих операторов с SYSIN возобновляется после нажатия кнопки КТ на пультовой пишущей машинке. Директива записывается так: PAUSE . [,EOJ] Ifi J 69
BG, FI, F2 — идентификатор раздела, в котором организуется пауза.. EOJ — показывает, что пауза должна быть организована после выпол¬ нения всего задания. START — очень важная директива, часто используемая при эксплуатации диалоговой системы в мультипрограммном режи¬ ме. Она позволяет возобновить пакетную обработку в любом разделе ЭВМ, остановленную по директиве Управляющей про¬ граммы STOP (§ 3.20). Формат директивы [-) START F2 IF1 J BG, FI, F2 — идентификатор раздела, в котором возобновляется пакет¬ ная обработка заданий. Если параметр опущен, то подразумевается BG [3, 17]. § 4.7. Формирование простых заданий в разделах F1 и F2. В § 4.4 был рассмотрен простейший способ эксплуатации диалого¬ вой системы — запуск простых заданий в фоновом разделе. В этом разделе, как указывалось в § 3.7, целесообразно выполнять только отладочные задания или задания, требующие кратковре¬ менного (не более 15 мин) счета. Все остальные задания следует, исполнять в разделах, не связанных непосредственно с функцио¬ нированием диалоговой системы,— в F1 или F2, предварительно установив им желаемый приоритет оператором Ц FIANT. Про¬ граммы, которые нужно исполнять в этих разделах, предваритель¬ но должны быть оттранслированы, отредактированы и помещены в библиотеку абсолютных модулей. Проще всего это сделать в фо¬ новом разделе (§ 4.4). Рассмотрим примеры. // JOB TEST2 // EXEC ALGAMS //OPTION CATAL : AGTIOH FI /* PHASE LZ, * //EXEC LNKEDT /& Трансляция программы с языка ДОС-АЛГАМС, редактиро¬ вание ее относительно начального адреса раздела F1 [4] и ката¬ логизация в библиотеку абсолютных модулей. Для того, чтобы программа могла исполняться в разделе F2, в операторе ACTION следует указать идентификатор этого разде¬ ла [4]. Следовательно, программа, отредактированная для какого- либо раздела, может выполняться только в этом разделе при усло¬ вии постоянного распределения оперативной памяти между разде¬ лами. Это ограничение можно обойти двумя путями. 1. Если программа написана на языке АССЕМБЛЕР с учетом требований самоперемещаемости [1, 18], т. е. модифицирует все свои 70
адресные константы [11, 17], и отредактирована на нулевой адрес с помощью оператора программы Редактор связей PHASE NAME, +0 2. Если в операторе Редактора связей ACTION указать режим RL, т. е. ACTION RL PHASE NAME, * (NAME — имя, с которым данная программа будет помещена в библиотеку абсолютных модулей; в примере NAME=LZ). Это режим, предусмотренный в модифицированной системе ДОС версии 2.1, разработанной в ИКИ АН СССР [33]. Адресные константы программ, отредактированных таким: об¬ разом, настраиваются на начало соответствующего раздела авто¬ матически при их загрузке для исполнения в оперативную память из библиотеки абсолютных модулей. Такие программы занимают немного больше места в оператив¬ ной памяти ЭВМ по сравнению с обычными: всего на величину таб¬ лицы подстраиваемых адресных констант. Таким образом, любые программы, отредактированные в ре¬ жиме ACTION RL, автоматически становятся как бы самопере- мещаемыми. // JOB TEST3 // OPTION CATAL ACTION RL /* PHASE LZ,* // EXEC LNKEDT // EXEC ALGAMS /& • Трансляция программы с языка ДОС-АЛГАМС, редактиро¬ вание ее как самоперемещаемой и каталогизация в библиотеку абсолютных модулей. Чтобы выполнить готовую программу, хранящуюся в биб¬ лиотеке абсолютных модулей, в разделе F1 или F2 следует выпол¬ нить следующее задание: // JOB ЕХ1 // DETUR F2 * операторы // ASSGN, // DLBL, // EXTENT, // TLBL * если требуется описать файлы * на дисках или магнитных * лентах // EXEC LZ • 1 • j исходные данные /* /& Исполнение программы с именем LZ в разделе F2. 71
Если предположить, что раздел F2 должен иметь иаинизпшп приоритет и в процессе эксплуатации диалоговой системы он не будет повышаться, то при процедуре генерации системы можно в программу FGPWAIT2 включить процедуру ожидания. Это зна¬ чит, что когда в данном разделе никакая задача не исполняется, указанная выше программа (вызываемая на исполнение из файла постоянных директив) непрерывно сканирует специальный ключ готовности этого раздела и передает управление программе Уп¬ равление заданиями сразу после его установки в 1 при поступле¬ нии оператора /& в приведенном выше задании. Это дает воз¬ можность начать исполнение подготовленного для раздела F2 задания без дополнительных манипуляций с программой Внима¬ ние (естественно, что оператор STOP в файл постоянных директив не включается). Рассмотрим теперь процедуру запуска задания, например, в разделе F1, в файл постоянных директив которого включен вме¬ сто процедуры ожидания оператор STOP. Пусть также данная программа LZ является программой уп¬ равляемого физиологического эксперимента, выполняемой в ре¬ альном масштабе времени, и ее требуется исполнить в разделе с наивысшим приоритетом. Задание на исполнение такой программы обязательно должно включать в себя оператор // FIANT, присваивающий разделу F1 высший приоритет. // JOB ЕХ2 // FIANT FI, BG, F2 // DETUR FI * операторы // ASSGN, // DLBL, // EXTENT, // TLBL * если требуется описать файлы * на дисках или магнитных * лентах // EXEC LZ • j исходные данные /& Исполнение программы с именем LZ в разделе с предваритель¬ ным присвоением ему высшего приоритета. Здесь следует отметить, что при окончании формирования файла заданий в разделах F1 и F2 всегда выдается информацион¬ ное сообщение 1D14I (Приложение D) и диалоговая система вновь подготавливается к выводу нового задания. Если пользователь почему-либо не хочет исполнять сформиро¬ ванное задание, он должен вместо оператора /& ввести оператор // REIN IT. Такая ситуация обычно возникает при ошибочном формировании в режиме MULTY такого задания, которое не может быть выполнено в разделах переднего плана, о чем система часто информирует пользователя сообщением 1S70D (Приложение D). 72
В данном примере для запуска подготовленного на файле SYSOPT раздела F1 задания требуется возобновление пакетной обработки в этом разделе (прерванной по включенному в файл постоянных директив оператору STOP). Это удобнее всего сделать сразу после выдачи диалоговой системой сообщения ** WAITING** перед началом обработки следующего задания, для чего необ¬ ходимо: войти в связь с программой Внимание, нажав кнопку ВН на пультовой пишущей машинке: ввести директиву START F1 (для нашего примера) или START F2; закончить связь с программой Внимание, нажав кнопку КТ. После этих манипуляций пакетная обработка в указанном разделе будет возобновлена и сформированное задание будет ис¬ полнено с необходимым приоритетом. § 4.8. Простейшие сервисные функции диалоговой системы. К простейшим сервисным функциям диалоговой системы отно¬ сится вывод потока данных, поступающих с перфокарт, перфолен¬ ты и диалогового устройства на перфокарты, перфоленту и/или алфавитно-цифровую печать с выполнением (или без) перенуме¬ рации выводного потока информации. Разберем примеры заданий для выполнения сервисных функ¬ ций. a. Распечатка задания // JOB SERVIS1 //ACTION SCRIB • ) • j распечатываемые записи задания /& // JOB SERYIS2 // SCRIB LS • | распечатываемые записи задания /&’ b. Распечатка задания с перенумераци- е й // JOB SERVIS3 // SIGN A SERV // SCRIB LS • | распечатываемые записи задания /& Параметр SERV оператора SIGNA представляет собой иден¬ тификатор, записываемый в 73 ч- 76 позициях выводимых дан¬ ных. c. Вывод задания на печать и перфокар- ты с перенумеровкой 73
Ц JOB SERVIS4 I I SIGNA SERV // SCRIB CD,LS • j записи задания, выводимые на печать и перфокарты /& d. Вывод задания на печать и перфолеп- т у // JOB SERVIS5 // SCRIB LS, LB • | записи задания, выводимые на печать и перфоленту /& Сочетания параметров LS, CD, LB в операторе SCRIB позво ляют выбрать необходимый пользователю набор устройств выво¬ да информации, где LS — устройство алфавитно-цифровой печати, CD — устройство вывода перфокарт, LB — устройство вывода перфоленты. Образец распечатки потока данных по оператору SCRIB, со¬ держащего параметр LB, показан на рис. 10. Следует отметить, что при задании режима перенумерации (оператором SIGN А) на перфоленту в целях уплотнения информа¬ ции ни идентификатор записи, ни его порядковый номер не вы¬ водятся. Ведь при желании полученная перфолента всегда мо¬ жет быть распечатана на алфавитно-цифровой печати с указанием номеров операторов (пример Ь), а сама структура информационно¬ го носителя (непрерывность) сохраняет порядок следования за¬ писей. Перфолента с текстом программы может служить еще одной цели — для распечатки ее на устройстве подготовки данных на перфоленте (УПДЛ) блоками по 22 строки [19]. Для чего необходимо выполнение такой работы на научно-ис¬ следовательском вычислительном центре? Несоответствие форма¬ та бумаги алфавитно-цифровой печати признанным типографским стандартам, а главное, ее качество вызывают существенные труд¬ ности при подготовке к публикации рукописей, разработок но¬ вых алгоритмов и программ. Тексты же, автоматически напечатан ¬ ные по перфоленте на УПДЛ, полностью отвечают требованиям, предъявляемым органами печати, с одной стороны, и полностью гарантированы от ошибок, возникающих при их переписывании вручную,— с другой. Программы печатаются вдоль широкой стороны стандартного листа писчей бумаги по 22 строки на лист (через интервал), после чего пишущая машинка останавливается для смены бумаги. Код остановки, устанавливаемый па УПДЛ, X'OF' [19] (этот код всег¬ да автоматически пробивается па перфоленте выходным перфора¬ тором ЭВМ через 22 записи данных). Наличие этой возможности в системе PALLADA обеспечит рост качества и числа столь необходимых публикаций, своевре- 74
* С'Д (I CJ С-Э о Ж X ж ж ж ж ж ... ж х хх ж X ж Ж*: ж^Хж ж Ж х ж*XX XX *5 X ж X X ж X ^ т— tx* b-j СО OQ О ^ О О. О О ОО'О 'S'O'Sl (— f— F— F— t— t— €— ; 'O' HJ е£ s ж ЖХжХХ* ** ж*** ж ж > $ ж. ***‘ Ж Ж ЖХ^Х^Х X ж ж ХХХХХХ х ж: ж X оо * CjA Dd •—• СЛ °0 0-5 <<-'0. J- 5 ** 0 _Л - с_э -±lO OJ ^ Q ^ О О О г: ijj (— , I— 1 ю*л ^1 «л U 5;5» " -3 Ш Е? °11^(л X о-a х ' J •■—* <Х ^ U—I ^ to X со tu со
менное внедрение и предотвращение дублирования разработки одних и тех же алгоритмов в разных учреждениях и бесхозяйст¬ венной траты как человеческого, так и машинного времени. § 4.9. Особенности сложных заданий. Рассмотрим процесс работы со сложными заданиями, которые отличаются от простых использованием при формировании файла SYSOPT функций ко¬ пирования и системной макрогенерации и чаще всего построены по принципу модульного программирования (§ 4.2). Основным признаком сложного задания является хранение одной или нескольких его частей в личной или системной библио¬ теке исходных модулей SL, а это значит, что пользователь, поми¬ мо операции компоновки своего задания, должен уметь также и каталогизировать свои наборы данных (книги) в эти библиоте¬ ки, корректировать их, удалять, а также знать дополнительные функции, предоставляемые стандартными системными програм¬ мами Библиотекарь (MAINT, RSERV, SSERV, TSERV и DSERV). Удобно работу по отладке сложного задания проводить по блок-схеме, показанной на рис. 11. Дальнейший порядок изложе¬ ния материала будет соответствовать основной цепи этой блок- схемы, а именно каталогизация книги ->- формирование и испол¬ нение сложного заданияобновление книги. Следует также подчеркнуть, что правила формирования файла SYSOPT назначенного раздела едины и для простых и для слож¬ ных заданий. Поэтому описанные процедуры запуска и выполне¬ ния простых заданий во всех разделах (§ 4.4 и 4.7) применимы и к сложным. § 4.10. Каталогизация программных блоков в библиотеку исходных модулей. Прежде чем приступать к отладке новой про¬ граммы, ее следует поместить в библиотеку исходных модулей (обычно личную). Удобнее всего это сделать с помощью оператора каталогизации — Ц CATALS (§ 3.8). Рассмотрим несколько примеров. Каталогизация набора данных под именем W. PROGRAM в личную или системную библиотеку SL (действует стандартное назначение, указанное при генерации диалоговой системы). В поле идентификации каждой записи этого набора данных (73—80 байты) заносятся символы «PRGM» и ее номер. // JOB CATAL1 // CATALS W. PROGRAM, PRGM /& * • | текст программы на языке ДОС ЕС или набор данных // JOB CATAL2 //ACTION SYSTEM //CATALS O.LZR • ^ A * «-«От™ T | текст 1-й части про- //CATALS 0.LZ1 • ^ тлт.лт О Гг ™ # j J-JL JJVi j^UlUlUJLIl //CATALS 0.LZ2, LZ## 1 текст 2-Й части J программы * J граммы 76
,#ис. 11. Блок-схема отладки сложных заданий C3L — библиотека абсолютных модулей, RL — библиотека объектных модулей, SL —библиотека исходных модулей
Каталогизация трех наборов данных в личную пли системную библиотеку SL (действует назначение, противоположное стандарт¬ ному). В поле идентификации 1-го набора данных заносятся сим¬ волы «LZR—», 2-го набора данных — «— — — —» и 3-го набора данных — «LZ ##». Если пользователь хочет иметь листинг каталогизируемых книг, в задании обязательно должен быть установлен режим LIST (либо по оператору Ц ACTION LIST, либо при генерации). Так как сформированное на файле SYSOPT задание содержит обращение к стандартной программе Библиотекарь, то оно может быть выполнено только в фоновом разделе ЭВМ. Попытка осущест¬ вить каталогизацию в одном из разделов F1 или F2 вызовет сооб¬ щение 1S70D (Приложение D). § 4.11. Формирование сложных заданий. Сформируем задания для трансляции и отладочного счета программ, каталогизация ко¬ торых была рассмотрена в предыдущем параграфе. Пусть первая]из них была написана на языке ФОРТРАН-1 V, а вторая—на ПЛ/Т // JOB ЕХ1 // EXEC // OPTION LINK * 1 исходные данные Ц EXEC FFORTRAN \ } для 1-й программы // COPY W. PROGRAM /& //EXEC LNKEDT Трансляция, редактирование и счет программы, написанной на языке ФОРТРАН-IV и хранящейся в личной или системной библиотеке SL под именем W. PROGRAM. //JOB ЕХ2 // EXEC //OPTION LINK * 1 исходные данные // EXEC PL/1 ". J для 2-й программы // COPY O.LZR, 0.LZ1, 0.LZ2 / * // EXEC LNKEDT /& Трансляция, редактирование и счет программы, написанной на языке ПЛ/1 и хранящейся в личной или системной библиотеке SL в виде трех книг с именами O.LZR, 0.LZ1, 0.LZ2. Можно заметить, что количество операторов Ц COPY в за¬ дании не ограничено. Операторы вызова соответствующего транслятора, Редактора связей и собственно программы на исполнение, а также и другие необходимые стандартные операторы и директивы ДОС ЕС могут быть включены в книги библиотек исходных модулей и в задании в явном виде не присутствовать. Тогда задание принимает прос¬ тейший вид: // JOB NAME // COPY L. TEST • i • | исходные данные для программы /* /&. 78
Исполнение задания, хранящегося в личной или системной библиотеке SL, содержащего и управляющие операторы ДОС ЕС, и текст самой программы. Следует напомнить, что в книги библиотек исходных модулей (SL) управляющие операторы диалоговой системы включать нель¬ зя, так как при формировании файла SYSOPT они обработаны не будут. Также следует напомнить, что при работе оператора Ц COPY всегда при поиске необходимой книги просматривается сначала личная, а затем системная библиотека SL. Следовательно, если в библиотеках обоих типов хранятся две различные книги с сов¬ падающими именами, то книгу из системной библиотеки станет возможным обрабатывать с помощью оператора // COPY только в случае удаления или переименования одноименной книги в лич¬ ной библиотеке. § 4.12. Простые автоматические цепочки. Во втором примере предыдущего параграфа было показано, каким образом можно сформировать программу из нескольких книг или программных блоков, хранящихся в библиотеке SL под различными именами согласно принципу модульного программирования. Реальная про¬ грамма может состоять из неопределенно большого числа блоков. Количество операторов копирования при таком способе организа¬ ции программы достигнет больших величин. В этом случае пользователь может предусмотреть в своих про¬ граммных блоках внешние связи с помощью вторичных операто¬ ров копирования. Тогда при обращении по оператору Ц COPY к начальному (или вызывающему) программному блоку диало¬ говая система по цепочке вторичных операторов <^COPY включит в файл заданий всю программу. Напомним, что этот механизм дает возможность строить иерархические системы (когда програм¬ мный блок нулевого порядка вызывает несколько блоков первого, а каждый из блоков первого — несколько блоков второго и т. д. до девятого порядка включительно (§ 3.13 и рис. 6)). Возможности использования вторичного оператора<XOPY этим не ограничи¬ ваются и будут рассмотрены ниже. Приведем примеры. а. Последовательная автоматическая це¬ почка блок С. LRZ (вызывающий «0»-порядка) блок C.LZ1 («1»-ио рядка) блок C.LZ2 («2»-порядка) • 1 • | текст программы < COPY С. LZ1 ЕОВ • ] текст программы < COPY C.LZ2 ЕОВ • ] текст программы 79
- с. izx(тст) - с. и/(тсг; ~ С L2 2 (ТЕКCTt ЕС С) ^ - c.czx/mj- у /“Tuff»*"' з0емл Рис. 12. Пример последовательной автоматической цепочки // JOB EX // EXEC FFORTRAN // COPY С. LZR /& Трансляция программы, написанной на языке ФОРТРАН-IV и имеющей имя вызывающей книги С. LZR. Это задание по оператору Ц COPY строит из программы бло¬ ков при формировании файла SYSOPT цепочку, показанную на рис. 12. Пассивные звенья этой цепочки отличаются от активных тем, что содержат только признак конца книги (ЕОВ — END OF BOOKS), который всегда присутствует в каждом из наборов дан¬ ных, хранящемся в библиотеке SL. Римские цифры под наимено¬ ванием элементов цепочки обозначают их порядок или глубину. Еще раз подчеркнем, что число активных звеньев автоматиче¬ ской цепочки (глубина вложенности программных блоков) не должно превышать девяти (§ 3.13). Ь. Иерархическая автоматическая цепочка блок C.IER1 (вызывающий, «О»-порядка) блок C.IER2 («1»-порядка) текст программы <COPY C.IER2 текст программы <COPY C.IER5 текст программы ЕОВ ) текст J программы <COPY C.IER3 текст программы <COPY C.IER4 текст блок C.IER3 («2»-порядка) блок C.IER4 («2»-порядка) блок C.IER5 («1» -пор яд ка) текст программы ЕОВ текст программы ЕОВ | текст J программы ЕОВ / JOB EX /EXECALGAMS II COPY C.IERl / & программы ЕОВ Трансляция программы, написанной на языке АЛГАМС и имеющей имя вызывающей книги С. IER1. Приведенная программа построена по иерархическому прин¬ ципу. При ее включении в файл заданий строится автоматическая цепочка, представленная на рис. 13,а. 80
I у С. IEM (ТЕКСТ) С. IER.Z (ТЕКСТ) / • C.IEM(TEKCT+EOB) -C.tER2(TEKCT) C.IER4(TEKCT+E0B) 1 ’ TER2 (ТЕКСТ+ EDB) / -C.IER1 (ТЕКСТ) 0 C.IER5 (ТЕКСТ+ED!) Z. IER1 (TEKCT+E08) -/ a I ! ! i „0 i cmrqy c.isxr y С.Ш2 0" f £I£XZ 0- у ■f-Ш® i f-Ш® у ,л ~1 'ШИ (7) У -C.ZM4- 0 Рис. 13. Пример иерархической автоматической цепочки: а) последовательное описание генерации текста программы, б) матричное описание генерации текста программы Все ее звенья являются активными, так как содержат непо¬ средственно текст программы. Следует напомнить, что в случае отсутствия одного из про¬ граммных блоков ненулевого порядка и в системной, и в личной библиотеках SL обработка исполняющегося задания будет пре¬ кращена после выдачи сообщения 1М01С (Приложение D). Сложные цепочки, подобные этой, удобнее изображать в мат¬ ричной форме, располагая их элементы одного и того же порядка в столбцах. Строки этой матрицы будут показывать направление генерации программ по элементам цепочки (рис. 13, б). Стрелками °бозначается последовательность вызова программных модулей Из библиотеки SL, цифры в кружках — номер подгруппы, на которые разбивается текст макроопределения'операторами < COPY, Двойное подчеркивание — аналог символа «ЕОВ». § 4.13. Работа с системными макроопределениями. Каждый программных блоков может представлять собой как фикси¬ рованный набор строк программы или исходных данных, так и 81
системное макроопределение (§ 3.14) — самонастраивающуюся текстовую структуру. Самонастройка текста происходит в про¬ цессе выполнения оператора Ц COPY по заданным в операторе Ц DD значениям системных параметров. Этот процесс подробно рассмотрен на рис. 7. На системные макроопределения распространяются приве¬ денные выше правила построения простых автоматических цепо¬ чек (§ 4.12). Но в данном случае как текст любого программного блока, так и их структура и количество также могут быть изме¬ няющимися и зависимыми от значений системных параметрот;. Самонастройка структуры задается использованием в макро¬ определении операторов генераторного перехода AIF, <^AGO, SET и<[ LAB, а также использованием в операторе COPY име¬ ни программного блока, заданного параметрически (это единст¬ венный из операторов системного макрогенератора, допускающий задание своего операнда как параметра). Использование операторов генераторного перехода подробно рассмотрено в § 3.15. Поэтому ограничимся одним примером, объясняющим правила использования и составления системных макроопределений. Пусть даны три программных блока на языке ФОРТРАН-1У, причем два из них представляют собой макроопределения. На¬ чинающий пользователь, не знакомый с языком ФОРТРАН, должен обязательно для понимания этого и дальнейших примеров положить рядом с собой какое-нибудь руководство по этому язы¬ ку, например [12, 23, 24] или [25], и время от времени загляды¬ вать туда для уяснения непонятных моментов. блок М. ROOT (вызывающий «О»-порядка) // EXEC FFORTRAN DIMENSION А([&N]) 1 FORMAT (IX, [&L]F15.4) < COPY М. CALCI&C] PRINT 1,A STOP END /* /7 EXEC LNKEDT I! EXEC leob A(l) = 1.0 блок C.CALC1 («1» -порядка) DO 10 1 = 2, [& N] < AIF (& Q = =&D) L 10 A(I) = A(I-l) * 1.25 <AGO# < LAB L 10 A(I) = A(I — 1) * A (I — 1) + 1 ?S) < LAB # Leob 82
А (1) = 0.0 блок M.CALC2 DO 10 I = 2, [& N1 («1»-иорядка) 10 А (I) = А (I — 1) -f- [& Н] * [& N] ** (1 /3) LEOB Какую же программу можно сформировать из этих блоков? Параметр &N позволяет произвольным образом задавать размерность массива А. Параметр &L позволяет управлять числом столбцов при пе¬ чати этого массива. Параметр &С позволяет подключить модуль вычисления мас¬ сива А с именем М. CALC1 либо M.CALC2 или какой-нибудь еще в зависимости от| его значения. Параметры &Q и &D в зависимости от равенства или нера¬ венства друг другу также определяют разные формулы для вы¬ числения массива А. Параметр &Н определяет константу в алгебраической форму¬ ле в блоке М. CALC2. Зададим параметрам значения и посмотрим, какие программы будут получаться. Оба задания будут предназначены для трансляций, редактиро¬ вания и счета по сгенерированной программе. Первое задание: // JOB CAN Cl // DD &H = '20', &L = '5', &C = T //OPTION LINK //COPY M. /& Текст сгенерированной программы: // JOB CANC1 // OPTION LINK // EXEC FFORTRAN DIMENSION A(20) 1 FORMAT (IX, 5F15.4) A(l) = 1.0 DO 10 I = 2, 20 10 A (I) = A (I - 1) *1.25 Отметим, что так как параметр &Q получил значение *, а параметр &D — нет, то при их сравнении в операторе AIF на равенство генераторный переход осуществлен не был. Для его осуществления следовало бы либо присвоить & D также значение или & Q не присваивать ничего, т. е. не упоминать его в спис- не параметров оператора Ц DD. Второе задание: // JOB CALC2 // DD &С = '2', &Н = '24.365Е2' // OPTION LINK // COPY М. ROOT // DD &N = '40',&L = 8' /& ROOT PRINT 1, A STOP END /* // EXEC LNKEDT // EXEC /& 83
Текст сгенерированной программы: // JOB GALC2 //OPTION LINK // EXEC FFORTRAN PRINT 1, A STOP END DIMENSION A(40) 1 FORMAT (IX, 8F15.4) A(l) - 0.0 / * // EXEC LNKEDT // EXEC /& DO 10 I = 2,40 10 A(I) = A (I — l)+24.365E2*40**(l/3) Еще раз напомним, что при составлении системных макрооп¬ ределений во избежание ошибок генерации нужно скрупулезни следовать правилу: количество разноименных ■ меток в операторе перехода </ AIF или AGO в программе должно быть равно количе- ству операторов определения этих меток LAB. Это правило дей¬ ствует не только в пределах одного блока, поэтому можно смело определять метки в одном блоке, а операторами AIF и AGO пользоваться в другом. Кроме того, если пользователь захочет осуществить генераторный переход против хода генерации макро ¬ определения, т. е. в порядке уменьшения номеров операторов программы, не считаясь с его ограничениями, то такая метка бу¬ дет считаться неопределенной, так как ее поиск будет осуществ¬ ляться только ниже ссылки на нее в операторах AGO или AIF. § 4.14. Контроль правильности значений системных парамет¬ ров макроопределений. Несмотря на кажущуюся универсальность, системные макроопределения предназначены, в основном, для удоб¬ ства пользователей при создании больших и сложных программ по принципам модульного программирования. Эти программы мо¬ гут самонастраиваться, но не в бесконечном числе вариантов, а в границах, очерченных самой областью их применения, т. е, исследовательской или экспериментальной задачей. А если так, то целесообразно в самих макроопределениях задать границы изменения параметров с тем, чтобы исключить возможные, иногда трудно обнаруживаемые, ошибки из-за неверной записи операто¬ ров Ц DD. В случае выпадения значения контролируемого пара¬ метра из указанных границ с помощью операторов генераторного перехода пользователь может вставлять в текст программы своп сообщения об ошибках, исправлять их, прекращать генерацию длинных автоматических цепочек и т. д. Рассмотрим методику построения таких контрольных про¬ цедур с использованием оператора коррекции значения параметров <[ SET (§ 3.16) на примере из предыдущего параграфа. Составим процедуру для контроля размерности массива А. Оценивая размер собственно программы и сопоставляя его с размером оперативной памяти ЭВМ, а также из условий задачи всегда можно установить как верхнюю, так и нижнюю границу размерностей используемых массивов. 84
Пусть в нашем примере параметр &N, задающий размерность, ре может быть меньше 15 и больше 1000. Перепишем макроопределение М.ROOT с построением конт¬ рольной процедуры, включающей в текст программы информа¬ ционное сообщение и присваивающей параметру & N одно из гра¬ ничных значений. Блок М. ROOT // EXEC FFORTRAN < SET & 0=4' < SET & R:15 — & N < AIF(&0 = =&R) E < SET & R: & N — 1000 < AIF (&0 = =&R)T присвоение & О значе¬ ния «+» присвоение & R знака разности переход на метку «Е» при & О = & R (размер¬ ность меньше 15) присвоение & R знака разности переход па метку Т при & О = & R (размерность больше 1000) переход па метку Z метка Е < AGO Z < LAB Е С КОРРЕКЦИЯ РАЗМЕРНОСТИ ПО MIN <" SET & N=15 присвоение &N значе¬ ния 15 AGO Z переход на метку Z 4 LAB Т метка Т С КОРРЕКЦИЯ РАЗМЕРНОСТИ ПО МАХ SET & N = 1000 присвоение &N значе¬ ния 1000 < LAB Z метка Z DIMENSION А ([& N1) I FORMAT (IX, [&L1F15.4) < COPY М. CALC [& С] PRINT 1,А STOP END / * // EXEC LNKEDT II EXEC EOB, Подобную процедуру можно построить и для параметра &L, определяющего длину печатаемой строки (не более 120 символов), и для параметра &С, определяющего имя вызываемых блоков первого порядка, и для многих аналогичных параметров макро¬ определений. § 4.15. Самонастраивающиеся автоматические цепочки—ос¬ нова макроязыка. Самонастраивающимися называются автомати¬ ческие цепочки из программных блоков, имеющие разветвления и замкнутые петли. Это наиболее мощное средство, предоставляе- 85
мое пользователю диалоговой системой и позволяющее состав¬ лять проблемно-ориентированные наборы системных макрооп¬ ределений, связанные между собой определенными правилам^ взаимодействия, т. е. проблемно-ориентированный макроязык. Простейшим примером такой цепочки может служить набор макроопределений, рассмотренный в § 4.13, содержащий опера¬ тор COPY с параметрически заданным операндом. В этих мак¬ роопределениях автоматическая цепочка управляется параметром &С, изменяющим значение операнда вторичного оператора ко¬ пирования. Она изображена на рис. 14. Рис. 14. Простейшая управляемая автоматическая цепочка Рассмотрим более сложный случай. Пусть требуется сгенери¬ ровать программу, содержащую каскад из одинаковых циклов, отличающихся только используемыми идентификаторами масси¬ вов. Дри наличии мощного макрогенератора в операционной си¬ стеме нет нужды переписывать все эти циклы вручную. Достаточ¬ но описать структуру такого цикла в макроопределении и вклю¬ чить его в вызывающий программный блок соответствующим обра¬ зом. Итак, пусть один из заданных циклов на языке ФОРТРАН имеет вид | где 10 — метка, не подлежащая дублированию в программе: каж~ дый из 8 циклов должен иметь свою метку; Al, В10 — идентифика торы массивов, различающиеся в каждом цикле. Остальные конс¬ танты и идентификаторы циклов должны совпадать. Запишем этот цикл в виде кусочка макроопределения, введя системные параметры &Р и &Q, модифицирующие циклы, сог¬ ласно указанному выше заданию. DO 1 [&Р]0 1 = 1,50 1 [& Р] 0 А [& Р] (I) = А [& Р] (I) + В [& Q] (I) * СКД) * 2.0 М. CALC1 (TEKCT+EDB) М. ROOT (ТЕКСТ) Л M.CALC2(TEKET+E0B) DO 10 I = 1, 50 Ю Al (I) = Al (I) + B10(I)*CK(I)*2.0 Запишем теперь полностью оба макроопределения (вызываю¬ щее и генерирующее каскад циклов), одновременно поясняя на- значение его операторов.
Блок Z.PGM (вызывающий «0»-исрядка) '} начало | / программы < SET & G = 8 < SET & Р = 1 < SET &Q = 10 < COPY Z. CIKL число циклов в каскаде плюс 1 начальные значения идентифика¬ торов массивов Блок Z.CIKL («1—8»-порядка) инициализация генерации каска¬ да циклов продолжение программы ЕОВ ‘С ЦИКЛЖ). [&Р] DO 1 [&Р]0 1=1,50 1 [& Р] 0 |А [& Р] (I) = А [& Р] (I) + В [& Q] (I) *СК (I) * 2.0 SET & Р=&Р -f 1 увеличение значений &Ри &Q на 1 <SET&Q = &Q+1 <CAIF(&P==&G)F переход к окончанию генерации при & Р=& G повторное обращение блока к са¬ мому себе метка F < COPY Z. CIKL < LAB F .ЕОВ При обработке рабочего задания // JOB CIKL // DD &А= 'О' // COPY Z. PGM /& системный макрогенератор сформирует следующую программу: // JOB CIKL • } начальные операторы программы С ЦИКЛ NO. 1 DO 110 I = 1,50 110 А1 (I) = А1 (I) -f BIO (I) *СК(1) *2.0 С ЦИКЛ N0. 2 DO 120 I = 1,50 120 А2 (I) = A2(I) + B11(I)*CK(I)*2.0 С ЦИКЛ N0. 3 DO 130 I = 1.50 130 АЗ (I) = АЗ (I) + В12 (I) *СК (I) * 2.0 С ЦИКЛ N0.4 С ЦИКЛ N0. 7 DO 170 I = 1.50 170 А7 (I) = A7(I) + Bi6(I)*CK(I)*2.o • 1 • | продолжение программы /& 87
Представим работу макрогенератора, как обычно, в виде ав¬ томатической цепочки (рис. 15). Итак, можно сказать, что методически правильное сочетание всех рассмотренных выше правил и способов построения систем¬ ных макроопределений, грамотное объединение их в макроязык может оказать существенную помощь при разработке прикладных программных систем как общего, так и специализированного характера, например, для проведения управляемых физиологи¬ ческих экспериментов и многих других подобных задач, требую¬ щих непрерывной модификации реакции ЭВМ при изменении ус¬ ловий исследуемого эксперимента. -Z. РСМ(7ТКСТ)—Z. CIKL(TEKCT)- 0 1+Ш-— 7pgj •IX IKL(EOB)- —1+Ш-— 7paj Рис. 15. Генерация каскада однотипных циклов в программе пользователя Хранение модулей программ в виде системных макроопределе¬ ний, с одной стороны, позволяет неограниченно увеличивать число вариантов генерируемых программ, сводя к минимуму чис¬ ло ошибок, а с другой — позволяет всегда вернуться к старому варианту без коррекции текста книг, хранящихся в библиотеке исходных модулей, лишь путем изменения содержимого операто¬ ров Ц DD в задании. Итак, основными признаками программных систем, построен¬ ных по принципу макроязыка, можно считать: — совместное хранение в библиотеке SL старых и новых ва¬ риантов программных блоков как макроопределений; — сборка из более мелких элементов макроязыка более круп¬ ных, из них еще более крупных и т. д. согласно многочисленным условиям и перекрестным связям; — присвоение совершенно конкретного назначения и наиме¬ нования каждому, даже самому маленькому блоку; — существование постоянно обновляемой (в соответствии с необходимостью) матричной схемы описания автоматических цепочек и управления ими. § 4.16. Коррекция программных блоков в библиотеке исход¬ ных модулей. Пусть при попытке пробного счета по программе, сгенерированной по рассмотренным правилам, ЭВМ обнаружила ошибки. Допустим, что пользователь разобрался в них и знает, каким образом и какие именно программные блоки (книги) следует из¬ менить в библиотеке SL. Какие возможности для проведения коррекции предоставляет система ДОС ЕС совместно с диалоговой системой? Системной программой, выполняющей функции корректировки 88
библиотек, является программа Библиотекарь, которая позволя¬ ет производить: — удаление элементов библиотек SL, RL, CL; — переименование элементов библиотек; — обновление книг в библиотеке SL; — сжатие библиотек, позволяющее физически стереть поме¬ ченные на удаление блоки библиотек и соответствующие записи их оглавления и т. д. [17]. Подробно рассмотрим функцию обновления. Функция обновления позволяет производить замену, добавле¬ ние, удаление как отдельных записей, так и целых книг, храня¬ щихся в библиотеках SL, перенумеровать их, изменять версию и модификацию, изменять поле идентификации их операторов (только в операционных системах, сгенерированных с включени¬ ем программы MAINT, взятой из версий 1.3-t-1.6 ДОС ЕС), дублировать книгу с присвоением ей нового имени для сохранения в целях страховки [26]. Рассмотрим общую структуру задания, использующего функ¬ цию обновления. 1. // JOB UPDATE 2. // ACTION SYSTEM 3. // EXEC MAINT 4. оператор UPDATE 5. операторы ) REP, ) ADD, ) DEL, ) PRL Оператор II JOB присваивает заданию имя и инициализирует его (§ 3.4). Оператор // ACTION SYSTEM используется для назначения или отмены назначения личных библиотек в зависимости от ге¬ нерации диалоговой системы (§ 3.6). Оператор // EXEC MAINT осуществляет вызов программы на исполнение (§ 3.20). Оператор программы Библиотекарь UPDATE используется Для инициализации функции обновления. Этот оператор имеет следующий формат: LPDATE подбиб. книга, [подбиб.1, книга 1], [У. М], [пп] подбнб. — имя подбиблиотеки, содержащей подлежащую коррекции книгу, алфавитно-цифровой символ: латинская буква от А до Z или цифра 0-9. книга — имя книги, подлежащей коррекции, состоит из 1 — 8 алфавит¬ но-цифровых символов. подбиб. 1, книга 1 — имя подбиблиотекии книги, под которым обновляе¬ мая книга будет сохранена в первоначальном виде; параметр необязательный. V. М — задает версию и модификацию обновляемой книги и десятичные Нисла 0 < V < 127, 0 < хМ < 255. ' пп — задает шаг перенумерации книги. Этот операнд может быть деся¬ тичным числом от 1 до 10, может быть опущен (подразумевается равным 1) 6. ) END 7. /* 8. I& 89
и может быть равен «N0». В последнем случае перенумерация книги после ее обновления не производится. Последовательный номер первого оператора книги всегда принимается равным нулю [5, 17]. Вторичные операторы Библиотекаря ) ADD, ) DEL, ) REP? ) PRL и ) END используются для описания записей книги, подле¬ жащих корректировке. Единым признаком этих операторов явля¬ ется закрывающая круглая скобка в их первой позиции и следую¬ щий за ней пробел. Оператор ADD применяется для добавления записей в книгу, описанную оператором UPDATE. Имеет следующий формат: ) ADD п п — последовательный номер записи в книге, после которого будут до¬ бавлены новые предложения. Десятичное число от 0 до 9999. После оператора ADD должны следовать записи, добавляемые в книгу. Их количество не ограничено [5, 17]. Оператор DEL применяется для удаления одной или группы записей из указанной книги. Он записывается так: ) DEL ni [,n2] щ и п> — номера первой и последней записи (включительно) удаляемой группы.?Если операнд п2 не задан, то из книги удаляется только одна запись с номерOM^ni [5, 17]. Оператор REP применяется для замены одной записи или группы записей в указанной книге. Формат этого оператора сле¬ дующий: ) REP ni [,п2] ni и п» — номера первой и последней записи (включительно) заменяемо! группы. Если операнд п2 не задан, то новые записи вставляются на место од¬ ной с номером Их. После оператора REP должны следовать записи, заменяющие указанные в книге. Их число не ограничено [5, 17]. Оператор PRL применяется для изменения идентификации в позициях 73—76 каждой записи книги, начиная от указанной. Из-за неудачного формата данный оператор генерируется автома¬ тически диалоговой системой по следующему оператору: ) PRL п, имя п — последовательный номер записи обновляемой книги, начиная с ко¬ торого в каждую ее запись будет вноситься новая идентификация. имя — набор из 4 буквенно-цифровых символов, определяющий новую идентификацию. Согласно принципу преемственпостп версий операционных систем диа¬ логовая система принимает и стандартную фо] му записи этого оператора [26]. §6
Оператор END указывает конец корректирующих операторов для данной книги. Его формат следующий: ) END [V.M] V. М — задает версию и модификацию только что обновленной книги. Полностью совпадает с одноименным параметром оператора UPDATE. Если этот параметр опускается, то книга получает значения V и М, равные нулю. Перечислим основные правила использования операторов кор¬ ректировки: — второй операнд в операторах REP и DEL должен быть больше первого; — все операторы обновления, относящиеся к данной книге, заключенные между UPDATE и END, должны быть расположены по возрастанию значений их операндов; — первый операнд операторов REP и DEL должеп быть боль¬ ше последнего операнда в предыдущем операторе; — первый операнд операторов ADD и PRL должен быть не меньше последнего операнда в предыдущем операторе [5, 26]; — если в операторе UPDATE отсутствуют срединные операн¬ ды, то вместо них ставится соответствующее число запятых; — если в операторе UPDATE задано невыполнение перену¬ мерации книги (которое существенно увеличивает время коррек¬ ции больших книг), необходимо в новых записях обязательно про¬ ставлять порядковые номера в поле идентификации, в противном случае перед последующим обновлением придется все равно пе¬ ренумеровывать данную книгу в отдельном задании [5]. Непрос¬ тительно не пользоваться этим особенно при подготовке заданий на перфокартах и при использовании в качестве диалогового устройства дисплея. Рассмотрим работу функции обновления на следующих типич¬ ных заданиях: // JOB ZEIL // EXEC MAINT UPDATE Z. NAME,,10 ) END /* /& Перенумерация с шагом 10 записей книги с именем Z. NAME. // JOB SAVE // ACTION system; // EXEC MAINT UPDATE Z. NAME, Z.ALTNAMEIJ ) END /* /& Изменение стандартного режима работы с личными библиоте¬ ками и дублирование книги в библиотеке с именем Z. NAME (но¬ вое имя Z. ALTNAME). 91
// JOB UPDATE // EXEC MAINT UPDATE Z.LZ ) PRL 0,LZ*# ) ADD 2 * Cl * Г9 ) REP 3 * D100 * D200 * D300 Обновление двух книг с именами Z.LZ и Z.TL. Пусть первоначально книги Z.LZ и Z.TL имели вид, указанный слева. Справа приведем скорректированные тексты этих книг. Z. LZ V. M=-0.0 73 позиция Z. LZ V. М=2.1 73 позиция * ТЕСТОВЫЙ КК 0000 * ТЕСТОВЫЙ LZ # # 0000 ПРИМЕР ПРИМЕР * А1 К К 0001 * А1 LZ ##0001 * A2 КК 0002 * А2 LZ # # 0002 * АЗ КК 0003 * С1 LZ # # 0003 * А4 К К 0004 * С2 LZ # # 0004 * А5 К К 0005 * D100 LZ # # 0005 * А6 КК 0006 * D200 LZ # # 0006 * А7 КК 0007 * D300 LZ # # 0007 * А8 К К 0008 * А4 LZ # # 0008 * А9 КК 0009 * W400 LZ # # 0009 * А10 К К 0010 * А8 LZ # #0010 ЕОВ * А10 ЕОВ LZ # #0011 Z. TL V. M=2.5 73 позиция Z. TL V. М=0.0 73 позиция * ТЕКСТ TL 0000 * ТЕКСТ TL 0000 * Z1 0001 * Z1 0001 * Z2 0002 * ттт 0002 * КОНЕЦ ТЕКСТА 0003 * Z2 0003 ЕОВ * КОНЕЦ ТЕКСТА 0004 ЕОВ Пример дает исчерпывающую информацию о том, как выпол¬ нять функцию обновления книг, хранящихся в личной или сис¬ темной библиотеках исходных модулей. -При многократном выполнении заданий на отладочный счет и коррекцию программных блоков, из текста большой программы уходят различные ошибки. Ошибочные записи, помечаемые к удалению, могут перепол¬ нить объем библиотеки, и программа MAINT в каком-то заданий откажется выполнять функцию обновления, информируя об этой ) REP 5,7 * W400 ) DEL 9 ) END 2.1 UPDATE Z.TL ) ADD 1 * TTT ) END /* /& 92
выдачей сообщения ЗМ521 SOURCE STATEMENT LIBRARY IS FULL. При этом пользователь должен уплотнить библиотеку, выполнив следующее задание: // JOB CONDS // ACTION SYSTEM (если CONDS SL /* необходим) // EXEC MAINT /& Процедура уплотнения подробно рассмотрена в § 4.22. Биб¬ лиотека SL после этого вновь готова принять новые записи. После многочисленных коррекций наступает такой момент, когда пользователь считает свою программу готовой. Она для сохранения записывается на перфоленту, перфокарты или в биб¬ лиотеку на магнитной ленте. Однако для эксплуатации готовой программы требуется выпол¬ нить еще несколько заключительных шагов, рассмотренных ниже. § 4.17. Каталогизация перемещаемых модулей программ в библиотеку объективных модулей. Диалоговая система предостав¬ ляет пользователю возможность быстрой каталогизации переме¬ щаемых модулей программ и подпрограмм в личную или систем¬ ную библиотеку объектных модулей RL (§ 3.8). Приведем несколько примеров. Пусть в библиотеке исходных модулей под именем Z.LZT хра¬ нятся основная программа (входное имя MAIN PGM — стандарт¬ ное имя всех основных программ на языке ФОРТРАН) и три под¬ программы с входными именами, например SUB1, SUB2 и SUB3. Пусть также в книгу Z.LZT не входят управляющие операторы Составим задание для получения их перемещаемых модулей при компиляции и каталогизации их в личную библиотеку RL (для определенности пусть диалоговая система в стандартном ре¬ жиме работает с личными библиотеками, а оператор // ACTION SYSTEM и операнд SYSTEM оператора Ц CATALR отменяет этот режим): Наши модули будут закаталогизированы под своими входными именами, т. е. MAIN PGM, SUB1, SUB2 и SUB3. Составим аналогичное задание для помещения этих же моду¬ лей в системную библиотеку RL. Для этого следует отменить стандартный режим работы с личными библиотеками, записав оператор Ц CATALR в соответствующей форме (§ 3.8): Каталогизировать основную программу под ее стандартным ДОС. // JOB CATALR // CATALR 4 // EXEC FFORTRAN // COPY Z.LZT /* /'& // JOB CATALR //CATALR 4, SYSTEM // EXEC FFORTRAN // COPY Z. LZT /* /& 93
именем MAIN PGM не следует, так как и совершенно другая прог рамма, написанная на языке ФОРТРАН, также имеет это имя. При каталогизации этой другой программы рассмотренным выше способом ее основной модуль сотрет в библиотеке одноименный модуль ранее закаталогизированной программы, что является недопустимым. Оператор // CATALR для предотвращения рассмотренной си¬ туации позволяет присваивать любое имя первому (основному) модулю программы. Это имя задается как операнд либо после указания числа каталогизированных модулей, либо после ключе¬ вого слова SYSTEM. Следующее задание, например, закаталоги- зирует, как и ранее, нашу программу из 4 перемещаемых модулей, но основная программа получит имя UNIVR: // JOB CATALR COPY Z.LZT // CATALR 4, UNIVR /* //EXEC FFORTRAN /& Каталогизация четырех перемещаемых модулей программы в личную библиотеку RL. // JOB CATALR // COPY Z.LZT // CATALR 4, SYSTEM, UNIVR /* // EXEC FFORTRAN /& Каталогизация четырех перемещаемых модулей программы в системную библиотеку RL, Какие характерные ошибки могут возникнуть при записи опе¬ ратора Ц CATALR? Можно перепутать тип библиотеки (личная — системная) и ука зать неправильное число каталогизируемых модулей. При ука¬ зании его с недостатком в библиотеку RL будут занесены не все модули программы и оставшиеся придется транслировать и ката¬ логизировать в новом задании. При указании числа перемещаемых модулей программы с избытком диалоговая система выдает сооб¬ щение 1D13C и прекращает выполнять прерванное задание (При ложение D). Эти ошибки хорошо выявляются по листингу задания. Задания на каталогизацию в библиотеку RL могут выполнять ся в автоматическом режиме и в режиме контроля. Приведенные задания все выполняются в режиме контроля. Это значит, что в файл заданий перед концевыми записями в этом режиме всегда вставляется вызов информационной программы (§ 3.8). Эта программа выдает сообщение 1M02D на диалоговое устройство с указанием типа библиотеки (личная — системная), в которую должны быть записаны полученные перемещаемые модули, и запрашивает у пользователя разрешения на продол¬ жение каталогизации. Если при трансляции программы ошибок нет (что можно проконтролировать по листингу задания) и сооб¬ щение подтвердило выбор желаемого типа библиотеки RL, те пользователь должен ответить YES; во всех других случаях ответ должен быть N0, для снятия ошибочного задания. 94
Каталогизация может быть проведена и в автоматическом ре¬ жиме, т. е. без описанного диалога. Этот режим включается ис¬ пользованием в задании оператора Ц UPSI, например: Ц EXEC FFORTRAN Каталогизация четырех модулей программы в личную библио¬ теку RL в автоматическом режиме. В заключение можно еще раз отметить, что текст программы, естественно, может быть сформирован как из нескольких книг или системных макроопределений библиотеки SL, так и просто считан с перфокарт, перфоленты или диалогового устройства. § 4.18. Расширенные сервисные функции диалоговой системы. Рассмотрим остальные сервисные функции, выполняемые как стандартными программами ДОС, так и диалоговой системой для эффективного пользования библиотеками. В § 4.8 было рассмотрено использование оператора // SCRIB для вывода на алфавитно-цифровую печать, перфокарты и перфо¬ ленту потока данных задания. Какие возможности представляет оператор Ц SCRIB для ра¬ боты с библиотеками исходных модулей? Если в этом операторе присутствует параметр «ЕХ», то сле¬ дующие за ним операторы Ц COPY сохраняют работоспособность, а это значит, что па названные устройства ввода, помимо данных с перфокарт, перфоленты и диалогового устройства, будут посту¬ пать и книги из библиотеки SL. Как и в режиме AUTO или MULTY, системный макрогенера¬ тор! включается заданием перед оператором Ц SCRIB операто¬ ра // DD. Пользователь на выбранном носителе информации может ие только получить копию своего макроопределения, но и вывести сгенерированную готовую программу на исходном языке прог¬ раммирования, пригодную для выполнения на другой ЭВМ, имеющей операционную систему ДОС ЕС. Приведем примеры таких заданий. Вывод на печать и перфоленту книги Z.UU в режиме копи¬ рования и операторов 3, 4, 6, 7 и 8. // JOB AUTO // CATALR 4,UNIVR //UPSI XXXXXXX1 // COPY Z.LZT /* /& 1. // JOB DUBL 2. // SCRIB LS.LB,EX 3. // JOB PROGRAM 4. // OPTION LINK 5. // COPY Z.UU 6. // EXEC LNKEDT 7. // EXEC 8. /& 1. // JOB GENERATO 2. // DD &A='12',&B='6' 7. // COPY Z.MACRO 8. // EXEC LNKEDT 9. // EXEC 10. // COPY Z.MACROID 11. /* 12. /& 3. // SCRIB LS,CD,EX 4. // JOB PRG 5. // OPTION LINK 6. // EXEC FFORTRAN 95
Вывод на печать и перфокарты книг Z.MACRO и Z.MACROID в режиме системной макрогенерации, а также операторов 4, 5, 6, 8, 9, И и 12. Интересно, что функция перенумерации, заданная с помощью оператора Ц SIGNA, не изменяет индексацию книг, выводимых из библиотеки SL, и действие его распространяется только на дан¬ ные, читаемые с вводных устройств, поддерживаемых диалоговой системой. § 4.19. Стандартные сервисные функции для библиотек. В стандартной системе ДОС ЕС также существуют программы, выполняющие функции вывода на алфавитно-цифровую печать (SYSLST) и/или на перфокарты (SYSPCH) компонентов библиотек. Это CSERV, RSERV и SSERV для библиотек CL, RL и SL соот¬ ветственно. Операторы управления, а также правила их использования идентичны для всех этих программ. Управляющие операторы могут задавать следующие режимы функционирования этих программ: DSPLY — печать компонент библиотеки, PUNCH — вывод компонент библиотеки на SYSPCH, DSPCH — одновременная печать компонент библиотеки и их вывод на SYSPCH. Формат этих операторов одинаков для всех операторов: компонент — для библиотеки CL: имя программной фазы из 1 -г 8 сим¬ волов или имя набора этих фаз, объединенных четырьмя первыми одинако¬ выми символами в форме ХХХХ.ALL, где ХХХХ — эти 4 символа; для библиотеки RL: имя перемещаемого модуля пз 1 -ъ 8 символов или имя набора этих модулей, объединенных тремя первыми одинаковыми симво¬ лами в форме XXX.ALL, где XXX — эти 3 символа; для библиотеки SL: имя подбиблпотекп и книги из 1-^-8 символов в фор¬ ме X. ХХХХХХХХ или только имя нодбнблиотеки в форме X.ALL подбиб. имя книги Если компонент записан с использованием слова ALL, то действие сер¬ висной программы распространяется на наборы программных модулей, фаз, а также на целые подбиблпотекп SL. ALL — признак, указывающий на работу сервисной программы со все¬ ми без исключения компонентами библиотеки. CMPRSD — операнд, использующийся только при выводе на SYSPCH книг из библиотеки SL. Назначает режим вывода в сжатом формате. Книги в таком виде значительно экономнее выводятся на перфокарты и магнитную ленту за счет отсутствия пробелов. Этот режим следует назначать, если вы¬ веденные книги в дальнейшем предназначены только для повторной катало¬ гизации в эту же библиотеку [5, 17]. За одно выполнение сервисной программы может быть обра¬ ботано произвольное количество управляющих операторов. 96
Все сервисные программы могут одновременно работать только бо с личной, либо с системной библиотекой, поэтому перед вызовом на исполнение следует настроить диалоговую систему необходимую конфигурацию, используя или опуская опера- э // ACTION SYSTEM. Рассмотрим правила работы с сервисными программами на имере библиотеки RL. //JOB PRINT j/ ACTION SYSTEM (если необходим) //EXEC RSERV DSPLY ANNA, FFT.ALL DSPLY JRY. ALL /* /& Печать на SYSLST программного модуля ANNA, наборов мо¬ лей, имеющих три первые символа идентификаторов, совпа- ющих с «FFT» и «JRY» из библиотеки RL. // JOB PUNCHCD // ACTION SYSTEM (если необходим) // EXEC RSERV PUNCH ANNA, FFT.ALL PUNCH JRY.ALL /* /& Вывод на перфокарты (SYSPCH) тех же модулей из библиоте- [ RL. JOB PUNCPITP /* ACTION SYSTEM МТС WTM,SYSPCH,2 (если необходим) МТС REW,SYSPCH ASSGN SYSPCH,X'280' /& EXEC RSERV PUNCH ANNA, FFT.ALL PUNCH JRY.ALL Вывод на магнитную ленту с номером X'280' (SYSPCH) тех з модулей из библиотеки RL с последующей установкой ее в чало (§ 3.9). Описание операторов МТС см. [3, 17]. Для вывода на магнитную ленту всего содержимого библиотеки j рекомендуется обязательное использование операнда CMPRSD. JOB SAVE /* ACTION SYSTEM МТС WTM, SYSPCH,2 (если необходим) МТС REW, SYSPCH ASSGN SYSPCH, X'280' /& EXEC SSERV PUNCH ALL,CMPRSD С. Б. Векшин 97
Вывод на магнитную ленту с номером Х'280' (SYSPCH) (§ 3.9) всего содержимого библиотеки SL в сжатом формате с, последующей установкой ее в начало. § 4.20. Обмен компонентами между личной и системной би¬ блиотеками. В некоторых случаях бывает полезным перенести пе¬ ремещаемые модули или книги из личной библиотеки в системную или наоборот. Легче всего данную работу выполнить, используя операторы Ц CATALR и // CATALS диалоговой системы*. Рассмотрим сначала процесс переноса перемещаемых модулей из одного типа библиотеки RL в другой. Воспользуемся рассмотренным в § 4.17 механизмом каталоги зации перемещаемых модулей, но в нашем случае эти модули на дисковый файл SYSPCH помещаются не в процессе трансляции исходных текстов программ, а в результате работы сервисно]; программы RSERV (§ 4.19). Пусть для определенности указание параметра SYSTEM в операторах // ACTION // CATALR отменяет стандартное назна чение личных библиотек. Рассмотрим примеры. //JOB LIST1 PUNCH FFT П ZN,FFT П CL, //ACTION SYSTEM FFT П PG //CATALR 4 PUNCH FFT П SG // EXEC RSERV /* /& Перенос четырех модулей из системной библиотеки RL в лич¬ ную. //JOB LIST2 // CATALR 4,SYSTEM // EXEC RSERV Перенос четырех модулей ную. Отметим одну особенность — возможное изменение имени мо¬ дуля при переносе. Это связано с возможным несоответствием внутреннего имени модуля с именем, под которым он хранится в библиотеке (§ 4.17). Если не позаботиться особо, указав новое имя в операторе //CATALR, то при переносе будет восстановлено внутреннее имя. В этом случае при желании можно воспользоваться про¬ цедурой переименования, описанной в следующем параграфе. Используя оператор // CATALS, можно легко перенести к ни- * Стандартная! программа CORGZ версии ДОС 2.1 также позволяет выпол¬ нить данную | работу при использовании функции слияния, однако при использовании диалоговой системы проще пользоваться рассмотренной методикой. PUNCH FFT п ZN, FFT П CL, FFT п PG PUNCH FFT П SG /* /& из личной библиотеки RL в систем-*
ги из личной библиотеки в системную или наоборот (в режиме копирования) или закаталогизировать текст программы, сгене¬ рированный по системному макроопределению. Для определен¬ ности, как и ранее, будем считать, что указание оператора //ACTION SYSTEM отменяет стандартное назначение личных би¬ блиотек. Рассмотрим примеры: //JOB SAVE1 //COPY U.TEST // ACTION SYSTEM /& // CATALS U.TEST,TEST Перекаталогизация книги U.TEST в системную библиотеку SL. //JOB SAVE2 //COPY U. LIST2 //CATALS U.LIST1, LIST //CATALS U. LIST3, LIST // COPY U. LIST1 // COPY U. LIST3 // CATALS U. LIST2, LIST /& Перекаталогизация трех книг U. LIST1, U. LIST2,U.LIST3 в личную библиотеку SL. // JOB GENET //COPY Z. MACRO // DD&A=T, &B='100' /& // CATALS U.PGM1 Каталогизация книги U.PGM1, полученной путем генерации по системному макроопределению Z.MACRO, в личную библио¬ теку SL. Напомним, что оператор // COPY всегда обслуживает и лич¬ ную и системную библиотеку SL. При наличии в них книг с оди¬ наковыми именами в файл заданий будет включена та из них, ко¬ торая хранится в личной библиотеке. § 4.21. Переименование и удаление компонентов библиотек. В конце работы с новой программой ее обычно выводят для хра¬ нения на перфоленту или на перфокарты (с помощью оператора Ц SCRIB; см. § 4.18) и стирают из библиотеки исходных модулей SL для того, чтобы освободить в ней место для других книг и мак¬ роопределений. Также иногда, если позволяет размер библиотеки SL, в ней можно организовать архив старых программ, переиме¬ новав их соответствующим образом и определив для них какую- нибудь к л ассифик ацию. Функции переименования и удаления компонент из всех трех библиотек ДОС — CL, RL и SL — выполняются с помощью прог¬ раммы Библиотекарь (MAINT). Переименование задается с помощью управляющих операто¬ ров RENAMC, RENAMR и RENAMS; удаление — с помощью DELETC, DELETR и DELETS. Последний символ ключевого слова указывает на тип обслуживаемой библиотеки: С — для CL, R — для RL и S — для SL. 99 4*
Формат операторов переименования следующий: (RENAMCj ■RENAMR? старое имя, новое имя [,старое имя, новое имя.,.] IRENAMS J старое имя — имя компонента библиотеки, под которым он храните;:. Для библиотеки CL — это имя программной фазы длиной 1 н- 8 симво¬ лов; для библиотеки RL — это имя перемещаемого модуля длиной 1 символов и для библиотеки SL — это имя книги, состоящее из указания по,, библиотеки (1 символ) и идентификатора длиной 1 ч- 8 символов. новое имя — имя компонента, под которым он должен- содержаться библиотеке в дальнейшем. Заметим, что в случае работы с библиотекой CL или RL новое имя программной фазы или модуля не может начинаться с симво¬ ла *. При работе с библиотекой SL префикс подбиблиотеки в новом имени можно опустить в случае совпадения его с префиксом в ста ром имени [5, 17]. Оператор удаления для всех библиотек записывается следую щим образом; Параметры компонент и ALL употребляются в тех же значе¬ ниях, что и в операторах сервисных функций — DSPLY, PUNCH и DSPCH (§ 4.19), поэтому повторно описываться здесь не будут Подчеркнем, что в одном задании с помощью программы мо¬ гут быть обслужены либо личные, либо системные библиотеки Тип библиотек выбирается использованием оператора //ACTION SYSTEM. Рассмотрим примеры заданий в системе, конфигурация кото рой была приведена для определенности в § 4.20: Удаление из системных библиотек CL, RL и SL фазы с именем PGMZZF, набора модулей, объединенных тремя первыми симво¬ лами FFT и книг A.Q1 и A.Q2. Переименование фазы PGMZZF в системной библиотеке CL. модулей JRY1 и JRY2 в личной библиотеке RL и книги W.GRA- FIK с сохранением префикса подбиблиотеки в личной библиотеке jDELETC] //JOB DEL //ACTION SYSTEM // EXEC MAINT DELETC PGMZZF DELETR FFT.ALL DELETS A.QLA.Q2 /* /& // JOB RENAM // EXEC MAINT RENAMCPGMZZF,nPGMLST /* RENAMR JRY1,QJ1, JRY2, /& QJ2 RENAMS W.GRAFIK. DARST SL. 100
В заключение отметим, что диалоговая система не поддержи¬ вает работу с личной библиотекой абсолютных модулей при рабо¬ те с ДОС версии 2.1, поэтому в заданиях без специального назна¬ чения этой библиотеки операторы обслуживания библиотеки от¬ носятся только к системной библиотеке. § 4.22. Уплотнение библиотек. Уплотнение — очень важная функция для работы с библиотеками. Используется для увели¬ чения области, доступной для помещения новых записей ком¬ понентов в соответствующую библиотеку — CL, RL или SL. Процедура уплотнения заключается в физическом удалении тех компонентов библиотек, которые ранее при выполнении функ¬ ций каталогизации, удаления и обновления были помечены на стирание, т. е. были удалены логически. После уплотнения отно¬ сительное расположение компонентов библиотек не изменяется. Функция уплотнения задается оператором программы Библио¬ текарь (MAINT)—CONDS. Этот оператор записывается следующим образом: CONDS идент [, идент ...] идент — идентификатор библиотеки, для которой выполняется сжатие: CL, RL или SL. Уплотнение одновременно может, как и все функции програм¬ мы Библиотекарь, выполняться только либо в системных, либов личных библиотеках [5, 17]. Рассмотрим примеры. // JOB CONDS CONDS RL.SL // ACTION SYSTEM /* (если необходим) /& // EXEC MAINT Уплотнение библиотек RL и SL. //JOB CONDS CONDS CL,RL.SL //ACTION SYSTEM /* (если необходим) /& // EXEC MAINT Уплотнение всех библиотек. При работе с программой MAINT версий ДОС младших, чем 2.0 при выполнении сжатия у пользователя запрашивается под¬ тверждение выполняемой функции для каждой из библиотек, пе¬ речисленных в операторе CONDS. После выдачи сообщения на пультовую пишущую машинку 3M76D CONDENSE [CL,RL,SL] WANTED система требует ответа YES в качестве положительного и N0 — в качестве отрицатель¬ ного [26]. Такие предосторожности были введены, так как операция уплотнения чревата необратимым разрушением библиотечных файлов при сбое ЭВМ. Поэтому при эксплуатации диалоговой сис¬ темы периодически необходимо создавать копии личных библио¬ тек и резидентных пакетов дисков на магнитной ленте. 101
Ие следует злоупотреблять функцией уплотнения и произво¬ дить ее при неустойчиво работающих накопителях на магнитных дисках. Дополнительно заметим, что уплотнение и системных и лич¬ ных библиотек (кроме личной библиотеки абсолютных модулей) нельзя выполнять при активном мультипрограммировании. Рассмотрением функции уплотнения библиотек заканчивается обзор методик формирования заданий, наиболее часто используе¬ мых при эксплуатации диалоговой системы. Зная изложенный материал, можно с успехом использовать все преимущества пост¬ роения программ по принципам модульного программирования, что позволит подняться на качественно новую ступень в деле применения ЭВМ для решения многих прикладных и эксперимен¬ тальных задач. § 4.23. Бидиалоговый режим системы. В заключение рассмот¬ рим особенности эксплуатации бидиалоговой системы. Как упо¬ миналось в § 2.1 и 4.4, бидиалоговая система есть система с дву¬ мя диалоговыми устройствами — пультовой пишущей машинкой (SYSLOG) — рабочим местом оператора ЭВМ и дисплеем или второй пишущей машинкой (SYS015) — рабочим местом пользова¬ теля. Такая конфигурация внешних устройств при работе с систе¬ мой PALLADA эффективна при операторном обслуживании ЭВМ. Терминал (рабочее место) пользователя может быть в этом случае удален из машинного зала. Так как в последнем случае пользо¬ ватель лишен непосредственной возможности следить за ходом выполнения своих программных заданий, не может устанавливать на внешние устройства необходимые магнитные ленты и пакеты магнитных дисков, то актуальной становится проблема передачи информации от пользователя оператору при исполнении кон¬ кретного задания. Этот вопрос легко решается, если вспомнить, что стандартная система ДОС всегда выводит на терминал оператора — устрой¬ ство SYSLOG — все операторы комментариев, а также содержи¬ мое информационного поля оператора // PAUSE (§ 3.19). Следовательно, все необходимые для качественного выполне¬ ния задания инструкции пользователь может передать оператору ЭВМ, использовав эту способность операционной системы. Под¬ черкнем, что для обращения особого внимания оператора ЭВМ на свои сообщения следует после нескольких строк комментариев включать в задание оператор // PAUSE. Не заметить его нельзя, так как для продолжения выполнения задания оператор ЭВМ обязательно должен нажать кнопку КТ своего терминала SYSLOG. Приведем пример такого задания. // JOB TERMINAL // PAUSE * установи магнитную ленту * на все сообщения о сбоях * №№ 110783 на НМЛ Х'280М * дисков нажимать кнопку * установи рабочий диск * КТ не менее 10 раз после * с именем READER на НМД * чего снять задание Х'192'I // ASSGN SYS012,X'280' 102
// ASSGN SYS011,X'192' Ц ASSGN SYS009,X'192' //EXEC TESTLST /* /& • | исходные данные При выполнении этого задания оператор ЭВМ получит исчер¬ пывающие сведения о своих функциях. Упомянем еще об одной важной особенности эксплуатации бидиалоговой системы. Оператор ЭВМ после окончания выпол¬ нения каждого задания пользователя имеет возможность запус¬ тить одно или несколько коротких заданий либо задание для раз¬ делов F1 или F2 с перфокарт или перфоленты, а также временно заблокировать бидиалоговый режим работы для выполнения ка¬ кого-либо задания со своего терминала — устройства SYSLOG. Если в момент окончания предыдущего задания на устройстве ввода перфокарт или перфоленты будут находиться какие-либо данные, а само это устройство — в состоянии готовности, то за¬ дание начнет вводиться с него, а терминал пользователя будет на это время заблокирован. При исчерпании данных, как и при моиодиалоговой конфигурации системы, будет установлена связь с устройством SYSLOG (§ 4.4). Если же система уже установила связь с терминалом пользователя, то до полного окончания про¬ цесса ввода с него задания терминал оператора SYSLOG и уст¬ ройства ввода перфокарт и перфоленты будут заблокированы. Таким образом система PALLADA в бидиалоговой компоновке дает оператору ЭВМ альтернативную возможность выбора режима ввода задания либо только с удаленного терминала пользователя (SYS015), либо с SYSLOG совместно с устройствами ввода перфо¬ карт и перфоленты (временный возврат к моиодиалоговой кон¬ фигурации системы). Бидиалоговый режим использования системы PALLADA на научно-исследовательском вычислительном центре разгружает пользователя от рутинных действий по эксплуатации ЭВМ, ог¬ раждает его от постоянного шума машинного зала. Прямой диалог человек — ЭВМ, осуществляемый системой PALLADA, восстанавливает творческую компоненту в труде про¬ граммистов, препятствуя возникновению неврозов из-за противо¬ речия между монотонностью и трудностью их работы [32]. Диалоговая система оздоровляет психологический климат на вычислительных центрах, испытывающих хроническую нехватку машинного времени, обеспечивая легкую эксплуатацию ЭВМ в мультипрограммном режиме, что является основой для быстрого и качественного создания новых системных, экспериментальных и прикладных программ. Приспособление математического обеспечения ЭВМ Единой системы к особенностям творческой деятельности человека в ус¬ ловиях непосредственного контакта с диалоговым устройством сможет значительно расширить сферу их применения и улучшить эффективность их использования в народном хозяйстве.
Глава V ГЕНЕРАЦИЯ ДИАЛОГОВОЙ СИСТЕМЫ § 5.1. Что такое генерация системы. Генерацией называете;! процесс создания работоспособной операционной .системы, от вечающей потребностям вычислительного центра и поддерживаю¬ щей работу всех периферийных внешних устройств вычислитель¬ ного комплекса [27]. Процесс генерации диалоговой системы включает в себя; — планирование расположения и размеров библиотечных файлов: — планирование расположения и размеров рабочих файлов и файлов диалоговой системы; — планирование функций супервизора; — формирование файлов постоянных директив диалоговой системы: — редактирование и каталогизация в системную библиотеку абсолютных модулей составных частей диалоговой системы и. нового модифицированного супервизора. Перед началом работы по созданию диалоговой системы поль¬ зователь должен очень хорошо продумать и спланировать располо¬ жение и размер собственно резидентного файла системы ДОС, ее рабочих файлов, файлов личных библиотек SL и RL, а также файлов заданий и постоянных директив диалоговой системы, что значительно облегчит ее дальнейшую эксплуатацию. Результатом процедуры генерации является формирование нескольких пакетов магнитных дисков: резидентный пакет, содержащий как минимум системные библиотеки и файл постояи ных директив фонового раздела, также один или несколько вспо¬ могательных пакетов, содержащих в произвольном порядке файлы личных библиотек, файлы заданий, файлы постоянных дирек¬ тив разделов переднего плана и различные рабочие файлы. Количество и структура вспомогательных пакетов зависят как от числа иользователй ВЦ, так и от количества накопителей на магнитных дисках (НМД). Комплект одновременно используемых пакетов магнитных дис¬ ков (резидентный и один или несколько вспомогательных) являет¬ ся операционным [27]. В дальнейшем процедура генерации диалоговой системы бу¬ дет рассматриваться на примере вычислительного комплекса, содержащего два НМД, одну пультовую пишущую машинку в качестве диалогового устройства и стандартный набор других устройств ввода—вывода информации. 104
§ 5.2. Планирование стандартных файлов операционной си¬ стемы. Перед процедурой генерации диалоговой системы следует спланировать расположение и размеры библиотечных файлов, исходя из количества программ, которые было бы желательно постоянно хранить и обновлять, а также из числа НМД, вхо¬ дящих в состав вычислительного комплекса. Прикинуть необ¬ ходимый размер какой-либо библиотеки как личной, так и систем¬ ной очень просто следующим образом. Величина резидентного файла в общем случае рассчитывается по формуле Tv = X (Tql + TRL + Tsl) + С, а размеры личных библиотек — еще проще: TcLPR — X Тсь Trlpr — X Trl TslPR = X Tsb7 где Ts — размер резидентного файла (в дорожках); Tclpr, Trlpr, Tslpr — размеры файлов личных библиотек CL, RL и SL соот¬ ветственно (в дорожках); Tql, Trl, Tsl — количество цилиндров, отведенных для личной или системной библиотеки CL, RL или SL и ее оглавления; X — количество дорожек на цилиндре пакета магнитных дисков; С — константа. Для НМД ЕС-5052 X = 10, С =19, Для НМД ЕС-5061 Х = = 20, С = 39. При вычислении величин Tcl, Trl и Tsl следует пользоваться приложением Н [5, 17, 27]. Рассмотрим правила планирования файлов постоянных дирек¬ тив и файлов заданий. Файлы постоянных директив для каждого из разделов имеют минимальную длину, т. е. занимают одну дорожку пакета маг¬ нитных дисков. Файл постоянных директив фонового раздела удобнее всего разместить на резидентном пакете. Величина файлов SYSOPT определяется максимальным числом записей исполняемого в данном разделе рабочего задания. Ве¬ личина файла SYSLST, используемого для вывода листинга программы пользователя в основном при ее отладке, выбирается такой, чтобы вместить листинг среднего по величине задания. Размер каждого из атнх файлов определяется по формуле Т3 = L/Ka, (1) где Т.- — размер файла заданий (в дорожках), L — либо длина максимального задания (количество в нем 80-байтовых записей Для файла SYSOPT), либо максимальное количество 121-байтовых строк в листинге программ для файла SYSLST; Кя — количество 80-байтовых записей для файла SYSOPT либо 121-байтовых за¬ писей для файла SYSLST па одной дорожке пакета магнитных дис¬ ков; Кя для НМД ЕС-5052 равно 25 для файла SYSOPT и 19 для файла SYSLST, а для НМД ЕС-5061—40 и 32 соответственно. 105
Нам осталось рассмотреть планировку рабочих файлов, исполь зуемых различными системными программами. Обычно ограни чиваются разметкой четырех-пяти рабочих файлов, а именно для логических устройств SYS001, SYS002, SYS003, SYSLNK и SYS004 (в случае эксплуатации транслятора с языка КОБОЛ). Оптималь¬ но файлы для SYS001 и SYS002 размещать на одних и тех же цилиндрах один над другим, пользуясь механизмом организации файлов с разделенными цилиндрами (§ 3.9). Размеры рабочих файлов так же, как и размеры файлов зада¬ ний, зависят от величины и сложности обрабатываемых программ и при решении обычных задач (1000-^1500 операторов) в случае использования НМД ЕС-5052 могут не превышать следующих зна чений: В случае эксплуатации на вычислительном комплексе НМД ЕС-5061 приведенные значения можно уменьшить в два раза. Подчеркнем, что для повышения устойчивости работы НМД ЕС-5052 при эксплуатации диалоговой системы никогда не сле¬ дует размещать файл заданий фонового раздела и файл для логи¬ ческого устройства SYSLNK на одном пакете дисков. Если при эксплуатации диалоговой системы предусматривает¬ ся режим вывода листингов программ на дисковый файл (скажем, для дальнейшего их просмотра на экране дисплея), то при про¬ цедуре планирования операционного комплекта дисков следует предусмотреть место и для файла SYSLST. Отметим, что этот файл имеет достаточно большие размеры (см. (1)), так как листинг самой обычной программы редко занимает меньше 1000 строк. Таким образом, для файла SYSLST приблизительно должно быть отведено 120 дорожек (в случае НМД ЕС-5052). Остановимся на одной важной особенности диалоговой системы. Отладка программ с помощью диалоговой системы ведется только в фоновом разделе. Следовательно, и использование дисп¬ лея для этой цели — просмотр на экране листингов программ, сформированных при установке режима // ACTION DISPLY, также должно проводиться в этом разделе. Указанная операция может быть выполнена при бидиалоговой конфигурации системы PALLADA и особенно эффективна при удалении из машинного зала ВЦ терминала пользователя. В разделах же переднего плана использовать этот режим не имеет смысла, так как в них исполняются готовые программы, ив случае необходимости вывод результатов счета на экран дисплея может быть предусмотрен внутри этих программ. Файл SYS001 и SYS002 Количество дорожек 130 ч- 140 70 ч- 90 69 ч- 80 5 ч- 8 60 ч- 100 30 ч- 40 SYS003 SYSLNK SYS004 Файл заданий раздела BG Файлы заданий разделов F1 и F2 106
Таким образом, информация в файл SYSLST будет записывать¬ ся в подавляющем большинстве случаев программами, исполняю¬ щимися в фоновом разделе. И если возникнет необходимость ра¬ ботать с этим файлом в других разделах, то в это время режим //ACTION DISPLY для программ фонового раздела можно не ис¬ пользовать. Вывод очевиден: назначить файл SYSLST общим для всех раз¬ делов. Этим можно сэкономить место на пакетах дисков для дру¬ гих целей, что особенно важно при малом количестве НМД в вычислительном комплексе. § 5.3. Перераспределение системной библиотеки. Первым шагом процедуры генерации является переформирование резидентного файла, а именно размеров его системных библиотек, с целью мак¬ симального увеличения библиотеки абсолютных модулей. Первое задание этого шага генерации предназначено для рас¬ печатки оглавления тома резидентного пакета дисков, установ¬ ленного на НМД с номером Х'190': 1. // JOB LISTVTOC 4. // EXEC LISTVTOC 2. // ASSGN SYS004,Х'190' 5. /& 3. // ASSGN SYS005,X'00F' Распечатка оглавления тома. По оглавлению тома можно уточнить имя и размеры имеюще¬ гося резидентного файла для того, чтобы модифицировать опера¬ тор // DLBL второго задания, записанного в виде комментария. Второе задание предназначено для перераспределения систем¬ ных библиотек и изменения размера резидентного файла для опи¬ санной в конце §5.1 конфигурации периферийных устройств вы¬ числительного комплекса. Это задание имеет вид: 1. //JOB ALLOC 2. * DLBL IJSYSRS, 'ИМЯ РЕЗИДЕНТНОГО ФАЙЛА', 99/365 3. // PAUSE ВВЕДИ ПРАВИЛЬНЫЙ ОПЕРАТОР DLBL 4. // EXTENT SYSRES, SYSRES,,,1,1589 5. // EXEC MAINT 6. ALLOC CL-85(10), RL-34(10), SL-38(10) 7. /* 8. /& Перераспределение резидентного файла. В операторе ALLOC указываются желаемые размеры систем¬ ных библиотек (в цилиндрах). Подробнее эта функция программы Библиотекарь рассмотрена в [5, 17]. В данном задании для оглавлений всех системных библиотек назначается 10 дорожек магнитного диска. После распределения резидентного файла библиотека CL будет занимать 85, RL — 34, a SL—38 цилиндров. Однако перед выполнением этого задания все системные биб¬ лиотеки обязательно должны быть сжаты (§ 4.22), после чего поль¬ 107
зователь может проверить, хватает ли размера новых библиотек для размещения необходимых компонент операционной системы. Если данное условие не выполняется, нужно либо скорректиро¬ вать содержимое библиотек, удалив второстепенные программы и модули (§ 4.21), либо изменить размеры новых библиотек [5, 17] — тогда задание перераспределения будет выполнено без ошибок. Функция ALLOC так же, как и функция CONDS (§ 4.22), при сбое НМД и ЭВМ может привести к необратимой порче рези¬ дентного пакета дисков, поэтому всегда наготове следует иметь его копию. § 5.4. Формирование цилиндра меток. Вторым шагом процеду¬ ры генерации диалоговой системы является занесение для пос¬ тоянного хранения в область цилиндра меток резидентного пакета дисков информации, определяющей местоположение всех рас¬ смотренных выше файлов. Для рассматриваемого вычислитель¬ ного комплекса (§ 5.1) данный шаг генерации диалоговой системы состоит из четырех заданий, исполняемых последовательно. Сна¬ чала в фоновом разделе выполняются первые два задания, за¬ носящие стандартную информацию о метках файлов, общих для всех разделов, а также постоянную информацию о метках файлов фонового раздела (§ 3.9): 1. // JOB STDLABEL 2. // OPTION STDLABEL 3. // DLBL IJSYSLS, 'PALLADA LIST', 01/001 4. // EXTENT SYSLST,,,1,1833,100 5. // DLBL UIN, 'PALLADA LIST' 6. // EXTENT SYS009,,,1,1833,100 / . iC< Занесение стандартной информации о метках файлов. 1. // JOB PARSTD BG 2. // OPTION PARSTD 8. // DLBL IJSYS01 4. U EXTENT SYS001.SYSRES,8,1,1590.130,4 5. Ц DLBL IJSYS02 0. // EXTENT SYS002.SYSRES,8,1,1595, 130,9 7. // DLBL LI SY50.0 8. // EXTENT SYS003,SYSRES,, 1,1850,70 9. // DLBL IJSYSLN, 'PALLADA S' 10. // EXTENT SYSLNK,SYSRES,1,1920,67 11. // DLBL IJSYSPH, 'PALLADA S',01/001 12. // EXTENT SYSPCH,SYSRES,1,1920,67 13. // DLBL SYSINP, 'PALLADA S',01/001 14. // EXTENT SYS016,SYSRES„ 1,1920,67 15. // DLBL IJSYSIN, 'PALLADA IPL BG',9/365 16. // EXTENT SYSIN,SYSRES,.1,1989,1 17. // DLBL IJSYSRL,,99/365 18. /7 DLBL IJSYSSL 99/365 .19. // DLBL SYSOPT, 'PALLADA BG', 01/001 108
20. // EXTENT SYS017,,,1,1953,37 21. // DLBL SYSOPT1, 'PALLADA Fl',01/001 22. // EXTENT SYS017,,,1,1933,5 23. // DLBL SYSOPT2,'PALLADA F2',01/001 24. // EXTENT SYS017,„1,1938,15 25. /& Занесение постоянной информации о метках файлов фонового раздела. Следующие два задания заносят постоянную информацию о метках файлов разделов переднего плана и выполняются соответ¬ ственно каждое в своем разделе. Проще всего исполнить эти задания, выполнив ввод соответст¬ вующих операторов с пультовой пишущей машинки SYSLOG после инициализации пакетной обработки в соответствующем разделе по директиве программы Внимание BATCH F1 или BATCH F2 (§ 4.6). Для ввода этих заданий с перфокарт требуется перед выдачей директивы BATCH и назначением устройства чтения перфокарт, как SYSIN в данном разделе, отменить все назначения этого уст¬ ройства в первоначально функционирующем разделе, после чего прекратить пакетную обработку в указанном разделе по директиве STOP. Рассмотрим последовательно все операции пользователя для оптимального выполнения этой процедуры. 1. Ввести директивы DVCDN Х'ООС' и DVCDN X'OOF' для отмены всех назначений устройству чтения перфокарт с адресом Х'ООС' и алфавитно-цифровой печати с адресом X'OOF' 13, 17]. 2. Ввести директивы DVCUP Х'ООС7 и DVCUP X'OOF'. 3. Ввести директиву STOP. 4. Нажать кнопку ВН. 5. После установления связи с программой Внимание ввести директиву BATCH F1 или BATCH F2. 6. Нажать кнопку КТ для окончания связи с программой Вни¬ мание. 7. После установления связи с необходимым разделом ввести Директивы ASSGN SYSIN, Х'ООС' ASSGN SYSLST, X'OOF' 8. Нажать кнопку КТ, после чего подготовленное задание будет считано с перфокарт [3, 17]. Вот эти задания: 1. // JOB PAR STD Fl 2. // OPTION PAR STD 3. // DLBL IJSYSIN, 'PALLADA IPL Fl', 99/365 4. //EXTENT SYSIN,SYSRES,,1,1987,1 5. /& 109
Фели/елтль/л пакет tfucxoff fatfa/i) //МЛ 'Г 191 r о е местщ ^^АД4 UST(i3S<SlV Р*ШВА г 1 РАШ D A FI ^Al/АВА № Ле/7лмега/77елел//п пакет //аеке0 {ада* пли лее* ел е ее) X PALLADA IPL B& IJSY51K PALLADA IPL F1 X PALLADA IPL П SYSOPT PALLADA ва SYSOPT1 PALLADA F1 SYSOPT Z PALLADAFZ Л файлы лее/лелит/6/А \ йпрекеппй еле/77 ffe/л - ( е/77^/ещпл /раейе- ) ле0 ^ Файл6/ j а Ван пи I eeomffemem//у те - Г щах /7а*0еле0 Р4LLAIJA S - объеФат/е//- ла/и файл 13SV; 'Л, 13 SYS PH и 5YSINP Рис. 10. Рекомендуемое стандартное расположение файлов библиотек, постоянных и об¬ новляемых файлов диалоговой системы — компоновка операционного комплекта пакетов магнитных дисков для двух НМД Для различных вспомогательных пакетов дисков размер и размещение личных библиотек SR и SL может быть различным Занесение постоянной информации о’ метках файла SYSIN раздела F1. 1. // JOB PAR STD F2 2. // OPTION PARSTD 3. // DLBL IJSYSIN, 'PALLADA IPL F2',99/365 4. // EXTENT SYSIN,SYSRES,, 1,1988,1 5. /& Занесение постоянной информации о метках файла SYSIN раздела F2. После выполнения рассмотренных заданий операционный комплект из двух дисков можно считать размеченным согласно рис. 16. § 5.5. Формирование личных библиотек. Третьим шагом про¬ цедуры генерации является создание пустых личных библиотек исходных и объектных модулей на вспомогательном пакете дисков и занесение в них компонент модифицированного супер¬ визора и диалоговой системы. Задание для создания пустых личных библиотек исходных и объектных модулей выглядит следующим образом: 1. // JOB CORGZ 3. // EXTENT SYSRLB,,„1,300 2. // DLBL IJSYSRL„99/365 4. // ASSGN SYSRLB,X'191' 110
5. // DLBL IJSYSSL,,99/365 9. NEWVOL RL=30 6. // EXTENTSYSSLB,,„301,700 (10),SL= 70(10) 7. // ASSGN SYSSLB, X'191' 10. /* 8. // EXEC CORGZ 11. /& Создание ~пустых личных библиотек RL и SL на пакете дисков, установленном на НМД Х'191'. В операторе NEWVOL указываются желаемые размеры лич¬ ных библиотек (в цилиндрах). Подробнее эта функция описана в [5, 17]. В этом задании создаются пустая личная библиотека RL, занимающая 30 цилиндров, и пустая личная библиотека SL, за¬ нимающая 70 цилиндров. Подчеркнем, что расположение личных библиотек на вспомо¬ гательном диске может быть выполнено абсолютно произвольно, так как диалоговая система не накладывает на их расположение никаких ограничений, но требует присвоения этим библиотечным файлам только стандартных имен (в операторах Ц DLBL для личной библиотеки RL указывается имя IJSYSRL, а для личной библиотеки SL — IJSYSSL). Можно отметить, что во всех последующих заданиях операторы // DLBL и Ц EXTENT для библиотечных файлов могут быть опущены. Поиск этих файлов будет осуществляться стандартной системой ДОС на вспомогательном пакете дисков по их именам, хранящимся в области постоянной информации на цилиндре меток (§ 5.4). После создания личных библиотек RL и SL нужно поместить в них имеющиеся макроопределения генерации модифицирован¬ ного супервизора и диалоговой системы, а также ее перемещаемые модули (Приложение I) одним из известных способов. После этого операционный комплект дисков полностью готов к непосредственной работе по созданию нового адаптированного супервизора и редактированию программных фаз диалоговой системы. § 5.6. Супервизор диалоговой системы. Как указывалось выше, диалоговая система не может работать под управлением стандарт¬ ного супервизора ДОС ЕС, поэтому пользователь должен из мо¬ дулей, поставляемых совместно с диалоговой системой, создать новый, удовлетворяющий потребностям ВЦ. Этот новый супервизор выполняет все стандартные функции, а также, помимо них, дает возможность пользователю в любой момент быстро переключить систему из состояния задача в со¬ стояние супервизор с установкой нулевого ключа защиты памяти (с помощью команды SVC 240) и совершать обратное переключение. Это позволяет использовать в проблемных программах при¬ вилегированные команды, например, команды прямого чтения — RDD и прямой записи — WRD, без которых немыслимо прово¬ дить обработку экспериментальных данных в реальном масштабе 111
времени, управлять с помощью ЕС ЭВМ какими-либо биофизи¬ ческими процессами [6, 7]. Кроме того, появляется очень полезная возможность доступа ко всем областям оперативной памяти для их модификации. Новый супервизор имеет и дополнительную область связи — COMREG II, через которую информация может передаваться не только от одного шага задания к другому, но и от одного задания к другому. Макроопределения этого супервизора после выполнения третье¬ го шага генерации системы находятся в личной библиотеке ис¬ ходных модулей. Супервизор — очень большая программа, поэтому файлы IJSYS01 и IJSYS02, необходимые транслятору АССЕМБЛЕРА для его компиляции, следует расположить на том же пакете дис¬ ков, где находятся личные библиотеки. Одноименные файлы, определенные стандартно во втором шаге задания (§ 5.4), слиш¬ ком малы для этой задачи. Файл IJSYS03 удобно расположить на резидентном пакете дисков. Такое расположение рабочих файлов наиболее оптимально, и, следовательно, новый супервизор будет получен быстрее. В результате трансляции по прилагаемому заданию на маг¬ нитной ленте (например, с номером Х'281') будет получен объ¬ ектный модуль нового супервизора, который в дальнейшем нужно поместить в личную библиотеку RL. Это и составляет сущность четвертого шага генерации диалоговой системы. Задание на компиляцию модифицированного супервизора ДОС в общем виде имеет вид: 1. // JOB SUPVR 2. /7 DLBL IJSYS01 3. // EXTENT SYS001,, 8, 0, 1300, 340, 4 4. // ASSGN SYS001, X'191' 5. // DLBL IJSYS02 6. // EXTENT SYS002,, 8, 0, 1305, 340, 9 7. // ASSGN SYS002, X'191' 8. // DLBL IJSYS03 9. // EXTENT SYS003,,, 0, 1590, 260 10. // ASSGN SYS003, XT90' 11. //ASSGN SYSPCH, X'28U 12. // OPTION DECK 13. // EXEC ASSEMBLF 14. // REPRO 15. CATALR LTSUPVR 16. SUPVR .... 17. CONFG .... 18. STDJC LOG=NO, DATE = DMY, ... 19. FOPT OC=YES, SVC-NES, ... 20. PIOCS .... 21. ALLOC .... 112
22. ЮТАВ .... 23. D VC GEN ... 24. 25. 26. 27. ASSGN ... 28. 29. 30. 31. ASSGN SYS016, X'190' 32. ASSGN SYS017, X'191' 33. ASSGN SYS018, X'OOC' 34. ASSGN SYS019, X'008' 35. ASSGN SYS020, X'009' 36. SEND... 37. END 38. /* 39. I& Компиляция супервизора. В рассмотренном примере в макрокомандах генерации супер¬ визора указаны только параметры, ответственные непосредствен¬ но за включение режимов, необходимых диалоговой системе для функционирования, а именно параметры LOG=NO и DATE=DMY в макрокоманде STDJC и параметры OC=YES и SVC=YES в мак¬ рокоманде FOPT. Также в макрокоманде FOPT желательно, если позволяет ем¬ кость оперативной памяти, указать CBF=1 или CBF=2. В этом случае информация, подлежащая выводу на пультовую пишущую машинку, предварительно пересылается из области программы в специальный буфер, расположенный в супервизоре [27]. Такой режим значительно сокращает время ожидания завершения вы¬ вода сообщений на медленное диалоговое устройство процессором ЭВМ, чем увеличивает скорость обработки заданий системой PALLADA, что особенно важно при монопрограммном режиме ее эксплуатации (в макрокоманде SUPVR указанойМРЭ = N0). При использовании дисплея в качестве диалогового устройст¬ ва супервизор должен обеспечивать функционирование базисного телекоммуникационного метода доступа (в макрокоманде SUPVR нужно указать TP = ВТАМ) и содержать описание типа и физичес¬ кого адреса этого дисплея в макрокоманде DVCGEN. Чтобы иметь возможность эксплуатации диалоговой системы в мультипрограммном режиме, в макрокоманде SUPVR требу¬ ется задать параметры MPS=BJF и AP=YES, причем последний нужен для обеспечения произвольного переключения приори¬ тетов разделов. Для генерации перемещаемого загрузчика программных фаз в макрокоманде FOPT нужно указать параметр RL = YES [33]. При выполнении рассмотренного выше задания' на магнитную назначения этих устройств могут быть произведены и с по¬ мощью файла постоян¬ ных директив (§ 5.7) 113
ленту Х'28Г будет записан объектный модуль желаемого супер¬ визора, после чего на эту же ленту требуется записать концевую запись /* и маркер конца файла. Удобнее всего выполнить такую работу опять же с помощью системной программы DITTO, использовав директиву СТ [17] ^коэффициент блокирования следует задать равным 1). По этой директиве должны быть считаны две предварительно подготовленные перфокарты: карта с символами /* и карта без про¬ бивок (чистая). Четвертый шаг генерации завершается каталогизацией сфор¬ мированного на магнитной ленте Х'28Т объектного модуля нового -супервизора в личную библиотеку RL по следующему заданию: 1. // JOB CATAL SVC-RL 2. // ASSGN SYSRLB,Х'191' 4. // EXEC MAINT .3. // ASSGN SYSIPT,X'281' 5. /& Каталогизация объектного модуля супервизора с магнитной ленты Х'281' в личную библиотеку RL на НМД Х'191'. На пятом шаге генерации диалоговой системы производится редактирование и каталогизация в системную библиотеку аб¬ солютных модулей полученного или поставленного совместно с диалоговой системой адаптированного супервизора. Задание для этого шага: 1. // JOB CATAL SVC-CL 5. INCLUDE IJSUPVR 2. // ASSGN SYSRLB,X'191' 6. // EXEC LNKEDT 3. // OPTHON CATAL 7. & 4. ACTION CLEAR Редактирование и каталогизация в библиотеку нового супер® визора, ’объектный модуль которого имеет имя IJSUPVR. После выполнения этого задания на пультовую пишущую машинку выводится сообщение о каталогизации нового суперви¬ зора 1С90А NEW SUPERVISOR CATALOGED RE-IPL TO CONTINUE. Все последующие шаги генерации следует выполнять после повторной процедуры первоначальной загрузки системы ДОС с новым супервизором (§ 4.3). § 5.7. Формирование файлов постоянных директив. Процесс генерации собственно диалоговой системы делится на две части: — формирование файлов постоянных директив (т. е. занесе¬ ние в них на постоянное хранение необходимой информации); — создание программных фаз диалоговой системы в зависи мости от предъявляемых к ней требований и набора устройств ввода — вывода вычислительного комплекса, их редактирование и каталогизация в системную библиотеку абсолютных модулей* Сначала рассмотрим процесс формирования файлов постоян¬ ных директив. Как упоминалось ранее, каждый из разделов ЭВМ, программные задания для которых готовятся с помощью диало¬ говой системы, обязательно должен иметь такой файл (§ 2.2). 114
Файлы постоянных директив содержат неизменяемую часть этих, заданий, в которой записаны операторы постоянных назначений логических устройств ввода — вывода, оператор // UPS1, задаю¬ щий стандартные режимы функционирования диалоговой системы, оператор вызова основной фазы собственно диалоговой системы qPALLFOH или программы опроса ключа FGPWAIT1(FGPWAIT2) (§ 3.20) и операторы переключения для дальнейшего ввода зада¬ ния с файла SYSOPT соответствующего раздела. В §5.4 было рас¬ сказано, как можно занести на цилиндр меток информацию о рас¬ положении файлов постоянных директив на резидентном и вспо¬ могательном пакете магнитных дисков. Допустим, что она там уже содержится. Итак, в шестом шаге генерации диалоговой системы нужно в файлы постоянных директив для всех используемых разделов за¬ нести информацию, подготовленную на перфокартах. Задания для выполнения этого шага генерации содержат на¬ бор управляющих операторов для инициализации стандартной программы перезаписи карты-диск CDDK, а также содержат собст¬ венно записываемую на диск информацию. При генерации варианта диалоговой системы, отличающегося по расположению файлов от рассматриваемого, операторы опре¬ деления файла UOUT (SYS009) — см. ниже — должны полно¬ стью совпадать с информацией, определяющей файлы постоянных директив, имеющих имена PALLADA IPL BG (F1 или F2), ра¬ нее занесенной на цилиндр меток (§ 5.4). Задания имеют следующий вид: 1. // JOB PALLADA BG GENERATION 2. // ASSGN SYS004,X'00C' 3. // DLBL UOUT, PALLADA IPL BC',99/365 4. // EXTENT SYS009, SYSRES,,1,1989,1 5. // ASSGN SYS009, X'190' 6. // EXEC CDDK 7. // END 8. // UPSI 01101XXX 9. // ASSGN SYSSLB, X'191' 10. // EXEC П PALLFOH 11. // ASSGN SYSSLB,UA 12. // DLBL IJSYSIN,'PALLADA BG',01/001 13. CLOSE SYSIN,X'191' 14. /* 15. /& Формирование файла постоянных директив раздела BG. Опе¬ раторы с номерами 8ч-13 будут записаны на резидентный пакет Дисков, установленный на НМД Х'190'. 1. // JOB PALLADA FI GENERATION 2. U ASSGN SYS004,X'00C' 3. // DLBL UOUT, 'PALLADA IPL FI',99/365 4. // EXTENT SYS009,SYSRES,,1,1987,1 115
5. // ASSGN SYS009,X'190' 6. // EXEC CDDK 7. // END 8. ASSGN SYSLST,X'283' 9. // EXEC FGPWAIT1 10. STOP 11. // DLBL IJSYSIN,'PALLADA Fl' 12. CLOSE SYSIN,X'191' 13. /* 14. /& Формирование файла постоянных директив раздела Fl. Опе¬ раторы с номерами 8 ч-12 будут перенесены на вспомогательный .пакет дисков, установленный на НМД Х'191'. 1. // JOB PALLADA F2 GENERATION 2. // ASSGN SYS004,Х'ООС' 3. // DLBL UOUT, 'PALLADA IPL F2'f99/365 4. // EXTENT SYS009,SYSRES„1.1988,1 5.J// ASSGN SYS009,X'190' 6.7/ EXEC CDDK 7. // END 8/| ASSGN SYSLST,X'282' 9. // EXEC FGPWAIT2 1 . // DLBL I JSYSIN, 'PALLADA F2' 11. CLOSE SYSIN,X'191' 12. /* 13. /& Формирование|файла постоянных директив раздела F2. Опе¬ раторы с номерами 8 ч-11 будут перенесены на вспомогательный пакет дисков, установленный на НМД Х'191'. Остановимся еще на двух аспектах задачи. Требуется рассмот¬ реть, для каких логических устройств, используемых диалоговой системой, обязательно должны быть выполнены постоянные наз¬ начения, а также задание стандартных режимов работы диалого¬ вой системы с помощью оператора // UPSI. Диалоговая система всегда работает с приведенным в табл. 1 комплексом логических устройств, но адреса назначаемых им фи¬ зических устройств при генерации нестандартного варианта сис¬ темы, естественно, могут отличаться от указанных. Рассматриваемый в главе вариант системы PALLADA являет¬ ся монодиалоговым, поэтому назначение для SYS015 не задано ни. стандартным, ни постоянным образом. Директивы ASSGN с указанием назначений этих устройств (§ 3.9) могут быть включены в задание формирования файла по¬ стоянных директив фонового раздела перед оператором Ц UPSI, однако в стандартном варианте этого задания они отсутствуют, так как все эти устройства определены при генерации нового су¬ первизора, т. е. назначены стандартно (§J5.6). 116
Таблица 1 Логическое устройство Функция хАдрес физического устройства SYSLST Вывод систвхлшого листинга X'OOF' SYSPCH Вывод сервисной информации на перфокарты X'OOD' SYSLOG Диалоговое устройство —пультовая пишущая машинка (рабочее место оператора) X'OIF' 3YS015 Диалоговое устройство при бидпало- говой конфигурации системы — вто¬ рая пишущая машинка или дисплей (рабочее место пользователя) 8 Y SO 16 Чтение дискового файла PALLADAS (SYSLNK) — обычно на резидент¬ ном пакете дисков Х'190' SYS017 Формирование файла {заданий (SYSOPT) для каждого из разделов. Все зти файлы должны быть распо¬ ложены на одном вспомогательном пакете дисков Х'191' SYS01S Ввод задания с перфокарт Х'ООС' SYS019 Ввод задания с перфоленты Х'008' SYS020 Вывод сервисной информации на перфоленту Х'009' Теперь рассмотрим способ задания стандартных режимов функционирования системы PALLADA с помощью оператора // UPSI. Как указывалось в § 3.10, изменяя конфигурацию битов (па¬ раметр) этого оператора, можно модифицировать байт програм¬ мных переключателей в области связи супервизора. В табл. 2 при¬ ведены стандартные режимы. Знак «X» в параметре сохраняет ранее установленное значение бита в байте переключателей. В задании формирования файла постоянных директив фоново¬ го раздела присутствует оператор Ц UPSI 01101ХХХ, значит, стандартными режимами сгенерированной системы будут следую¬ щие: 1. PenaiM^NOLIST. 2. Автоматическое назначение личных библиотек SL и RL на НМД Х'191'. 3. MPS = BJF. 4. Режим PRINT. 5. Обеспечение произвольного изменения приоритетов разде¬ лов 3 ЭВМ. 117
Т а о л и ц а 2 Оператор UPSI (та идл ртн ый режим // UPSI 1X XXXXX X // UPSI оххххххх // UPSI Х1ХХХХХХ // UPSI хохххххх // UPSI ХХ1ХХХХХ // UPSI ххоххххх // UPSI ХХХ1ХХХХ // UPSI хххохххх // UPSI XX XXIXXX // UPSI ххххоххх Режим LIST — распечатка на SYSLST всего текста задания Режим NOLIST — распечатка на SYSLST только управляющих операторов задания Автоматическое назначение Х'191' для личных библиотек SL и RL Библиотеки SL и RL автоматически не назнача¬ ются Диалоговая система с мультипрограммировани¬ ем. MPS = BJF Диалоговая система без мультипрограммирова¬ ния. MPS = N0 Режим DISPLY — вывод листинга заданий на диски (Х'191') Режим PRINT — вывод листинга заданий на алфавитно-цифровую печать Разрешение использования операций изменения приоритетов разделов ЭВМ (при обеспечении су¬ первизором мультизадачной работы указан па¬ раметр АР = YES (§ 5.6)) Изменение приоритетов разделов не допускает¬ ся — эксплуатация диалоговой системы в режиме- с фиксированными приоритетами разделов Если личные библиотеки RL и SL, а также файл IJSYSLS (для вывода листинга заданий в режиме DISPLY) располагаются на различных пакетах дисков или если вспомогательный пакет установлен на НМД с адресом, отличным от Х'191', то для по¬ лучения работоспособной системы PALLADA требуется скорректи¬ ровать таблицу назначений — макроопределение A. IPDTABR (§ 5.9). § 5.8. Генерация модулей диалоговой системы. Опишем про¬ цесс сборки, редактирования и каталогизации программных фаз системы PALLADA в системную библиотеку абсолютных моду¬ лей — седьмой шаг генерации. Это заключительный шаг, после его выполнения пользователь может приступать к эксплуатации диалоговой системы. Диалоговая система включает в себя основную Управляющую программу, семь транзитных фаз и четыре вспомогательные про¬ граммы. Поименный список этих программ с транзитных фаз и объектных модулей, необходимых для их редактирования, рас¬ смотрен в Приложении I. Рассмотрим последовательность редактирования этих про¬ граммных фаз. Сначала нужно сгенерировать основную Управляющую про¬ грамму-фазу с именем qPALLFOH. Три шага этого зада¬ 118
ния представляют собой трансляцию с языка АССЕМБЛЕР макрокоманд генерации системы: A. IPDEFL, A. IPDTABR и A. IPDSET. Рассмотрим их подробнее. Макрокоманда A. IPDEFL служит для указания системе PALLADA максимальных размеров файлов заданий для каждого яз разделов. Ее формат следующий: IPDEFL BG, FI, F2 [,DSKTYP = шифр] nBG — число дорожек файла заданий в фоновом разделе, nFl — число дорожек файла заданий в разделе F1, nF2 — число дорожек файла заданий в разделе F2, BG, FI, F2 — десятичные целые константы, шифр — шифр НМД, входящих в вычислительный комплекс 5052 или 5061. При отсутствии этого параметра подразумевается 5052. A. IPDTABR представляет собой таблицу стандартных опера¬ торов, из которых совместно с входным потоком данных диало¬ говая система формирует необходимое программное задание. Если файлы диалоговой системы располагаются не на тех НМД, как принято при ее стандартной компоновке, то перед редактирова¬ нием фазы nPALLFOH необходимо с помощью программы Биб¬ лиотекарь внести в эту таблицу коррективы (§ 5.9). Макрокоманда A. IPDSET предназначена для задания прио¬ ритетности устройств ввода данных (перфокарты — перфолента), выбора типа диалогового устройства и конфигурации системы (монодиалоговая—бидиалоговая), а также для задания необхо¬ димых приоритетов разделам ЭВМ — фоновому, F1 и F2. Формат этой макрокоманды следующий: IPDSET [INPUT1 = устройство 1,] [INPUT2 = устройство 2,] [INPUTBG = диалоговое устройство,] [AREA = (список раз¬ делов)] устройство 1 — адрес устройства, обладающего 1 приоритетом при вводе задании с перфоленты или с перфокарт. Если этот параметр опущен, подра¬ зумевается шифр Х'ООС'. устройство 2 — адрес устройства, обладающего 2 приоритетом при вво¬ де заданий с перфоленты или перфокарт. Если этот параметр опущен, то под¬ разумевается шифр Х'ЗОО' — этот шифр не соответствует ни одному устрой¬ ству вычислительного комплекса; таким образом, можно сгенерировать си¬ стему, читающую входной поток данных только с одного первого устройства. диалоговое устройство — адрес второй пультовой пишущей машинки или дисплея при бидиалоговои конфигурации системы и Х'ЗОО' при моно- диалотовой. список разделов — список разделов ЭВМ BG, FI, F2. Порядок их напи¬ сания определяет приоритетность слева направо (слева самый приоритетный). При опускании этого параметра список имеет следующий вид: BG, FI, F2. Следует отметить, что шифры устройств в параметрах макро¬ команды записываются без буквы «X» и апострофов. Например, адрес Х'ООС' должен быть записан как 00С. 119
После того, как пользователь выбрал нужные параметры мак¬ рокоманд и скорректировал таблицу IPDTABR, можно переком¬ поновать задание для генерации фазы nPALLFOH. Для стандартной конфигурации диалоговой системы это зада¬ ние имеет вид 1. // JOB nPALLFOH 2. // LOG 3. // OPTION CATAL 4. ACTION RL 5. PHASE nPALLFOH,S,NOAUTO 6. INCLUDE IPDBEGIN 7. // EXEC ASSEMBLY 8. IPDENFL START 9. IPDEFL 37,5,15 10. END 11. /* 12. //kEXEC ASSEMBLY 13. COPY IPDTABR 14. END 15. /* 16. // EXEC ASSEMBLY 17. IPDSETBN START 18. USING *,4 19. IPDSET INPUT2=008 20. END 21. /* 22. INCLUDE IPDXXX 23. // EXEC LNKEDT 24. /& Редактирование и каталогизация управляющей фазы П PALLF0H в системную библиотеку абсолютных модулей. Заметим, что в этом и во всех рассмотренных ниже заданиях оператор ACTION RL следует использовать только в системе ДОС, содержащей перемещаемый редактор, разработанный в ИКИ АН СССР [33]. Опишем подробно конфигурацию стандартного варианта диа¬ логовой системы. 1. Файлы заданий всех разделов расположены на НМД Х'191'. 2. Файл постоянных директив фонового раздела и файл PALLADA S (рис. 16) расположены на НМД Х'190'. 3. Файлы постоянных директив разделов F1 и F2 расположены на НМД Х'191'. 4. Размер файла заданий фонового раздела не превосходит 37 дорожек НМД ЕС-5052. 5. Размер файла заданий раздела F1 не превосходит 5 дорожек НМД ЕС-5052. 6. Размер файла заданий раздела F2 не превосходит 15 доро¬ жек Р1МД ЕС-5052. 120
7, Устройство ввода первого приоритета — устройство чтения перфокарт Х'ООС'. 8, Устройство ввода второго приоритета — устройство чтения перфоленты Х'008'. 9. Конфигурация системы — монодиалоговая. 10. Приоритетность разделов ЭВМ: BG. FI, F2; имеется воз¬ можность ее произвольного изменения. Для выполнения дальнейших заданий необходимо по листингу Редактора связей установить смещение точки входа с именем IPDR.TEND относительно начального адреса раздела. Это смеще¬ ние (шестнадцатеричное число) следует указать во всех операторах PHASE ниже следующих заданий редактирования транзитных фаз. за исключением П PALLF0R. Последняя фаза представляет из себя вторичный транзит, т. е. такую транзитную фазу, которую в оперативную память загружает не основная программа, а пер¬ вичный транзит П PALLF0S. При редактировании nPALLFQR в операторе PHASE следует указать смещение, равное относи¬ тельному адресу IPDRTEND, увеличенному на 4816. Полученная при такой модификации заданий диалоговая си¬ стема будет построена оптимально с точки зрения использования оперативной памяти. Этот вариант требует для функционирования приблизительно 25 килобайт (примерно 20К — Управляющая программа с транзитными фазами и 5К — рабочее поле). Подчерк¬ нем, что чем больше памяти выделено под рабочее поле системы, тем быстрее выполняется оператор копирования (§ 3.11). Само же рабочее поле располагается от указанного в макрокоманде AIPDARB (задается в фазе QPALLF0J) адреса оперативной памяти (смещение относительно начала раздела) до конца фо¬ нового раздела. Если же фоновому разделу постоянно выделяется свыше 40 К’ оперативной памяти, то об оптимальности строения диалоговой системы можно не заботиться и не модифицировать заданий для редактирования и каталогизации транзитных фаз. Вот эти задания: 1. // JOB пPALLF0A 5. PHASE aPALLF0A,S+X'4000' 2. // LOG 6. INCLUDE IPDJCTLA 3. // OPTION CATAL 7. /,/ EXEC LNKEDT 4. ACTION RL 8. /& Редактирование и каталогизация транзитной фазы nPALLFOA* 1. // JOB п PALLFOC 5. PHASE П PALLFOC,S+X'4000' 2. // LOG 6. INCLUDE IPDJCTLC 3. // OPTION CATAL 7. // EXEC LNKEDT 4. ACTION RL 8. /& Редактирование и каталогизация транзитной фазы Q PALLFOC. 1. И JOB ПPALLF0D 5. PHASE nPALLF0D,S+X'4000' 2. // LOG 6. INCLUDE IPDJCTLD 3. // OPTION CATAL 7. // EXEC LNKEDT 4. ACTION RL 8. /& 121
Редактирование и каталогизация транзитной фазы nPALLFOD. 1. //JOB ПPALLF0F 5. PHASE nPALLF0F,S+X'4Q00' 2. // LOG 6. INCLUDE IPDJCTLF 3. // OPTION CATAL 7. // EXEC LNKEDT 4. ACTION RL 8. /& Редактирование и каталогизация транзитной фазы nPALLFOF. 1. //JOB ПPALLFOS 5. PHASE nPALLF0S,S-rX'4000' 2. // LOG 6. INCLUDE IPDJCTLS 3. // OPTION CATAL 7. // EXEC LNKEDT 4. ACTION RL 8. I& Редактирование и каталогизация транзитной фазы Q PALLFOS- 1. // JOB n PALLFOR 6. INCLUDE IPDJCTLR 2. // LOG 7. INCLUDE IPDOUTCD 3. // OPTION CATAL 8. INCLUDE IPDOUTLB 4. ACTION RL 9. // EXEC LNKEDT 5. PHASE QPALLFOR, 10. /& S+X'4048', NOAUTO Редактирование и каталогизация транзитной фазы П PALLFOR. Редактирование транзитной фазы nPALLFOJ также подчи¬ няется общему правилу. Ее отличие в том, что в этом задании так же, как и в задании на редактирование основной управляю¬ щей фазы nPALLFOH, присутствует трансляция с языка АССЕМБЛЕР маленькой подпрограммы, которая состоит из мак¬ рокоманды A.IPDARB. Макрокоманда A.IPDARB предназначена для задания отно¬ сительного адреса начала рабочего поля диалоговой системы. Формат этой макрокоманды следующий: 1PDARB адрес адрес — четырехзначная шестнадцатеричная константа, определяющая начальный адрес рабочего поля (смещение) относительно начального адреса раздела BG. Незначащие нули в этой константе не опускаются. Сама же конс¬ танта должна быть кратна 10i6. При оптимальном планировании диалоговой системы операнд этой макрокоманды вычисляется как разница между последним адресом фазы ПPALLFOR (HICORE в листинге Редактора свя¬ зей) и начальным адресом фонового раздела. Задание для редактирования фазы nPALLFOJ в стандартном варианте имеет следующий вид: 1. // JOB QPALLF0J 7. // EXEC ASSEMBLY 2. //LOG 8. IPDADEND START 3. // OPTION CATAL 9. IPDARB 5000 4. ACTION RL 10. END 5. PHASE nPALLFOJ,S+ 11. /* X/4000' 12. // EXEC LNKEDT 6. INCLUDE IPDJCTLJ 13. /& 122
Редактирование и каталогизация транзитной фазы CjPALLFOJ. Теперь необходимо закаталогизировать в системную библио¬ теку абсолютных модулей вспомогательные программы. Две нз них поддерживают функцию оператора CATALR(3.8) — qPALLFOT и Q PALLF0L. 1. Ц J033 П PALLF0T 5. PHASE nPALLFOT,S 2. // LOG 6. INCLUDE IPDERRT 3. // OPTION CATAL 7. // EXEC LNKEDT 4. ACTION RL 8. /& Редактирование и каталогизация вспомогательной программы П PALLF0T. 1. И JOB QPALLF0L 2. // LOG 3. // OPTION CATAL 4. ACTION RL 5. PHASE nPALLFOL,S 6. INCLUDE IPDERRL 7. // EXEC ASSEMBLY 8. IPDSETBN START Редактирование и каталогизация вспомогательной программы П PALLF0L. Две оставшиеся программы нужно редактировать только в случае генерации диалоговой системы, поддерживающей режим мультипрограммирования — это программы опроса ключей FGPWAIT1 и FGPWAIT2. Для генерации этих программ служит макрокоманда A.IPDMUL: 9. USING *,4 10. IPDSET INPUT2-008 И. END 12. /* 13. INCLUDE IPDINPBG 14. // EXEC LNKEDT 15. /& IPDMUL [AREA = раздел,] =е V SCAN iSTOpj раздел — идентификатор раздела переднего плана. Для генерации про¬ граммы FGPWAIT1 имеет значение F1, для программы FGPWAIT2 — F2. N0 — Глогнка[ожидания в данной программе не генерируется (режим по умолчанию). STOP — логика ожидания генерируется. Логика ожидания может генерироваться только для раздела, всегда имеющего самый низкий приоритет. В этом случае обес¬ печивается автоматический запуск сформированных заданий (§ 4.7). Директива STOP не должна включаться в этом случае в файл .постоянных директив указанного раздела, так как включение в программу опроса ключа логики ожидания гарантирует останов¬ ку пакетной обработки до окончания формирования на файле SYSOPT нового задания. Если внимательно посмотреть на задания формирования фай¬ лов постоянных директив разделов F1 и F2 (§ 5.7), то можно за- 123
метить, что в стандартном варианте диалоговой системы логика ожидания должна быть сгенерирована для программы FGPWAIT2, так как в файл постоянных директив раздела F2 не включена директива STOP (§ 5.7). Рассмотрим два задания, завершающих процедуру генерации диалоговой системы. 1. //JOB FGPWAIT1 7. USING *,5 2. //OPTION CATAL, LOG 8. IPDMUL AREA=FI 3. PHASE FGPWAIT1, +0 9. END 4. // EXEC ASSEMBLY 10. /* 5. IPDWAIT1 START 11. // EXEC LNKEDT 6. BALR 5,0 12. /& Редактирование и каталогизация программы опроса ключа для раздела FI — FGPWAIT1. 1. // JOB FGPWAIT2 2. // OPTION CATAL, LOG 3. PHASE FGPWAIT2, +0 4. // EXEC ASSEMBLY 5. IPDWAIT2 START 6. BALR 5,0 7. USING *,5 8. IPDMUL AREA=F2. SCAN=STOP 9 END 10. /* 11. // EXEC LNKEDT 12. /& Редактирование и каталогизация программы опроса ключа с логикой ожидания для раздела F2 — FGPWAIT2. В заключение отметим, что эти две программы являются само- перемещаемыми и редактируются относительно нулевого адреса (4, 17], поэтому оператор ACTION RL в данном случае применять нельзя [33]. § 5.9. Коррекция таблицы стандартных назначений. Рассмо¬ трим, каким образом можно изменить таблицу назначений, хра¬ нящуюся в личной библиотеке исходных модулей под именем A.IPDTABR для создания работоспособной диалоговой системы при нестандартном расположении ее файлов (рис. 16 и § 5.8) и при нестандартных адресах, эксплуатирующихся в вычислитель¬ ном центре устройств ввода—вывода. Книга A.IPDTABR имеет следующий вид: 1. TITLE 'ТАБЛИЦА УПРАВЛЯЮЩИХ ОПЕРАТОРОВ' 2. IPDTABR START 3. DC CL64' // JOB' 4. DC CL64'// ASSGN SYSLOG, X"0iF‘" 5. DC CL64'' 124
6, DC CL64' // JOB PALLADA' 7. DC CL64'//ASSGN SYSLOG, X"01F'" 8. DC CL64' // ASSGN SYSRLB, X"I91'" 9. DC CL64'//ASSGN SYSSLB, X"191'" 10. DC CL64' // ASSGN SYSRLB, UA' И. DC Cl,64' // ASSGN SYSRLB, UA' 12. DC CL64' // DLBL IJSYSIN, "PALLADA IPL BG'" 13. DC CL64' CLOSE SYSIN, X"190"' 14. DC CL64' И ASSGN SYSIPT, X"00C'" 15. DC CL64' CATALS' •16. DC CL64' BKEND' 17. DC CL64' / *' 18. DC CL64'//OPTION DECK' CL64' ASSGN SYSPCPI, X"190'" 19. DC 20. DC CL64' // EXEC MAINT' 21. DC CL64' CLOSE SYSPCH, X"00D'" 22. DC CL64' 1/ EXEC 53 PALLFOT' 23. DC CL64' // EXEC 53 PALLFOL' 24. DC CL64' ASSGN SYSLST, X"191'" 25. DC CL64' CLOSE SYSLST, X"00F"' 26. DC CL64' / &&' 27. DC CL8T90' 28, END Рассмотрим назначение некоторых интересующих нас строк этой таблицы: — строки 4 и 7 описывают операторы ASSGN для пультовой пишущей машинки. Стандартный адрес этого устройства X'OIF'; — строки 8 и 9 описывают операторы ASSGN для личных библиотек объектных (SYSRLB) и исходных (SYSSLB) модулей. Стандартно принимается, что эти библиотеки расположены на НМД Х'191'; — строка 13 описывает директиву переключения пакетной обработки с файла заданий на файл постоянных директив, кото¬ рый обычно находится на НМД Х'190'; — строка 14 описывает оператор ASSGN для устройства SYSIPT (ввод исходных данных с перфокарт). Стандартный адрес устройства ввода перфокарт Х'ООС'; — строки 19 и 21 описывают директивы переключения устрой¬ ства SYSPCH на файл PALLADA S (рис. 16) и обратно на устрой¬ ство вывода перфокарт. Стандартно принимается, что этот файл находится на НМД Х'190', а устройство вывода перфокарт имеет адрес X'OOD'; — строки 24 и 25 описывают директивы переключения устрой¬ ства SYSLST в режиме DISPLY (§ 3.6) на файл PALLADA LIST (рис. 16) и обратно на алфавитно-цифровую печать или магнитную ленту. Стандартно принимается, что этот файл находится на НМД Х'191', а^устройство печати имеет^адрес X'OOF'; 125
— строка 27 хранит адрес НМД, на котором расположены файлы постоянных директив разделов F1 и F2 для модификации по оператору DETUR строки 13 настоящей таблицы (§ 3.5). Для предотвращения ошибок следует очень аккуратно отно¬ ситься к записи корректирующих строк, особенно обращая вни¬ мание на количество апострофов, в которые заключен новый адрес физического внешнего устройства. Модифицировать книгу A.IPDTABR можно с помощью про¬ граммы Библиотекарь по стандартной методике, подробно рас¬ смотренной в § 4.16. § 5.10. Шаги генерации диалоговой системы. В заключение ■еще раз последовательно перечислим все шаги генерации диало¬ говой системы. Шаг первый — перекомпоновка резидентного файла — изме¬ нение его размеров, размеров системных библиотек, корректи¬ ровка их содержания. Шаг второй — занесение информации о системных файлах на цилиндр меток резидентного пакета дисков. Шаг третий — создание личных библиотек объектных и ис¬ ходных модулей и каталогизация в них стандартных модулей супервизора и диалоговой системы. Шаг четвертый — формирование, трансляция и каталогизация в личную библиотеку объектных модулей нового супервизора, адаптированного к диалоговой системе. Шаг пятый — редактирование и каталогизация нового супер¬ визора в системную библиотеку абсолютных модулей; после окон¬ чания этого шага генерации системы требуется повторно выпол¬ нить процедуру первоначальной загрузки ДОС ЕС. Шаг шестой — занесение информации с перфокарт в файлы постоянных директив для всех разделов ЭВМ — фонового, F1 и F2. Шаг седьмой, заключительный — сборка, редактирование и каталогизация в системную библиотеку абсолютных модулей программных фаз диалоговой системы PALLADA. После завершения генерации новой операционной системы ■следует обязательно сделать ее копию, сформировав свою систем¬ ную ленту. Она должна содержать резидентный файл, файлы постоянных директив всех разделов и, если необходимо, личные библиотеки исходных и объектных модулей. Данную процедуру надежнее всего выполнить с помощью системно-независимой программы копирования диск—лента по стандартной методике, подробно описанной в [17, 27]. В случае порчи операционного комплекта дисков его всегда легко восстат новить с помощью этой ленты, выполнив процедуру восстановле¬ ния операционной системы, также подробно описанной в [17, 27].
Глава VI МЕТОДИКИ ПРОГРАММИРОВАНИЯ И СИСТЕМНЫЕ МАКРОКОМАНДЫ § 6.1. Введение. Диалоговая система разработана по прин¬ ципам модульного программирования. Многие ее подпрограммы,, а также основные блоки написаны с использованием оригиналь¬ ных макрокоманд. В этой главе будут подробно описаны некоторые из них, а также разобраны полезные, но мало распространенные методики программирования, широкое применение которых стало возможным благодаря модификации системы ДОС. Знакомство с этим материалом может заинтересовать систем¬ ных программистов и разработчиков математического обеспече¬ ния для автоматизации научных исследований и производствен¬ ных процессов и, может быть, решить некоторые их проблемы. Полный перечень оригинальных системных макрокоманд,, предлагаемых читателю, приведен в Приложении J. § 6.2. Макрокоманды ONSVC и OFSVC. Как известно, процес¬ сор ЕС ЭВМ может находиться в трех состояниях: задача, супер¬ визор и ожидание, причем только в двух первых из них могут ис¬ полняться его команды. Чем же отличаются эти два состояния и как переключить ЭВМ из одного состояния в другое? В состоянии задача исполняются почти все проблемные про¬ граммы пользователей. В этом состоянии допустимы все команды ЭВМ, кроме команд ввода—вывода и некоторых других привиле¬ гированных команд. Эти команды могут быть выполнены только в состоянии супервизор. Возможность работы процессора ЕС ЭВМ в этих двух состояниях облегчает отладку и исправление ошибок в программах [12]. К сожалению, в состоянии задача невозможно по указанной причине установить нулевой ключ защиты опера¬ тивной памяти для того, чтобы изменить некоторые поля в области супервизора или осуществить связь между задачами, исполняю¬ щимися в разных разделах, невозможно опросить состояние периферийного устройства с помощью команды ТЮ, невозможно пользоваться командами прямого управления RDD (прямое* чтение) и WRD (прямая запись), с помощью которых можно про¬ водить управляемые эксперименты, т. е. осуществить двухсто¬ роннюю связь ЭВМ—экспериментальная установка. Стандартная система ДОС не предоставляет пользователю воз¬ можности исполнять свои программы в состоянии супервизор. Существует два способа выполнить эту операцию. Один — относительно медленный — с помощью загрузки в оперативную 127
память специального В-транзита, написанного пользователем и закаталогизированного в библиотеку абсолютных модулей, Второй — моментальный — при использовании в программе команды SYrC 240, введенной автором специально для этой цели в супервизор модифицированной системы DOG ЕС (§ 5.6). Макрокоманда ONSVG предназначена для облегчения про¬ цедуры переключения процессора ЭВМ из состояния задача в со¬ стояние супервизор и одновременной установки нулевого ключа защиты памяти. Эта макрокоманда восстанавливает первоначаль¬ ное состояние машины. В макрорасширении макрокоманды ONSVC содержится команда SVC 240. Помимо основной функции, ONSVC позволяет использовать в проблемной программе дополнительную область связи — COMREG- II, сообщая ее начальный адрес. Эта область представ¬ ляет из себя поле размером 24 байта в области супервизора, вы¬ равненное по границе полуслова. Следует отметить, что первые 5 байт этой области использует диалоговая система, поэтому изменять их категорически запрещается. Кроме того, макро¬ команда ONSVC позволяет установить желаемую маску системы и маску программы (с помощью команд SSM и SPM). Маска си¬ стемы управляет прерываниями от устройств ввода—вывода ЭВМ, а также внешними прерываниями. Изменяя маску системы, можно проигнорировать некоторые прерывания. Маска программы определяет, будут ли некоторые нестандарт¬ ные ситуации при выполнении машинных команд вызывать про¬ граммные прерывания или нет. Работа с масками подробно рас¬ смотрена в [12]. Итак, рассмотрим форматы макрокоманд ONSVC и OFSVG. {метка] OFSVC область сохранения область сохранения — символическое имя области сохранения старого PSW в проблемной программе. При указашш параметра MROUT=NO пли при отсутствии последнего длина области сохранения равна 8 байт, выровненных по границе двойного слова. Во всех других случаях — длина равна 12 байт. г — номер регистра (кроме 0,14 и 15), в который засылается адрес до¬ полнительной области связи COMREG II. При RGSAVE = N0 либо при отсутствии этого параметра адрес области связи засылается в 1 регистр. а — маска системы в шестнадцатеричном представлении (1 байт). При MSYS = N0 либо при отсутствии этого параметра маска системы не изме¬ няется . b — маска] программы в шестнадцатеричном представлении (1 байт) • Биты 0 и 1 маски всегда равны нулю, биты 2—3 — изменяют признак резуль- [метка] ONSVC область сохранения , RGSAVE = , MSYS = {^о}] [» MROUT|= {no) 128
тата, биты 4-н7 — изменяют собственно маску программы. При MROLJT = = N0 либо при отсутствии этого параметра маска программы и признак результата не изменяются. Рассмотрим на примере, как использовать эти макрокоманды в программе. START ONSVC SAVE, RGSAVE=6, MSYS = FF;, ■ MROUT=02 OFSVC SAVE EOJ SAVE DS D DS F END Приведенная в этом примере макрокоманда ONSVC устанав¬ ливает нулевой ключ защиты памяти, передает адрес дополни¬ тельной области сохранения в 6 регистре, устанавливает маску системы равной 111111102 маску программы — 00102 и признак результата 002. Макрокоманда OFSVC восстанавливает исходное состояние ЭВМ. Следует заметить, что выключать состояние супервизор по макрокоманде OFSVC в конце проблемной программы совершенно необязательно, так как состояние задача всегда устанавливается автоматически при запуске нового задания. § 6.3. Работа со стеками. Рассмотрим использование рекур¬ сивных процедур в проблемных программах. Для чего они нужны? С помощью рекурсивных процедур удобно программировать различные итеративные процессы. По этому принципу построена функция копирования диалоговой си¬ стемы, а именно обработка вторичных операторов <^COPY. Блок программы (или подпрограмма) называется рекурсив¬ ным, если управление ему может быть передано как извне, так и изнутри этого блока, причем таким образом, что функциони¬ ровать он будет одинаково в обоих случаях. При программирова¬ нии рекурсивных блоков обязательно используются специальные области сохранения промежуточных данных, имеющие так назы¬ ваемую стековую организацию. Что такое стек? Принцип его построения лучше всего выражается фразой: «кто первый пришел, тот последний ушел», т. е. данные, заносимые в стек в одной по¬ следовательности, считываются из него в прямо противоположной. Перед повторной передачей управления рекурсивному блоку (из его середины) необходимые данные записываются в стек. После окончания какого-то фиксированного количества подоб¬ 5 С. Б. Векшин 129
ных итераций эти данные в обратной последовательности считы¬ ваются из него и происходит досчет каждой итерации. Рекурсив¬ ный блок оканчивает работу только тогда, когда все данные будут считаны из стека. Новые макрокоманды LPIL (загрузить данные в стек) и STPIL (считать данные из стека) намного упрощают написание рекур¬ сивных блоков. Формат этих макрокоманд следующий: [метка] LPIL указатель, длина, данные [метка] STPIL указатель, длина, данные указатель — символическое имя четырехбайтовой области памяти, вы¬ ровненной на границу слова. Перед началом работы со стеком указатель должен содержать его начальный адрес. длина — константа от 1 до 255, указывающая длину одной ячейки сте¬ ка. В процессе работы с одним и тем же стеком должна быть постоянной. данные — символическое имя области памяти, из которой m байтов ин¬ формации записываются или в которую считываются из стека, m — длина одной ячейки стека (параметр «длина»). Макрокоманда LPIL работает следующим образом: по адресу, хранящемуся в указателе, записывается некоторая информация из области памяти, символическое имя которой указано в третьем операнде, затем содержимое указателя увеличивается на длину этой информации. Макрокоманда STPIL работает в обратной последовательности; сначала из содержимого указателя вычитается длина ячейки стека, а затем данные из области памяти, адрес которой находится в указателе, пересылаются в рабочую область (третий операнд). Рассмотрим логику построения рекурсивного программного блока. 1. В указатель следует занести начальный адрес стека — адрес области памяти, размер которой в байтах равен произведе¬ нию глубины рекурсии N данного блока (максимально допустимое количество рекурсивных итераций блока) на длину ячейки стека, увеличенному на единицу. 2. В нулевую ячейку стека записать с помощью макрокоманды LPIL какой-нибудь служебный символ для распознавания конца рекурсивных итераций. 3. Организовать цикл N итераций, при котором в стеке будут заполнены последующие N ячеек также с помощью макрокоманды. 4. При досчете каждой итерации данные считываются из стека с помощью макрокоманды STPIL в рабочую область памяти. Здесь весьма уместно сделать проверку на окончание стека, т. е. на обнаружение записанного в нулевой ячейке служебного символа. После этого рекурсивный блок работу заканчивает. Иллюстрируя методику работы с макрокомандами LPIL и STPIL, приведем пример программы с рекурсивным блоком. 130
NAME START BALR 5,0 USING *,5 LA 8, PIL ST 8, PNT LPIL PNT, 10, = CLV загрузка указателя PNT адресом стека PIL занесение кода конца стека TTER1 EQU * * ПЕРВИЧНЫЕ ВЫЧИСЛЕНИЯ LPIL PNT, 10, ARB CLC ВС 7, ITER1 • • —*ITER2 STPIL PNT, 10, ARB CLI ВС ARB, С'*' 8, FIN запись в стек 10 байтов из области ARB проверка условия окон¬ чания цикла итераций переход, если это усло¬ вие не выполняется чтение 10 байтов из стека в область ARB проверка конца стека переход, если конец стека FIN ВЫЧИСЛЕНИЯ ПРИ ДОСЧЕТЕ ИТЕРАЦИЙ "В ITER2 безусловный переход на начало цикла досчета EQU * ПРОДОЛЖЕНИЕ ПРОГРАММЫ EOJ PNT DS F PIL DS 11CL10 ARB DS ЮС END о а. Можно подчеркнуть, что макрокоманды LPIL и STPIL имеют очень простую структуру, поэтому при необходимости каждый пользователь сможет легко модифицировать их по своему усмо¬ трению. § 6.4.) Преобразование чисел. Еще одной достаточно часто ис¬ пользуемой операцией (особенно при написании программы на языке АССЕМБЛЕР для обработки экспериментальных данных в реальном масштабе времени), вызывающей определенные за¬ труднения, является перевод двоичных чисел из формата с фикси¬ рованной точкой к формату с плавающей. Для этой цели служит новая макрокоманда FXFP, которая записывается следующим образом: 131 5*
[метка] FXFP результат, источник, область сохранения результат — символическое имя слова (область памяти длиной 4 байта), куда будет занесено преобразованное число в формате с плавающей точкой. источник — символическое имя слова, содержащего преобразуемое чис¬ ло в формате с фиксированной точкой. область сохранения — символическое имя области памяти длиной 16 байт, выровненной на границу двойного слова. Рассмотрим на примере использование этой макрокоманды. Пусть требуется двоичное число с фиксированной точкой, храня¬ щееся в четырехбайтовой области памяти с именем FX, перевести в плавающую форму. Напишем небольшую часть программы: START FXFP FP, FX, SAVE EOJ FX DC F 384 «сходная константа FP DS E иоле результата SAVE DS 2D область сохранения END После выполнения макрокоманды FXFP в четырехбайтовой области памяти с именем FP будет находиться число 384, представ¬ ленное в формате с плавающей точкой. § 6.5. Приемы программирования на языке АССЕМБЛЕР не¬ которых действий ЭВМ, представляющие особый интерес при использовании макрокоманды ONSVC: Организация счетчика* Очень часто в программах при по¬ строении различных циклических процессов требуется увеличивать или уменьшать текущий счетчик или какие-нибудь адресные регистры на постоянную константу — двоичное число с фиксиро¬ ванной точкой. Обычно эта константа заносится еще в один уни¬ версальный регистр либо записывается в виде литерала в исполь¬ зуемой команде сложения или вычитания. В первом случае при¬ ходится заносить и сохранять содержимое еще одного регистра, хотя при написании программ обработки экспериментальных данных в реальном масштабе времени очень часты ситуации, когда универсальных регистров попросту не хватает, во втором — для литерала дополнительно будет отведено место в оперативной памяти, да и исполняются такие команды относительно медленно. В этих случаях удобно для положительного приращения со¬ держимого регистра использовать команду LA (загрузка адреса), а для отрицательного — команду ВСТВ (переход ио счетчику). Ограничение метода в том, что константа для увеличения реги¬ стра должна быть не больше 4095, а для уменьшения — равная 1. Рассмотрим пример. Пусть требуется содержимое регистра 8 132
увеличить на 300, а содержимое регистра 2 уменьшить на 1. Справа напишем традиционные варианты программы (1 и 2), а сле¬ ва — с использованием команд LA и BCTR (3): загрузка констант в регистры 3 н 4 (1) L L 3, —F 300 4, = F 1 AR 8,3 SR 2,4 (2) А 8, =F 300 S 2,=F1 (3) LA 8,300 (8) BCTR 2,0 «Захват системы». Включение в операционную систему ма¬ крокоманды ONSVC (§ 6.2), разрешающей изменение областей опе¬ ративной памяти, не входящих в раздел, где исполняется данная программа, требует рассмотрения методики, с помощью которой можно предотвратить прерывание указанной операции более при¬ оритетной программой. Этот так называемый захват системы раз¬ делом выполняется с помощью команды обращения к суперви¬ зору с кодом 22 (SVC 22). Команда SVC 22, кроме того, всегда изменяет маску системы (§ 6.2), занося ее из последнего байта (24—f-31 биты) нулевого универсального регистра. Можно реко¬ мендовать для предотвращения прерываний от ввода — вывода во время изменения полей супервизора перед началом этой опе¬ рации обнулить маску системы, а после восстановить ее. Следует заметить, что команду SVC 22 можно использовать только после макрокоманды ONSVC или же в В-транзитах (§ 1.2). Пусть требуется изменить 3 байта в области супервизора, адрес первого из которых находится в 8-м универсальном регистре. Запишем кусочек программы: ONSVC APSW SR SVC MVI MVI MVI LA SVC 0,0 22 0(8), Х'Ю' 1(8), Х'20' 2(8), Х'ЗО' 0,255 99 установка состояния супервизор п пу¬ левого ключа защиты памяти подготовка нулевой маски системы захват системы команды, изменяющие супервизора поля памяти подготовка системы единичной (X'FF') маски освобождение системы На примере хорошо видно, что «захват системы» происходит после выполнения первой (или нечетной) команды SVC 22, а ее освобождение — после второй (или четной) команды SVC 22. Двойственная антагонистическая функция этой команды яв¬ ляется ее особенностью. 133
Опрос готовности устройств ввода—вывода. Выпол¬ нение данной операции в проблемной программе также стало воз¬ можным благодаря макрокоманде ONSVC, разрешающей поль¬ зоваться привилегированными командами. Иногда является полезным перед началом работы с каким- либо внешним устройством узнать, находится ли оно в состоянии готовности. Это дает возможность выбирать одно желаемое пери¬ ферийное устройство из списка, с которым работает программа не с помощью ввода в ЭВМ каких-либо директив, а приведением его в состояние готовности (при неготовности остальных устройств). Именно по этому принципу построен механизм переключения устройств ввода потока заданий в диалоговой системе. Рассмотрим пример: START BEG ITER LA LH BAL TIO BC 8,ANL 14,0(8) 12, SYS 0(14) 7, NOFRT BAL 12, SYS —NOFRT FORT загрузка адреса ANL в 8 регистр загрузка в 14 регистр содержимого полуслова, начинающегося с адре¬ са, хранящегося в 8 ре- w гистре вызов подпрограммы SYS — захват системы {опрос физического уст¬ ройства, адрес которо¬ го хранится в 14 ре¬ гистре переход, если указанное устройство не находится . в состоянии готово (вызов подпрограммы SYS — освобождение си¬ стемы ВЫПОЛНЕНИЕ ОПЕРАЦИИ ВВОДА - ВЫВОДА ДЛЯ ПРОВЕРЕННОГО УСТРОЙСТВА безусловный переход на метку FORT вызов подпрограммы SYS — освобождение си¬ стемы увеличение содержимого 8 регистра на 2 (проверка конца табли¬ цы адресов физических устройств переход на цикл опроса при неравенстве безусловный переход для повторения опроса всех устройств, пере¬ численных в таблице в FORT BAL 12, SYS LA 8,2 (8) CLI 0(8), С? ВС 7, ITER В BEG EQU * 134
ПРОДОЛЖЕНИЕ ПРОГРАММЫ ПОСЛЕ ОПЕРАЦИИ ВВОДА - ВЫВОДА EOJ SYS LA 0,255 конец программы SVC 22 BR 12 подпрограмма SYS DS ОН выравнивание поля кон¬ стант на границу полу¬ слова ANL DC Х'ОООС' адрес устройства ввода перфокарт DC Х'0008' DC Х'0280' DC С'?' адрес устройства ввода перфоленты адрес накопителя на магнитной ленте концевой символ табли¬ цы ANL END Опросить состояние устройства ввода—вывода можно с помощью привилегированной команды ТЮ (опросить ввод—вы¬ вод). Сразу оговоримся, что эта команда должна выполняться толь¬ ко после окончания предыдущей операции ввода—вывода [12]. Итак, как же построить логику опроса физических устройств? Пусть их адреса предварительно занесены в область памяти, раз¬ битой полусловом, помеченной именем ANL (см. пример на Подчеркнем, что приведенная программа циклического опроса списка адресов физических устройств хороша только для программ, исполняющихся в разделе ЭВМ с наинизшим приоритетом, так как в противном случае бесконечный цикл ожидания готовности какого-либо из устройств цепи не дает возможности выполняться программам в других разделах. Нужно также помнить, что перед выдачей команды ТЮ следует захватить систему по коман¬ де SVC 22, а после нее систему нужно освободить и разрешить мультипрограммную работу. Применение системной макрокоман¬ ды. ONSVC, включающей состояние супервизор при выполнении проблемной программы, и построенных на ней нестандартных методик автоматически отменяет все средства самозащиты опе¬ рационной системы ДОС. При выполнении нестандартных про¬ грамм, особенно при эксплуатации ЭВМ в режиме мультипрограм¬ мирования, операционная система беззащитна против ошибок пользователей. Требуется предельное внимание при разработке особенно опас¬ ных для нее блоков, так как очень легко нанести непоправимый вред и собственно системе и программам, исполняющимся парал¬ лельно в других разделах. с. 134—135).
ЗАКЛЮЧЕНИЕ Возможности операционной системы ДОС для ЭВМ Единой сис¬ темы еще далеко не исчерпаны. Стимулом для ее дальнейшего усовершенствования является простота в эксплуатации, доступ¬ ность, относительно несложная логическая структура и экономич¬ ность по сравнению с ОС ЕС — полной операционной системой. А чем экономичнее операционная система, тем больше памяти ЭВМ отдается проблемным программам и тем они могут быть слож¬ нее при сохранении быстроты выполнения за счет исключения до¬ полнительных медленных операций обмена информацией с внеш¬ ними накопителями данных на магнитных дисках и лентах. Научиться управлять вычислительной машиной при эксплуатации на ней модифицированной автором системы ДОС ЕС много проще, чем при эксплуатации ОС ЕС, а уступает она последней очень немногим, благодаря наличию внутреннего системного макро¬ генератора (отсутствующего в ОС), обеспечивающего некоторую автоматизацию программирования больших и сложных заданий путем использования специализированных макроязыков, а так¬ же диалоговому режиму подготовки и отладки таких заданий. Последнее делает возможным использовать диалоговую систему в качестве системы, обучающей начинающих программистов об¬ щению с вычислительной машиной. И, наконец, самое главное, о чем нельзя забывать: нетривиаль- ность структуры программ, результатов, которые можно полу¬ чить с их помощью, всецело зависят только от людей, которые их создают, от их понимания возможностей машины, от правиль¬ ности постановки научной или какой-либо другой задачи. Как бы ни была мощна и какими всеобъемлющими возможностями не обладала бы операционная система, она все равно является лишь подспорьем в этой большой и кропотливой работе.
Приложение А ФИЗИЧЕСКИЕ УСТРОЙСТВА ДОС ЕС ЭВМ Наименование устройства Шифр устройства Устройство ввода перфокарт 6012 6016 Устройство вывода перфокарт 7010 7012 Пультовая пишущая машинка 7070 7073 7073А 7074 7077 Алфавитно-цифровое печатающее устройство (АЦПУ) 7030 7031 7032 7033 7035 Накопитель на магнитной ленте (НМЛ) 5010 5012 5016 5017 5019 Накопитель на магнитных дисках (НМД) 5052 5055 5056 506.1 Устройство ввода перфоленты 6022 7902R Устройство вывода перфоленты 7022 7902Р Мультиплексор передачи данных 840Ю 8401 8402 8403 8404 8410 137
Приложение А (окончание) Т1 ai I мено в а ни с у стр о пств а Шифр устройства Устройство отображения информации на элект¬ ронно-лучевой трубке (дисплей) 7001 7063 7066 BSAN Устройство, не поддерживаемое системой ДОС, подключенное к мультиплексному каналу и ра¬ ботающее в мультиплексном режиме UNSP Устройство, не поддерживаемое системой ДОС, подключенное к мультиплексному каналу и ра¬ ботающее в монопольном режиме UNSPB Устройство, не поддерживаемое системой ДОС, подключенное к селекторному каналу UNSP UNSPB Устройствами с шифром UNSP и UNSPB могут быть любые внешние уст¬ ройства, отвечающие стандарту ЕС ЭВМ, например, графопостроители, гра¬ фические дисплеи, адаптер связи с управляющей ЭВМ типа АСВТ и т. п.
Приложение В ЛОГИЧЕСКИЕ УСТРОЙСТВА ДОС ЕС ЭВМ к S о S О н У О П §< Рн а о о И Я я о н о о в О) о S к я я 2 о S к я I о я iSg ! н§ о К « О « О © о Я Я Я О © Я 2 « Я о Я Н О о 2 О о Я я я я Я ч о ы 2 ° я и Я О я я gM 04® e«S Я О ft Я © 2 © ft Я © о я я я о н о. о с о я я я о Ен О о я о я я я о Ен ft я о я я я о ЕН о о к Я к н ® н и §й « й Ctf {ft >&£ К Я is со ft со jz; К СО ft ft кн ft J 1 1 U в СО со со 1 1 СО со ft ft ft СО со СО со со 1—3 •—э H-s Н-9 1—5 1—1 Я 1 1 я.2 я а Я £н Я я я ей 2 н ft я я о >в< ft я aS Я Я я я я 2 н ft cS О* >в< ft ttg я g ft я ° Я я 55 ft я ь* ft 2 S Is >©< g ft w: © ^ H ~ n н ° я я S ft я Ен Я я я as 2*^ Н Я ft Я as о Я Я О « >е< ft - © я W ® о * Я « JT Я Ю Я я Ен Я © Я я as g Я Я я GS 2 Е* к И я <5 « я as в^ §с Я н Я Я Я я я >> я В 2 я я я я К я я g ей ft © я о я 2а Я и я ^ gu ftO ° ft гй О ft и Я 5 © Я о кк CS • tc ° о д Я и о ^ is ^ S- w и; Н ft 1-Н СО ft СО «3 В Q В СО ft СО © Н ft g Я 2 © >§< 5 и х £а §< О м В >е<я ft§ rrt ® Й- м я я ?я Ч Ч ° я Й н а SRf g3s В 14 S' Я о о а я >©< я я О ft я о о >е< В я я « « н я © я F ин © §« «Я Я я Ен со ft со ft СО «8 ® о 2 ® Э ё е?в tc • © 2- я R ft ^ о . о 2 © ° кг р, Я. Н й я я ft я © к я о ч М о в Ен я я со © Я ft=2 я я Я а и; я aS Я ^ © а н о >Я я ® VO >» В « VO о 2 я и 2 Я 5 и Я н Я о Ч я еЯ \о о я я J ®в о §>я я © 'g S vo tc я 2 © я д a 1=3 и Я cti Я М (- ь о о о к с. в Q В со ft со Ен ft со ft СО К Ен ft ft ft а со ft О ft ft ft О ft а со со со со со со >н >н ft ft со со со СО СО со ft ft В со ft со 139
Приложение В (окончание) к „ X Й Ф X о £ S' о Я © m Я S В Р Я О с G № К Я О н х л 4 о Н 1 1 1 X 4 X 22- ф о Pi i=t н gb|§ [—г Ф Я г; Э|1 • ^ Ф VD сб Р И 5 и ® а S 8 а » и я I о. н s« § ; и о !Й«и К ^ О Е 2 н 5 й М S >)Ш К Я VD Ч К ф я а № в К ес с и 5 ® ч н ю О СО Я 1=3 5Й VO Ф Я 1=3 VO >5 5- и ^ ф я ° ,5 vo >е< Я и о Я -< tr g Сб g р н я 2 >н н а ё *= К о ■ X к и ав Sxo И Роя ч >я я >01 а я н я ф ЕС я я ф Р о я я я о н о О Я о Я я PQ о , Я Я я § SH ю и СО со ю PC со со со СО со >- со со со со со H-S 1—9 Н—9 1-9 н-9 ни ьн нч 1—1 t-ч р н; Я g сб ^ Я н я - щ 8 s о Я :Я О О 1=3 Р Я н Рн СО Я Я ф Й о я VO Я Q Я ч * S Я Р Р О р я Я Ч С ЕС О Р я я я Г* я а о я я S - 5 * ЕС еб 2 ^ Я ф ЮР © я й с S m Я ю ю см V/ _ X к igx я |v; g So hC ftO R p о X tt . ^ s a ^5° E Я © а о я *° а еб я 5 p. п. г о о 2 2 с.' Я Я Я Р и я р р ft о о о О. С Е Е ?>* о^° S ^ Sr ^ я Я з я я й Р Р й <© <г> е s s g £ s ^ X X к s S S о © р Р РЗ Я ” ~ с о § а * К х я ^ Г< я я X Е О Ф п И g Я сб § a g ^ s S £ s я Ь О Л О О Р « я £ 'Емс О^о Н ^ о 1 £ 5 * • со с/3 Л Ьн |* § с/3 5 к о £ 2 « Я я Я Е X Р 3« к р*. ю ю со со >< СО г ч со И Н 'Z PC PC X со со со со >ч со СО' со со К V- О — 2 о ^ 2 ч й С В 2 Е О с Й g « S Я с Ф р Ё F? р с * +• Г~ 140
Приложение С ОПЕРАТОРЫ И ДИРЕКТИВЫ СИСТЕМНЫХ ПРОГРАММ ДОС ЕС И ДИАЛОГОВОЙ СИСТЕМЫ PALLADA Z О О, 2 X 2 с. с й Си СС е. О И с; С К Й С V V < Si о и-! -52 й I о о 2; О t—l Й Ен н О сл < -ffl о с Й К о Й 1—1 Й Vt-I Q Й о о сл D О < 2 Q Q £ О ^ G 2 о й й н 2 о й н й о Й Й н й о й О й X! й о о ^ Q И н й 2 141 1) Оператор // ACTION с параметром SYSTEM. 2) Оператор //ACTION с параметрами LIST, NOLIST, LOGX, NOLOGX.
Приложение С (продолжение) £ н (Л о ЕГ С 1C & к РК К _ о Г? £; г р СО ста Д -G -<1 й р; о < Jz; I Г г; < н Й о н-1 о о а С со со BW щ й И со Й О р <; й С й «S й со Й Р К и о СЛ Й Р К О й И З-Ч :z; й й й о со О щ Q Р О со О СО Р О н й со а Й а 1> СО р С О Й Р со р р а й а < о й Й С-Ч О нч И со £ О К со Й Р й СО Р со О О со й й й < со Р й Р Р О Р й С О о Рн н 03 й R О § & W S « л t£ йЗ* о со >6<^ а § га в ® § а я. 3 в « а « о =а о а и- о 1« 1= ►г ^ и 142 3) Оператор //ACTION с параметрами SCR1B, CARD, D1SCLY.
Приложептте С (окончание) й <и й н 02 О ай ►— п с ю аа s й Й й со и — — со н < й < Н Н < й < < Q 1 й Q t—1 и t 1 £ Н й £; Ен Q Q И г; й н Г-'1 < К и < Он <1 Q ы и с й и с й CJ й Q СО % со Q < £ 2 и О Й О Гт . I i9 СО Й о < <1 1 < й V V V V V «А s J UPh СО й к*"1 н й и < о 1-Н g Ен й й Е-н < Й О Gl < Ы н О й о р| о Й гг] /-N "—. -— й 5 S3 а ^ о s Рн д а о й с с й й CJ й й й со ч Х£ О сЗ ь о 1C о н о a ч VO аз н о VO аЗ Ф Ен О 5 О a хо о VD аз а. и О Л 143 Все подчеркнутые операторы и директивы описаны в этой книге, остальные подробно рассмотрены
Приложение D СООБЩЕНИЯ ДИАЛОГОВОЙ СИСТЕМЫ PALLADA 01211 DOS-PALLADA IPL COMPLETE Процедура первоначальной загрузки системы PALLADA завершена. Причина. Инициализация диалоговой системы. Действие пользователя. Не требуется. * * WAITING * * Ожидание Причина. Диалоговая система готова принять новое задание при следующей ситуации: a. Устройства ввода перфокарт и перфоленты находятся в состоянии не готе со. b. В качестве диалогового устройства используется пультовая пишущая машинка. Действие пользователя. Возможны 2 варианта: a. Поставить подготовленное задание на устройство ввода перфокарт или перфоленты и нажать кнопку ПРЕРЫВАНИЕ на пульте ЭВМ. b. Нажать кнопку ПРЕРЫВАНИЕ и вводить задание с диалогового уст¬ ройства. // ЗАДАЧА РЕШАЛАСЬ ЧЧ. ММ. СС // Выводится время выполнения предыдущего задания. Причина. Подготовка системы к принятию нового задания при одпопрограм- мном режиме работы (MPS = N0). Действие пользователя. Не требуется. Горит лампочка ЧТЕНИЕ Причина. Система ждет ввода следующей записи с диалогового устройства, так как устройства чтения перфокарт и перфоленты находятся в состоянии не готово. Действие пользователя. Возможны 2 варианта: a. Ввести запись с диалогового устройства. b. Поставить набор данных на устройство чтения перфокарт или перфо¬ ленты и нажать кнопку КТ. * * PROGRAM * * Начало задания. Причина. Сформированное на файле SYSOPT задание начинает выполняться в стандартном режиме (сгенерирована мультипрограммная система DOC — MPS = В JF). Действие пользователя. Не требуется. 144
* * * END * * * Конец задания. Причина. Сформированное на файле SYS ОРТ задание заканчивает выпол¬ няться (сгенерирована мультипрограммная система ДОС.— MPS = BJF). Действие пользователя. Не требуется. -4- j | 1 ] j-L-—1 ц- 1 j 1 | j+ | | j S* • .'КОММЕНТАРИЙ' ••• I —MH--! I I i !+ П Причина. Поступил оператор // STRING' комментарий'. Действие пользователя. Ввести следующую запись задания с диалогового устройства 1D10I STATEMENT UPDATE Запись задания обновляется. Причина. Поступил оператор // RETRY. Действие системы. Стирается последняя запись задания в файле SYSOPT. Действие пользователя. Повторно без ошибки ввести эту же запись задания с диалогового устройства. 1DHI SYSTEM FILE UPDATE Обновляется системный файл. Причина. Поступил оператор // CANCEL. Действие системы. Файл SYSOPT стирается полностью. Действие пользователя. Повторно ввести задание с любого устройства. 1D12C EOF OF SYSTEM FILE. PROGRAM CANCELLED Конец системного файла. Задание снимается. Причина. Задание не помещается в файл SYSOPT. Действие системы. Задание исключается из обработки, относящиеся к нему записи пропускаются до обнаружения оператора /&. Действие пользователя. Сократить текст задания или перегенерировать диа¬ логовую систему. ■1D13C ERROR ON SYSLNK. PROGRAM CANCELLED Ошибка на SYSLNK. Задание снимается. Причина. Система находится в режиме CATALR. В предыдущем шаге за¬ дания на каталогизацию в библиотеку RL перемещаемых модулей программ была допущена ошибка, которая привела к неправильному формированию файла SYSPCH, совмещенного с SYSLNK. Действие системы. Задание исключается из обработки. Действие пользователя. Устранить ошибку и вновь представить задание для выполнения. 1D14I PROGRAM FOR AREA Fn IS READY Задание готово для исполнения в разделе F1 или F2. Причина. После включения режима MULTY (оператор // DETUR) поступил оператор /&. Система закончила формирование файла SYSOPT для раздела F1 или F2. 145
Действие системы. Ренницналпзацпя для ввода следующего задания. Действие пользователя. Выйти в связь с программой Внимание и ввести директиву START F1 или START F2 для того, чтобы запустить подготовлен¬ ное задание в одном из этих разделов. Данное действие не требуется, если в данном разделе программа FGPWAIT сгенерирована с процедурой ожидания. В последнем случае задание начина¬ ет исполняться автоматически. 1D15I PRIORITY : BG, FI, F2 Приоритеты разделов: BG, FI, F2. Причина. Поступил оператор // FIANT с режимом LIST — информационное сообщение. Действие пользователя. Не требуется. 1M01D Х.ХХХХХХХХ NOT IN LIBRARY Книги с именем Х.ХХХХХХХХ нет в библиотеке. Причина. Поступил оператор // COPY с указанием имени книги, отсутствую¬ щей в системной] и личной библиотеке SL. Действие системы. Установление связи с пользователем. Действие пользователя. Возможны 2 варианта: a. Ввести без ошибки оператор // COPY. b. Поставить^на накопитель верный пакет магнитных дисков с необхо¬ димой личной библиотекой SL и повторить ввод оператора // COPY. 1М01С Х.ХХХХХХХХ NOT IN LIBRARY Книги с именем Х.ХХХХХХХХ нет в библиотеке. Причина. В режиме копирования или системной макрогенерации поступил вторичный оператор копирования < COPY с указанием имени книги, отсут¬ ствующей в системной и личной библиотеке SL. Действие системы. Задание исключается из обработки, относящиеся к нему записи пропускаются до обнаружения оператора /&. Действие пользователя. Возможны 3 варианта: a. Установить на накопитель верный пакет магнитных дисков с необхо¬ димой личной библиотекой SL и вновь выполнить задание. b. Скорректировать ошибку в операторе <]COPY в вызывающей книге и вновь выполнить задание. c. Перед оператором// COPY ввести верный оператор // DD, задающий имя книги во вторичном операторе копирования. 1M02D CATALOGUE INTO RL WANTED \PRIVATf / системную) Каталогизировать ли в \личную ) библиотеку RL. Причина. Закончилось выполнение первой части задания на каталогизацию перемещаемых модулей в библиотеку RL при отсутствии в нем оператора // UPSI ХХХХХХХ1. Сообщение информационное. Действие системы. Установление связи с пользователем. 146
Действие пользователя. Проверить листинг задания на правильность и вы» дать ответ: ES — если ошибок не обнаружено (система продолжит работу в режиме CATALR) ^ 0 — если требуется снять задание с обработки. Любой другой ответ вызовет сообщение 1M03D. 1M03D INVALID RESPONSE Неверный ответ Причина. Пользователь ввел ответ, отличный от YES или N0, после сообще¬ ния 1M02D. Действие системы. Установление связи с пользователем. Действие пользователя. Ввести верный ответ. 1М04С INVALID COPY FUNCTION Ошибки при выполнении функции копирования. Причина. При выполнении копирования глубина вложенности вторичных операторов <COPY оказалась больше 10. Действие системы. Задание исключается из обработки, относящиеся к нему записи пропускаются до обнаружения оператора /&. Действие пользователя. Изменить структуру задания и вновь выполнить его. 1P21D AREA NOT AVAILABLE Раздел недоступен. Причина. Поступил оператор// DETUR с указанием раздела, в котором ис¬ полняется задание. Действие системы. Установление связи с пользователем. Действие пользователя. Выполнить задание в другом разделе, изменив, если нужно, его приоритет оператором // FIANT. 1P22D MPS = NO. STATEMENT IGNORED MPS = NO. Оператор пропускается. Причина. Поступил оператор // DETUR или // FIANT в случае однопро¬ граммной работы ЭВМ (параметр генерации MPS = N0). Действие системы. Установление связи с пользователем. Действие пользователя. Исполнить задание в разделе BG или перегенериро- вать систему. 1S60D INVALID STATEMENT Неверный оператор. Причина. Поступил один из операторов диалоговой системы, содержащий ошибку в поле операндов (стандартная реакция системы). Действие системы. Установление связи с пользователем. Действие пользователя. Исправить ошибочный оператор. 147
1S70D STATEMENT OUT OF SEQUENCE Нарушена последовательность операторов. Причина. a. Оператор // ACTION CARD поступил до открытия файла SYSOPT, b. Оператор // ACTION DISPLY или // ACTION SYSTEM поступил после открытия файла SYSOPT. c. Оператор // ACTION CARD поступил после операторов // CATALR» // CATALS или // DETUR. d. Операторы // CATALR или // CATALS поступили после оператора // DETUR (попытка выполнить каталогизацию в разделах F1 или F2). Действие системы. Установление связи с пользователем. Действие пользователя. Сформировать файл SYSOPT заново, для чего: a. ввести оператор // CANCEL, b. ввести скорректированное задание и исполнить его. 1S71D INVALID PARAMETR Неверный параметр.) Причина. В операторе // DD указано неверное имя параметра системного макрогенератора (имя может состоять только из знака & и латинской бук¬ вы от Л до R включительно). Действие системы. Установление связи с пользователем. Действие пользователя. Ввести правильный оператор // DD. 1S72D INVALID SIZE &n Неверная длина параметра &п. Причина. В операторе // DD параметру &п присвоено значение строки сим¬ волов длиной больше 8 байт. Действие системы. Установление связи с пользователем. Действие пользователя. Ввести правильный оператор // DD. Приложение Е СООБЩЕНИЯ СИСТЕМНОГО МАКРОГЕНЕРАТОРА Сообщения системного макрогенератора делятся на сообщения типа строка и сообщения об ошибках. Сообщение типа «строка» имеет вид: -“ГППИ-fТГП- • • ПППП+ППППП-гППП-Н 1-г_П-ПТгП_ПЛ 'КОММЕНТАРИЙ' “П~Пт -ПИ---“ГГП+ 148
Сообщения типа «строка» выводятся па диалоговое устройство при обра¬ ботке вторичного оператора <НЕР, который имеет 2 формата: < REP < REP 'комментарии/. Сообщения об ошибках макрогенерации заносятся в ошибочный опера¬ тор, заменяя его символическое имя и порядковый номер, т. е. 73 -ь 80 по¬ зиции. Этот ошибочный оператор включается в выводной поток данных. Сообще¬ ния об ошибках имеют вид * ERR-nn *, где пп — число, определяющее тип ошибки. пп Вторичный оператор системы Описание ошибки 01 Строка данных, содер¬ Длина сгенерированной строки боль¬ жащая параметры ше 72 байт 02 < AIF Ошибка в синтаксисе < SET 03 < AIF Недействительное имя параметра (не < SET входит в диапазон &А -ь &R) 04 < SET Ошибка при вычислении выражения 0Г) < SET Результат операции отрицательный т
Приложение F ТАБЛИЦА СТАНДАРТНОГО КОДА КОИ-7 ДЛЯ РАБОТЫ С ПЕРФОЛЕНТОЙ В ЕС ЭВМ 7 6 5 4 со 2 1 0 <х> и й о Он о « о Он и 8 о 0 0 0 0 0 0 1 0 0 | 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 8 позиция четности 7 0 0 0 0 1 1 1 1 6 0 0 1 1 0 0 1 1 5 0 1 0 1 0 1 0 1 \ 0 1 2 3 4 5 6 7 0 |sp) 0 @ Р ю п 1 | ! | 1 А Q А я 2 ” 2 В R Б р 3 1#1 з С S Ц с 4 |П| 4 D т д т 5 1 % 1 3 Е и Е У 6 & 6 F V Ф | Ж 7 / 7 G W г в 8 BS ( 8 Н X X ъ 9 ) 9 I Y и ы 10 LF * : 1 J Z п 3 И -L- 1 К [ к ш 12 < L 1 \ Л э 13 CR — = М ] м щ 14 > Н П Н 1 ч 15 / О — О DBL BS — возврат на шаг («—) LF — перевод строки CR — Возврат каретки (е^) SP — пробел DBL — забой (пробиты все позиции перфоленты) В данной таблице представлены только символы, обрабатываемые диа¬ логовой системой. Восьмая позиция перфоленты пробивается при нечетной стандартной комбинации битов, например, символ (^изображается в виде 11010001. 150
'КОТ Приложение G ТАБЛИЦА СООТВЕТСТВИЯ СТАНДАРТНЫХ КОДОВ ЕС ЭВМ — DKOI И КПК-12 Левый полубайт DKOI Исключения СИМВОЛ DKOI КПК-12 SP 40 НЕТ (ПРОБЕЛ) ПРОБИВОК & 50 12 - (МИНУС) 60 11 / 61 0—1 1 Е0 0-2-8 0 F0 0 Левый полубайт DKOI £ с С А В С D Е F [ ] п # * 0 о @ ( ) — ' “Г ; > = ! — ? ” 2-8 3-8 4-8 5-8 G—8 7-8 А В С D Е F А J 1 В К S 2 С L т 3 D М и 4 Е N V 5 F О VV 6 G Р X 7 10 Н Q Y 8 I R Z 9 12 11 D Е F В 3* Ц и* У* IIP д Й* п* ж* э> я* щ* ф л* ь: ч* г ЬР 2-8 3-8 4-8 5-8 6-8 7-8 Зонные пробивки К ГТК-12 12 12 - — .12* 11 — 11 11* 11* О 0* — О о* — 9* 9* 9* 9': Зонные пробивки КПК-12 DKOI — внутренний код ЕС ЭВМ. КПК-12 — кодперфокарт ЕС ЭВМ. Неотмеченным символам соответствуют только неотмеченные зонные пробивки кода КПК-12. Символам, отмеченным звездочкой (*), соответствуют отмеченные и неотмеченные зонные пробивки кода КПК-12. 151 Цифровые пробивки КПК-12
Приложение Н ПАРАМЕТРЫ БИБЛИОТЕК И ОГЛАВЛЕНИЙ Элемент Количество блоков на дорожке (В) Размер бло¬ ка в байтах (КбЛ) Количество записей на дорожке Первой Текущей Последней Первой Текущей 3 и о о о ЕС-5052 ЕС-5061 см о ЕС-5061 ЕС-5052 ЕС-5061 Оглавление библиотеки 8 15 360 360 144 144 143 270 270 269 CL Библиотека CL 2 4 1728 1688 Оглавление библиотеки 9 17 320 320 175 180 179 335 340 339 RL Библиотека RL 9 16 322 322 Оглавление библиотеки 16 27 160 160 155 160 159 265 270 269 SL Библиотека SL 16 27 160 160 ^CL(RL SL)^ где ^пр ~ количество информации, макси¬ мально помещающееся в данной библиотеке (в байтах); X — количество дорожек на цилиндре пакета магнитных дисков: для НМД ЕС-5052 X = 10* для НМД ЕС-5061 X = 20 [17]. Приложение I КОМПОНЕНТЫ ДИАЛОГОВОЙ СИСТЕМЫ Программные фазы системы (системная библиотека абсолютных модулей) Имя фазы Назначение HPALLF0A Поддержка оператора // ACTION Q'PALLFOC Поддержка операторов // CATALS, // CATALR, // SIGNA. HPALLF0D Поддержка оператора // DD CJPALLF0F Поддержка операторов // FIANT, // DETUR 152
Приложение I (продолжение) Имя фазы Назначение QPALLF0H Основная управляющая программа, корневая фаза системы QPALLFOJ Поддержка оператора // JOB QPALLF0L Вспомогательная программа для поддержки опе¬ ратора // CATALR QPALLF0R Вторичная транзитная фаза для поддержки опе¬ ратора // SCRIB QPALLFOS Поддержка оператора // SCRIB QPALLFOT Вспомогательная программа для поддержки опе¬ ратора // CATALR FGPWAIT1 Программа опроса ключа для раздела F1 FGPWAIT2 Программа опроса ключа для раздела F2 Перемещаемые модули системы (личная библиотека объективных модулей) Имя модуля Функция IPDBEG1N Точка входа основной программы IPDERRL Модуль программы QPALLF0L IPBERRO Модуль вывода сообщений об ошибках IPDERRT Модуль программы QPALLFOT IPDINLIB Модуль поиска и чтения книг из библиотек исходных модулей — стандартная подпрограмма ДОС IPDINPBG Модуль ввода — вывода информации с диалогово¬ го устройства IPDINP1 Модуль ввода информации с перфокарт IPDINP2 Модуль ввода информации с перфоленты IPDINSYS Модуль ввода информации с диска IPDJCTLA Модуль транзитной фазы QPALLF0A IPDJCTLC Модуль транзитной фазы QPALLF0C IPDJCTLD Модуль транзитной фазы QPALLF0D IPDJCTLF Модуль транзитной фазы QPALLF0F IPDJCTLH Модуль основной программы QPALLFOII IPDJCTLJ Модуль транзитной фазы QPALLFOJ IPDJCTLP Подпрограмма, поддерживающая функцию копи¬ рования и макрогенератор IPDJCTLR Модуль вторичной транзитной фазы QPALLF0R IPDJCTLS Модуль транзитной фазы QPALLF0S IPDLIST Модуль вывода информации на SYSLST IPDMARKS Таблица и рабочие области подпрограмм ввода — вывода 153
Приложение I (окончание) Имя модуля Функция IPDMDDS Стандартные модули работы с дисками IPDMDLB Стандартный модуль работы с перфолентой IPDMULTY Подпрограмма изменения приоритетов разделов IPDOPSYS Модуль вывода информации на диск (SYS017) IPDOUTGD Модуль вывода информации на перфокарты IPDOUTLB Модуль вывода информации на перфоленту IPDSBSET Подпрограмма обработки оператора <SET IPDTABF Таблица операторов диалоговой системы IPDXXX Позывной модуль для редактирования основной программы. Макрокоманды генерации системы (личная библиотека исходных модулей) Имя макрокоманды Назначение А. IPDARB Указание начала рабочего поля системы А. IPDEFL Указание максимального размера файлов зада¬ ний для всех разделов А. IPDMUL Генерация программ опроса ключей для разде¬ лов F1 и F2 ■ A. IPDSET Указание приоритетов устройств ввода потока данных и первоначальное задание приоритетов разделов ЭВМ А. IPDTABR Таблица стандартных назначений Редактирование программных фаз (таблица ссылок) Имя фазы диалоговой системы Используемые переме¬ щаемые модули Используемые макро¬ команды или книги HPALLFOA IPDJCTLA UPALLF0C IPDJCTLC — HPALLF0D IPDJCTLD — QPALLF0F IPDJCTLF — 154
Приложение I (окончание) Имя фазы диалоговой системы Используемые переме¬ щаемые модули Используемые макро¬ команды или книги nPALLFOH IPDBEGIN IP DM ARKS ' IPDMULTY IPDJCTLP IPDTABF IPDERRO IPDMDLB IPDINPBG IPDINP1 IPDINP2 IPDLIST IPDOPSYS IPDMDDS IPDINLIB IPDJCTLH IPDINSYS . IPDXXX A. IPDEFL A. IPDSET A. IPDTABR qpallfoj IPDJGTLJ A. IPDARB HPALLFOL IPDERRL IPDINPBG A. IPDSET QPALLFOR IPDJGTLR IPDOUTCD IPDOUTLB DPALLFOS IPDJCTLS nPALLFOT IPDERRT — FGPWAIT1 — A. IPDMUL FGPWAIT2 " A. IPDMUL Приложение J НОВЫЕ СИСТЕМНЫЕ МАКРОКОМАНДЫ ДОС ЕС Имя макрокоманды Назначение A. FXFP Перевод двоичных чисел из представления с фик¬ сированной точкой к представлению с плавающей точкой A. LPIL Считывание данных из стека A. OFSVC Выключение состояния супервизор в проблем¬ ной программе A.ONSVC Включение состояния супервизор в проблемной программе A. STPIL Запись данных в стек 155
КРАТКИЙ СЛОВАРЬ СОКРАЩЕНИЙ И ТЕРМИНОВ ДОС ЕС — дисковая операционная система ЕС ЭВМ ОС ЕС — полная операционная система ЕС ЭВМ АЦПУ — алфавитно-цифровое печатающее устройство НМЛ — накопитель информации на магнитной ленте НМД — накопитель информации на магнитных дисках Библиотека CL — библиотека абсолютных модулей (элемент — программная фаза) Библиотека RL — библиотека объектных модулей (элемент — перемещае¬ мый модуль, обычно подпрограмма) Библиотека SL — библиотека исходных модулей (элемент — книга: набор алфавитно-цифровых данных, обычно текст программы на исходном язы¬ ке или макроопределение) Раздел BG — фоновый раздел ЕС ЭВМ Разделы F1 и F2 — первый и второй разделы переднего плана ЕС ЭВМ Файлы постоянных директив разделов BG, F1 и F2 — резидентные файлы диалоговой системы на магнитных дисках; содержат управляющие опе¬ раторы и директивы стандартной системы ДОС ЕС, обеспечивающие функционирование диалоговой системы и определяющие стандартный режим ее эксплуатации (логическое устройство SYS IN) Файл SYSOPT — файл заданий ка магнитных дисках для раздела BG, фор¬ мируемый диалоговой системой из вводного потока задании (логическое устройство SYS017) Файл SYSOPT1 — файл заданий для раздела F1 Файл SYSOPT2 — файл заданий для раздела F2 Файл SYSLST — файл на магнитных дисках, заменяющий АЦПУ; исполь¬ зуется для записи листингов программ и результатов счета (логическое устройство SYSLST) Файл SYSINP — объединенный файл на магнитных дисках; используется в качестве промежуточного для запоминания объектных модулей про¬ грамм и подпрограмм в процессе их автоматической каталогизации в библиотеку RL с помощью диалоговой системы PALLADA (логические устройства SYSLNK, SYSPCH и SYS016)
ЛИТЕРАТУРА 1. ЕС ЭВМ. Операционная система ДОС ЕС. Общие положения. ЕЮ. 132.013.Д1. Минск: НИИЭВМ, 1975. 2. Операционная система ДОС ЕС. Общие положения/М.Р. Шура-Бура, Э. В. Ковалевин, М. С. Марголин и др.М.: Статистика, 1975. 3. ЕС ЭВМ. Операционная система ДОС ЕС. Управляющая программа: Руководство для программиста. ЕЮ.132.017.Д1. Минск: НИИЭВМ, 1975. 4. ЕС ЭВМ. Операционная система ДОС ЕС. Редактор: Руководство для программиста. ЕЮ.132.034.Д1. Минск: НИИЭВМ, 1975. 5. ЕС ЭВМ. Операционная система ДОС ЕС. Библиотекарь: Руководство для программиста. ЕЮ.132.035. Д1. Минск: НИИЭВМ, 1975. 6. Векшин С. Б., Гусаинов С. А. Подпрограмма ввода информации по кана¬ лу прямого управления ЭЦВМ ЕС-1020, П001944. Алгоритмы и про¬ граммы: Информ. бюл. ВНТИЦентра, 1977, № 1, с. 39. 7. Векшин С. Б., Гусаинов С. А. Подпрограмма вывода информации по каналу прямого управления ЭЦВМ ЕС-1020. II001945.— Там же, с. 40. 8. Гусаинов С. А., Векшин С. Б. Система ввода аналоговой информации в ЭЦВМ ЕС-1020.— В кн.: Методика и аппаратура для исследования психофизиологических характеристик человека-оператора. М.: Наука, 1977, с. 29—32. 9. Гусаинов С. А., Векшин С. Б. Простой цифроаналоговый преобразова¬ тель для физиологических исследований.— Журн. высшей нервной дея¬ тельности, 1976, т. 26, выи. 6, с. 1319—1321. 10. Бертон Ж., Риту М., Ружие Ж. Работа ЭВМ с разделенивхМ времени. М.: Наука, 1972. 11. Программирование на языке Ассемблера ЕС ЭВМ/3. С. Брич, В. И. Во- юш, Г. С. Дегтярева, Э. В. Ковалсвич. М.: Статистика, 1975. 12. Джермейн К. Программирование на IBM/360. М.: Мир, 1973. 13. ЕС ЭВМ. Операционная система ДОС ЕС. Сообщения системы: Руковод¬ ство для оператора и программиста. ЕЮ.132.042.Д1. Минск: НИИЭВМ, 1975. 14. Векшин С. Б. Биотехническая диалоговая операционная система связи живого организма и ЕС ЭВМ.— В кн.: Вторая международная конферен¬ ция стран-членов СЭВ по основным проблемам бионики «Бионпка-78>> (рефераты докладов). М.; JI. ВИНИТИ, 1978, т. 2, с. 39—40. 15. Алгамс ДОС ЕС ЭВМ/JI. И. Бородин, О. Н. Жевняк, Н. К. Касько и др. М.: Статистика, 1977. 16. Вычислительная система IBM/360: Принципы работы/Под ред. В. С. Штаркмана. М.: Сов. радио, 1969. 17. Операционная система ДОС ЕС: Справочник/10. 10. Битель, В. И. Воюит, Р. В. Горбунова и др. М.: Статистика, 1978. 18. ЕС ЭВМ. Операционная система ДОС ЕС. Макрокоманды ввода — выво¬ да: Руководство для программиста. ЕЮ.132.032.Д1. Минск: НИИЭВМ, 1975. 19. Устройство подготовки данных на перфоленте УПДЛ ЕС-9020: Техниче¬ ское описание. Р23.022.003.ТО. Минск: НИИЭВМ, 1973. 20. ЕС-6022: Инструкция оператору. 713.041.011.7^1. Минск: НИИЭВМ, 1973. 21. ЕС-6022: Техническое описание. Е13.041.011 .ТО. Минск: НИИЭВМ. 1973. 157
22. Векшин С. Б., Гусаинов С. А. Подпрограммы ввода целых и действитель¬ ных чисел с перфоленты для ЭЦВМ ЕС-1020. П001946.— Алгоритмы и программы: Информ. бюл. В НТИ Центра, 1977, № 1, с. 40. 23. ПервинЮ. А. Основы ФОРТРАНА. М.: Наука, 1972. 24. ГрундФ. Программирование на языке ФОРТРАН-IV. М.: Мир, 197G. 25. ФОРТРАН: Программированное учебное пособие/Под ред. проф. Е. JI. Ющенко. Киев: Вища школа, 1976. 26. ЕС ЭВМ. Операционная система ДОС ЕС. Библиотекарь: Руководство для программиста. Е10.132.Р35.Д1. Минск: НИИЭВМ, 1972. 27. ЕС ЭВМ. Операционная система ДОС ЕС. Генерация системы: Руководст¬ во для потребления. ЕЮ.132.025.Д1. Минск: НИИЭВМ, 1975. 28. ЕС-2020. Вычислительное устройство: Техническое описание. E13.055.00i.T01. Минск: НИИЭВМ, 1973. 29. Использование ЭЦВМ для постановки управляемого электрофизиологиче- ского эксперимента/ М. Н. Ливанов, М. Н. Жадин', Г. П. Крейцер, В. Д. Трут.— Биофизика, 1966, вып. И, № 2, с. 306—313. 30. Управляемый электрофизиологический эксперимент/М. Н. Ливанов, М. Н. Жадин, В. А. Кравченко, Г. П. Крейцер, В. Д. Труш.— В кн.: Проблемы нейрокибернетики. Ростов и/Д.: РГУ, 1966, т. 2, с. 105—110. 31. Математическое обеспечение ЕС ЭВМ/Л. И. Матюшеикова, С. В. Литви¬ ненко, В. И. Сенкевич и др. Минск: ИМ АН БССР, 1977, вып. 13. 32. Ершов А. П. О человеческом и эстетическом факторах в программирова¬ нии.— Кибернетика, 1972, № 5, с. 95—99. 33. Новосельцев С. К., Орлов И. Г., Чесалии Л. С. Обеспечение самопереме- щаемости программ в операционной системе ДОС ЕС.— В кн.: Телепро- цессорная обработка данных в АСУ предприятий г. Москвы. М., 1978. 34. Иванов К. П., Клещев А. С. Биологический вычислительный центр. Л.: Наука, 1975. 35. Труш В. Д., Кориневский А. В. ЭВМ в нейрофизиологических исследо¬ ваниях. М.: Наука, 1978.
ОГЛАВЛЕНИЕ Предисловие 3 Глава I. Введение в дисковую операционную систему ЕС ЭВМ 5 § 1.1. ЭВМ и операционная система 5 § 1.2. Управляющая программа ДОС ЕС 6 § 1.3. Логические устройства ДОС ЕС 7 § 1.4. Библиотеки ДОСЕС 8 § 1.5. Предпосылки создания диалоговой системы PALLADA О Глава П. Логическая структура диалоговой системы 42 § 2.1. Обзор диалоговой системы 12 § 2.2. Файловая организация диалоговой системы 16 § 2.3. Операции системы PALLADA 19 § 2.4. Обработка ошибок управляющих операторов диалоговой системы 20 § 2.5. Передача информации пользователю диалоговой системой 21 Глава III. Управляющие операторы и директивы 23 § 3.1. Программа и задание 23 § 3.2. Синтаксис операторов и директив 24 § 3.3. Условные обозначения 25 § 3.4. Оператор инициализации задания 25 § 3.5. Оператор назначения раздела 27 § 3.6. Оператор конфигурации системы 28 § 3.7. Изменение приоритетности разделов ЭВМ 30 § 3.8. Операторы каталогизации 31 § 3.9. Операторы и директивы назначения и описания логи¬ ческих устройств системы ДОС ЕС 35 § 3.10. Системные переключатели 41 § 3.11. Оператор копирования 43 § 3.12. Системный макрогенератор и вторичные операторы диалоговой системы 44 § 3.13. Независимые вторичные операторы 45 § 3.14. Системные макроопределения и оператор определения данных 47 § 3.15. Операторы генераторного перехода 49 § 3.16. Оператор коррекции значения параметров 50 § 3.17. Оператор разметки 33 § 3.18. Коррекция файла заданий 53 159
§ 3.19. Стандартные операторы управления пакетной обра¬ боткой . . . . 54 § 3.20. Оператор исполнения программ 5с § 3.21. Оператор окончания задания 50 § 3.22. Сервисные функции диалоговой системы 57 § 3.23. Общие правила формирования задания 58 Глава IV. Эксплуатация диалоговой системы PALLADA 00 § 4.1. Общие положения 00 § 4.2. Принцип модульного программирования 00 § 4.3. Процедура первоначальной загрузки диалоговой си¬ стемы .... 01 § 4.4. Формирование простых заданий в фоновом разделе . 02 § 4.5. Особенности подготовки и ввода задания с перфоленты 04 § 4.6. Назначение и возможности программы Внимание . . 06 § 4.7. Формирование простых заданий в разделах F1 и F2 . . 70 § 4.8. Простейшие сервисные функции диалоговой системы 73 § 4.9. Особенности сложных заданий 76 § 4.10. Каталогизация программных блоков в библиотеку исходных модулей 76 § 4.11. Формирование сложных заданий 78 § 4.12. Простые автоматические цепочки 79 § 4.13. Работа с системными макроопределениями 81 § 4.14. Контроль правильности значений системных парамет¬ ров макроопределений 84 § 4.15. Самонастраивающиеся автоматические цепочки — основа макроязыка 85 § 4.16. Коррекция программных блоков в библиотеке исходных модулей 88 § 4.17. Каталогизация перемещаемых модулей программ в биб¬ лиотеку объективных модулей 93 § 4.18. Расширенные сервисные функции диалоговой системы 95 § 4.19. Стандартные сервисные функции для библиотек .... 96 § 4.20. Обмен компонентами между личной и системной библи¬ отеками 98 § 4.21. Переименование и удаление компонентов библиотек . 99 § 4.22. Уплотнение библиотек 101 § 4.23. Бидиалоговый режим системы 102 Глава V. Генерация диалоговой системы 104 § 5.1. Что такое генерация системы 104 § 5.2. Планирование стандартных файлов операционной си¬ стемы 105 § 5.3. Перераспределение системной библиотеки 107 § 5.4. Формирование цилиндра меток 108 § 5.5. Формирование личных библиотек ПО § 5.6. Супервизор диалоговой системы Ш § 5.7. Формирование файлов постоянных директив . ... 114 § 5.8. Генерация модулей диалоговой системы 118 § 5.9. Коррекция таблицы стандартных назначений 124 § 5.10. Шаги генерации диалоговой системы 126 160
I «чана VI. Методики программирования и системные макрокоманды 127 § 6.1. Введение .... 127 § 6.2. Макрокоманды OXSVC и OFSVC . 127 § 6.3. Работа со стеками . . 129 § 6.4. Преобразование чисел . . 131 § 6.5. Приемы программирования 132 Заключение 136 Приложение А. Физические устройства ДОС ЕС ЭВМ • . . . . 137 Приложение В. Логические устройства ДОС ЕС ЭВМ 139 Приложение С. Операторы и директивы системных программ ДОС ЕС и диалоговой системы PALLADA . 141 Приложение D. Сообщения диалоговой системы PALLADA . . 144 Приложение Е. Сообщения системного макрогенератора .... 148 Приложение F. Таблица стандартного кода КОИ-7 для работы с перфолентой в ЕС ЭВМ 150 Приложение G. Таблица соответствия стандартных кодов ЕС ЭВМ - DKOI и КПК-12 151 Приложение Н. Параметры библиотек и оглавлений . 152 Приложение I. Компоненты диалоговой системы . . . 152 ПР1 [ложетше J. Новые системы макрокоманды ДОС ЕС . 155 Краткий словарь сокращений и терминов 156 Литература 157 С. В. ВЕКШИН ДИАЛОГ И ПРОБЛЕМНОЕ МАКРОПРОГРАММИРОВАНИЕ В ДИСКОВОЙ ОПЕРАЦИОННОЙ СИСТЕМЕ ЕС ЭВМ Редактор О. В. Шамфарова. Редактор издательства В. М. Соколов Художник Д. В. Бочаров: Художественный редактор Н. Н. Власик Технический редактор И. Н. Жмуркина. Корректоры Р. 3. Землянская, В. А. Шварцер ИВ № 21129 Сдано в набор 4.11.80. Подписано к печати 23.04.81. Т-09203. Формат 60x90Vn Бумага типографская № 2. Гарнитура обыкновенная. Печать высокая. Уел. печ. л. 10. Уч.-изд. л. 10. Тираж 5000 экз. Тип. зак. 3828 Цепа 1 р. Издательство «Наука». 117864 ГСП-7, Москва, В-485, Профсоюзная ул., 90 2-я типография издательства «Наука». 121099, Москва, Г-99, Шубинский пер., 10
1 руб.