Файл: Зайцев Н.Г. Информационное и математическое обеспечение АСУП.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 15.07.2024

Просмотров: 95

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

собой специальную программу, которая анализирует слова и знаки программы, написанной на языке «Кобол», и создает новую программу на внутреннем языке системы программирования, принятой для машины. Одной коман­ де в языке «Кобол», а иногда даже одному слову или знаку часто соответствует большое число машинных команд. В функцию транслятора входит определение са­ мих команд и объединение их в новую программу. Вна­ чале в машину вводят транслятор, а затем — исходную программу, написанную на языке «Кобол». Транслятор анализирует ее и создает рабочую программу, записан­ ную на языке данной машины на магнитной ленте или отперфорированную на картах. После того, как рабочая программа подготовлена, она может быть помещена в машину либо может храниться во внешней памяти для использования ее в будущем. Перед выполнением рабо­ чую программу надо вновь поместить во внутреннюю па­ мять машины, после чего система готова для обработки данных.

Так как рабочая программа — это программа на язы­ ке машины, транслятор должен учитывать оперативные характеристики машины и возможности имеющейся аппа­ ратуры. Каждая машина отличается некоторым образом от других машин этого же типа. Например, число блоков магнитной ленты, предназначенных для хранения дан­ ных, может меняться как из-за изменения числа действи­ тельно установленных блоков, так и из-за изменения числа блоков, отведенных для данной работы. Из этого следует, что транслятор необходимо снабдить некоторой основной информацией об имеющейся в наличии аппа­ ратуре. Это делается путем записи соответствующей информации в разделе «Оборудование».

Идеи, положенные в основу структуры раздела «Дан­ ные», во многом определяют ценность языка «Кобол». Понятия этого раздела можно с успехом использовать при описании абсолютного большинства задач и про­ грамм, входящих и составляющих структуру* АСУП.

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

60

в памяти, конкретные значения данных (если они известны).

Отдельные объекты можно объединять в группы, те — в свою очередь и т. д., образуя сложную многоуровневую иерархию. Для указания этой иерархии в языке «Кобол» введена специальная статья, называемая номером уров­ ня данного. Данное, имеющее минимальный уровень 01, определяет высший уровень иерархии, называемый записью. Ряд записей может входить в массив, наимено­ ванию которого приписан специальный номер уровня ОМ. Любое данное, входящее в состав некоторого другого дан­ ного, имеет больший номер уровня.

Примером такого описания данных является следую­

щее: 01— данные

работников;

02 — личные данные;

03 — фамилия; 03 — имя;

03— отчество;

03 — дата

рождения; 04 — месяц; 04 — год

рождения:

02 — долж­

ность; 02 — зарплата.

определяет, что

некоторая

Номер уровня 01

и т. д.

запись, называемая «Данные работников», содержит в качестве подразделов: личные данные, должность и зар­ плату (номера уровней 02). В свою очередь, личные дан­ ные подразделяются на фамилию, имя, отчество и дату рождения (уровень 03), а дата рождения делится еще на месяц и год рождения (уровень 04). Приведенное описа­ ние характеризует данные, которые включаются в доку­ мент следующего вида:

Данные работников

 

Личные данные

 

 

 

 

Дата рожде­

Зар­

 

 

ния

Долж­

Фамилия

Имя

Отчество

ность

плата

 

 

 

 

Месяц

Год

 

1

 

1

 

 

Как видно, аппарат описания данных содержит необ­ ходимые понятия для выражения сложных иерархических табличных структур, и этот аппарат необходимо взять на вооружение при разработке МО АСУП.

Основными единицами информации, описываемыми в разделе «Данные», являются: элемент данных, запись.

91


массив. Иерархия представления данных в языке «Кобол» может быть представлена следующей схемой:

 

 

Данные

 

 

Массив

Другие

 

 

массивы

 

 

 

 

 

Запись

Другие

 

 

 

записи

 

Группа элементов

Другие

 

 

 

группы

Элемент данных

Другие

 

 

 

элементы

 

Сим­

Другие

 

 

вол

С И М В О Л Ы

 

 

Размер и структуру каждого элемента данных можно задавать так называемым шаблоном, который состоит из знаков: X — любой символ; А — символ буквы; 9 — сим­ вол цифры; В — пробел и т. д. При помощи шаблона точно описывают внутреннюю структуру и размер каж­

дого элемента данных. Так, описание «02

год рождения

шаблон 9999» определяет, что элемент

данных — год

рождения состоит из четырех цифр. Шаблон XX 9АА ука­ зывает, что значение содержит два любых символа, циф­ ру и две буквы.

Все понятия и идеи, заложенные в основу раздела данных, могут быть успешно использованы при описании данных, относящихся к производственно-хозяйственной деятельности. Поэтому при построении программ МО АСУП их следует широко применять.

Раздел «Процедуры» в программе, записанной на языке «Кобол», состоит из ряда предложений. Предло­ жение составляют из одного или нескольких предписа­ ний. Предписание состоит из отдельных операторов, каждый из которых состоит из операции, выражаемой глаголом (или знаком действия), и операндов. Группы последовательно записанных предложений можно объеди­ нять в параграфы и секции. Каждому параграфу или секции присваивается название (метка), которое запи­ сывается перед первым предложением соответствующего параграфа или секции и после которого ставится точка.

'92


К параграфу относятся все предложения, которые за­ писываются после его названия, вплоть до названия следующего параграфа или секции либо конца раздела процедур. К секции относятся все предложения, записан­ ные после ее названия, вплоть до названия следующей секции или конца раздела процедур. Секция может раз­ деляться на параграфы. Имена секций и параграфов используют в операторах перехода для указания места в программе, к которому осуществляется переход. Таким образом, переходы возможны только к началам секций и параграфов, так как остальные предложения не имеют названий. Каждый оператор, к которому необходимо за­ писать обращение, должен быть назван как начало пара­ графа или секции.

Структура построения раздела процедур может быть представлена следующей схемой:

 

 

Раздел

процедур

 

 

Секция

Другие

 

 

 

секции

 

Параграф

Другие

 

 

 

параграфы

 

Предложение

 

Другие

 

 

предло­

 

 

 

жения

Предписа ние

Другие

 

предпи­

 

 

 

сания

 

Опера­

Другие

 

 

тор,

 

 

one*

операторы

 

 

ранды

 

 

 

В языке «Кобол» имеется определенный набор допу­ стимых операторов, каждый из которых обозначается определенным глаголом.

Ниже приводится список основных глаголов языка «Кобол»:

Программные глаголы Открыть

Читать Ввод ■ вывод Писать

Закрыть

93


Переместить Просмотреть | Обращение с данными Вычислить

Перейти

Выполнить J Управление последовательностью Остановить

Выйти

> Процессорные глаголы

Отметить

Каждый глагол в языке «Кобол» имеет один или не­ сколько постоянных форматов или контекстов, в которых его можно употребить. Формат указывает на организа­ цию (структуру) оператора, состоящего из глагола и операндов. Операнды могут представлять как назва­ ния данных и как литералы. Название данных являетс-я аналогом условного адреса, применяемого при програм­ мировании в условных адресах, а литералы — букваль­ ным выражением той величины, над которой надо выполнить то или иное преобразование.

Обслуживающие программы. Основными задачами обслуживающих программ являются следующие:

запись программы в библиотеку; внесение изменений в программу; исключение программы из библиотеки;

перезапись программ с одного магнитного носителя на другой;

печать и вывод на перфоноситель требуемой про­ граммы;

сборка программ в сегменты; вызов нужных программ в процессе работы в опера­

тивную память и настройка ее по месту размещения. Записывает (или исключает) программы в библиоте­

ку программа ведения библиотеки.

Вносить изменения в программу, как правило, целе­ сообразно на входном языке программирования. Для этого необходимо предусмотреть средства, позволяющие вводить коррективы в программу, написанную на вход­ ном языке. Любая процедура изменения заключается в выполнении следующих операций: вставки в имеющийся текст в заданное место строки произвольной длины; уда­ ления из текста строки произвольной длины; замены в тексте одной строки другой (однако замена может быть выполнена и последовательностью двух предыдущих операций: удаления и вставки).

94

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

При сборке программ в сегменты требуется найти нужные программы в библиотеке и объединить их вместе. При этом необходимо предусмотреть возможность раз­ мещения собранного сегмента в любом месте оперативной памяти. Поэтому сегмент собирается на языке загрузки. При сборке осуществляется также распределение памяти между составляющими областями различных программ. Программы, к которым обращаются несколько программ, должны быть включены в сегмент только один раз. Особое место должно быть выделено общему для всех программ полю, через которое осуществляется передача информации между программами.

Последовательность работ при сборке программ опре­ деляется задачами сборки и состоит из следующих операций: поиска указанных программ; распределения памяти между ними; объединения программ в заданный сегмент; подготовки и печати протокола сборки.

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

Отладочные программы. Программы, предназначен­ ные для решения задач в АСУП, характеризуются большим объемом (сотни и тысячи команд) и имеют достаточно сложное логическое построение. Составить такую программу без ошибок нельзя, а обнаружить допу­ щенные ошибки в процессе отладки в сложных програм­ мах непросто. Для повышения эффективности отладки необходимо иметь четкую методику и соответствующие программные средства.

Прежде всего, укажем, что ошибки в программах, введенных в машину, целесообразно разделить на три группы: алгоритмические; ошибки перфорации; про­

граммные.

Алгоритмические ошибки представляют собой ошиб­ ки в программной трактовке алгоритма, например недо­ учет всех вариантов работы алгоритма. Они могут быть обнаружены только при решении контрольных задач,

95


при работающей программе. Методы устранения таких ошибок определяются содержательной сущностью алго­ ритма.

Программные ошибки являются собственно ошибками программирования, и именно их наличие не дает возмож­ ности получить правильный результат, несмотря на отсутствие алгоритмических ошибок. Поскольку про­ граммные ошибки обусловлены особенностями програм­ мирования, можно указать пути их устранения.

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

Программные ошибки в зависимости от типа можно разделить на три группы: ошибки в командах; ошибки в распределении памяти; ошибки в определении хода про­ граммы.

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

Ошибки в распределении памяти возникают при работе больших программ или программ, обрабатываю­ щих большие объемы информации, когда может оказаться недостаточным объем оперативной памяти. Это приво­ дит к необходимости использования одного и того же массива рабочих ячеек для хранения различной инфор­ мации на разных этапах работы программы. Особенно это относится к специальным рабочйм ячейкам, напри­ мер индексным, фиксированным входным и выходным ячейкам подпрограмм и т. д. В этом случае информация, получаемая на первых этапах работы программы, долж­ на сохраняться для использования на последующих эта­ пах ее работы, но стирается в момент работы програм­ мы на промежуточных этапах. Для обнаружения ошибок

9 6

этой группы перед выполнением очередного этапа работы программы следует осуществлять выборочную печать рабочих ячеек, используемых многократно.

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

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

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

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

3-2456

9 7