Перейти до вмісту
ГОСТ 22558-89
/ 116

Если выполнение отладочной секции вызвано ссылкой на идентификатор-1, то имеет место следующее:

DEBUG-LINE (СТРОКА-ОТЛАДКИ) идентифицирует оператор, ссылающийся на идентификатор-1;

DEBUG-NAME (ИМЯ-ОТЛАДКИ) содержит идентифи­катор-1;

DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТЛАДКИ) содержит

значение, представленное идентификатором-1 в момент передачи управления отладочной секции (см. общие правила 5 и 6),

Часть 16. МОДУЛЬ СЕГМЕНТАЦИИ

ВВЕДЕНИЕ В МОДУЛЬ СЕГМЕНТАЦИИ

Назначение

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

Модуль сегментации рассматривается в настоящем стандарте Кобола как устаревший элемент и будет устранен из последующих редакций.

Характеристика уровней

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

Все сегменты, специфицированные как фиксированные, долж­ны быть смежными в исходной программе.

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

Область действия

Модуль сегментации в Коболе касается только сегментации процедур. Следовательно, при определении требований к сегмен­тации объектной программы рассматриваются только раздел про­цедур и раздел оборудования исходной программы.

Организация

Сегменты программы

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

Фиксированная часть программы

Фиксированная часть определяется как часть объектной про­граммы, которая логически рассматривается, как если бы она пол­ностью и постоянно находилась в памяти. Эта часть программы составляется из двух типов сегментов: фиксированных посто­янных сегментов | и фиксированных перекрываемых сегментові-

Фиксированный постоянный сегмент — это сегмент в фикси­рованной части, который не может перекрываться никакой другой частью программы. | фиксированный перекрываемый сегмент — это сегмент фиксированной части, который, хотя и обрабатыва­ется логически .так, как если бы он постоянно находился в памя­ти, может быть перекрыт любым другим сегментом с целью оп­тимизации использования памяти. Число фиксированных посто­янных сегментов в фиксированной части может быть изменено указанием фразы SEGMENT-LIMIT (ГРАНИЦА СЕГМЕН­ТОВ) (п. 2.3 настоящей части).

Если такой сегмент вызван программой, он всегда становится доступным в его последнем использованном состоянии.

Независимые сегменты

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

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

когда рассматриваемому сегменту передается управление в результате неявной передачи управления между операторами SORT (СОРТИРОВАТЬ) или MERGE (СЛИТЬ) в сегменте с но­мером сегмента, отличным от рассматриваемого, и процедурой ввода или вывода в рассматриваемом независимом сегменте;

когда рассматриваемому сегменту управление передается явно из сегмента с номером сегмента, отличным от рассматривае­мого, за исключением передачи управления от оператора EXIT (ВЫЙТИ).

При последующих передачах управления независимому сегмен­ту он находится в своем последнем использованном состоянии при следующих условиях:

когда рассматриваемому сегменту управление передается неявно из сегмента с номером сегмента, отличным от рассматри­ваемого, за исключением, отмеченным выше в (1) и (2);

когда управление рассматриваемому сегменту передается явно в результате выполнения оператора EXIT PROGRAM (ВЫЙ­ТИ ИЗ ПРОГРАММЫ) (см. ч. 4 п. 4.4.2).

Классификация сегментации

Сегментируемые секции^ классифицируются системой номеров сегментов (п. 3.2 настоящей части) и следующими правилами.

Логические требования. Секции, обращения к которым осу­ществляются постоянно или очень часто, обычно относятся к одно­му из постоянных сегментов; секции, используемые реже, обычно относят | либо к одному из перекрываемых фиксированных сег-■. I ментов, либо I к одному из независимых сегментов, определяе­мых логическими требованиями.

Частота использования. Обычно чаще используемым сек­циям присваиваются меньшие номера сегментов, реже — большие номера сегментов.

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

Управление сегментацией

Логическая последовательность программы совпадает с физи­ческой, за исключением специальных передач управления. Если для управления переходами от сегмента к сегменту (в соответст­вии с правилами п. 3.2 настоящей части) требуется переупорядоче­ние объектной программы, то реализация должна обеспечивать передачи управления так, чтобы осуществить логический поток, оп­ределенный в исходной программе. Реализация должна обеспечи­вать также все необходимые передачи управления для обрабатыва­емого сегмента при любом его использовании. Управление может быть передано внутри исходной программы любому параграфу в секции; таким образом, необязательно передавать управление в начало секции.

2. РАЗДЕЛ ОБОРУДОВАНИЯ В МОДУЛЕ СЕГМЕНТАЦИИ

Секция конфигурации

Информация, связанная с секцией конфигурации, помещена в ч. 6.

Параграф OBJECT-COMPUTER (РАБОЧАЯ-МАШИНА)

Назначение

Параграф OBJECT-COMPUTER (РАБОЧАЯ-МАШИНА) обеспечивает средства для описания машины, на которой долж­на выполняться программа.

Общий формат

OBJECT-COMPUTER [имя-машины

WORDS

MEMORY SIZE целое-1 CHARACTERS

(MODULES

[PROGRAM COLLATING SEQUENCE IS имя-алфавита-1]

[SEGMENT-LIMIT IS номер-сегмента] . ]

РАБОЧАЯ-МАШИНА, [имя-машины

(СЛОВ ЛИТЕР

МОДУЛЕЙ


РАЗМЕР ПАМЯТИ целое-1

[ПРОГРАММНЫЙ АЛФАВИТ имя-алфавита-1]

[ГРАНИЦА СЕГМЕНТОВ номер-сегмента] . ]

Синтаксическое правило

Имя-машины — это системное имя.

Общие правила

Все фразы параграфа OBJECT-COMPUTER (РАБО­ЧАЯ-МАШИНА) применяются к программе, в которой они яв­но или неявно заданы, и к любой программе, содержащейся в этой программе.

Общие правила для имени-машины, фраз ME/AORY SIZE (РАЗМЕР ПАМЯТИ) и PROGRAM COLLATING SEQU­ENCE (ПРОГРАММНЫЙ АЛФАВИТ) приводятся в ч. 6.

Фраза SEGMENT-LIMIT (ГРАНИЦА СЕГМЕНТОВ) описывается в п. 2.3 настоящей части.

Фраза SEGMENT LIMIT (ГРАНИЦА СЕГМЕНТОВ)

Назначение

В идеальном случае все программные сегменты, имеющие номера-сегментов от 0 до 49, специфицируются как постоянные сегменты. Однако, когда доступная память недостаточна для того, чтобы разместить все постоянные сегменты плюс макси­мальный перекрываемый сегмент, становится необходимым сок­ратить число постоянных сегментов. Фраза SEGMENT-LIMIT (ГРАНИЦА СЕГМЕНТОВ) дает пользователю средство, кото­рым он может уменьшить число постоянных сегментов в своей программе с сохранением логических свойств сегментов фикси­рованной части (номера-сегментов от 0 до 49).

Общий формат

SEGMENT-LIMIT IS номер-сегмента

ГРАНИЦА СЕГМЕНТОВ номер-сегмента

Синтаксическое правило

Номер-сегмента должен быть целым, принимающим значе­ния от 0 до 49.

Общие правила

Если задана фраза SEGMENT-LIMIT (ГРАНИЦА СЕГ­МЕНТОВ), то в качестве постоянных сегментов объектной про­граммы рассматриваются только сегменты, имеющие номера от О до (но не включая) номера, специфицированного фразой SEGMENT-LIMIT (ГРАНИЦА СЕГМЕНТОВ).

Сегменты, имеющие номера от номера, специфицирован­ного фразой SEGMENT-LIMIT (ГРАНИЦА СЕГМЕНТОВ), до 49, рассматриваются как перекрываемые фиксированные сег­менты.

Если фраза SEGMENT-LIMIT (ГРАНИЦА СЕГМЕН­ТОВ) опущена, все сегменты с номерами-сегментов от 0 до 49 будут рассматриваться как постоянные сегменты объектной про­граммы.

3. РАЗДЕЛ ПРОЦЕДУР В МОДУЛЕ СЕГМЕНТАЦИИ

Общее описание

При использовании модуля сегментации в исходном Кобол-про- /рамме раздел процедур содержит секции с номерами сегментов.

Ниже приводится общий формат раздела процедур, в котором задаются секции и номера сегментов.

PROCEDURE DIVISION.

[DECLARATIVES.

{имя-секции SECTION [номер-сегмента].

Оператор USE.

[имя-параграфа.

[предложение] . .. ]

END DECLARATIVES.

{имя-секции SECTION [номер-сегмента].

[имя-параграфа.

[предложение]

РАЗДЕЛ ПРОЦЕДУР.

[ДЕКЛАРАТЙВЫ.

{СЕКЦИЯ имя-секции [номер-сегмента] .

Оператор ИСПОЛЬЗОВАТЬ.

[имя-параграфа.

X [предложение] ... ]

КОНЕЦ ДЕКЛАРАТИВ.

{СЕКЦИЯ имя-секции [номер-сегмента] .

[имя-параграфа.

[предложение] ... ]

Номера сегментов

Назначение

Классификация секций выполняется с помощью системы номе­ров сегментов. Номер сегмента включается в заголовок секции.

Общий формат

имя-секции SECTION [номер-сегмента] .

СЕКЦИЯ имя-секции [номер-сегмента];.

Синтаксические правила

Номер-сегмента — целое, принимающее значения от 0 до 99.

Если номер-сегмента в заголовке секции опущен, то по умолчанию он предполагается равным 0.

Секции декларатив должны иметь номера-сегментов, мень­шие 50.

Общие правила

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

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

Сегменты с номерами-сегментов от 0 до 49 принадлежат фиксированной части программы. На уровне 1 все секции с номе­рами-сегментов от 0 до 49 должны быть в исходной программе смежны.

Сегменты с номерами-сегментов от 50 до 99 — независи­мые сегменты.

Ограничения на программный поток

При использовании сегментации на операторы ALTER (ИЗМЕ­НИТЬ), PERFORM (ВЫПОЛНИТЬ), MERGE (СЛИТЬ) и SORT (СОРТИРОВАТЬ) накладываются следующие ограничения.

Оператор ALTER (ИЗМЕНИТЬ)

Оператор GO ТО (ПЕРЕЙТИ) в секции с номером сегмента, большим или равным 50, не должен быть объектом оператора ALTER (ИЗМЕНИТЬ) в секции с другим номером сегмента.

Все другие использования оператора ALTER (ИЗМЕНИТЬ) допустимы и выполняются даже в том случае, когда оператор GO ТО (ПЕРЕЙТИ), на который ссылается оператор ALTER (ИЗМЕ­НИТЬ), находится в фиксированном перекрываемом сегменте.

Оператор PERFORM (ВЫПОЛНИТЬ)

Оператор PERFORM (ВЫПОЛНИТЬ), указанный в секции, не принадлежащей независимому сегменту, может иметь в своей об­ласти действия кроме декларативных секций только одну из следу' ющих процедур:

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

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

Оператор PERFORM (ВЫПОЛНИТЬ), указанный в независи­мом сегменте, может иметь в своей области действия кроме декла­ративных секций только одну из следующих процедур:

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

секции и (или) параграфы, полностью содержащиеся в том же независимом сегменте, что и рассматриваемый оператор PERFORM (ВЫПОЛНИТЬ).

Оператор MERGE (СЛИТЬ)

Если оператор MERGE (СЛИТЬ) появляется в секции, не при­надлежащей независимому сегменту, то процедура вывода, указан­ная в операторе MERGE (СЛИТЬ) должна содержаться:

полностью внутри сегментов, не являющихся независимы­ми, или

целиком содержаться в одном независимом сегменте.

Если оператор MERGE (СЛИТЬ) появляется в независимом сегменте, то процедура вывода, на которую ссылается оператор MERGE (СЛИТЬ), должна содержаться:

полностью внутри сегментов, не являющихся независимы­ми, или

полностью внутри того же независимого сегмента, в кото­ром находится оператор MERGE (СЛИТЬ).

Оператор SORT (СОРТИРОВАТЬ)

Если оператор SORT (СОРТИРОВАТЬ) появляется в секции, не принадлежащей независимому сегменту, то процедура ввода и процедура вывода, на которую ссылается оператор SORT (СОР­ТИРОВАТЬ), должны появляться:

полностью внутри сегментов, не являющихся независимы­ми, или

) целиком содержаться в одном независимом сегменте.

Если оператор SORT (СОРТИРОВАТЬ) указан в независимом сегменте, то процедура ввода и процедура вывода, на которые ссы­лается оператор SORT (СОРТИРОВАТЬ), должны содержаться:

полностью внутри сегментов, не являющихся независимы­ми, или

полностью внутри того же независимого сегмента, в кото­ром находится оператор SORT (СОРТИРОВАТЬ).

Часть 17. ПРИЛОЖЕНИЯ

ПРИЛОЖЕНИЕ I

Справочное

ОТЛИЧИЯ МЕЖДУ ПРЕДЫДУЩИМ И НАСТОЯЩИМ СТАНДАРТОМ

1. Перечень отличий

Приложение содержит перечень всех элементов ГОСТ 22558 и настоящего стандарта. Элементы упорядочены соответственно разделам Кобола.

Литера «—» в столбце обозначает отсутствие указанного элемента. Наличие элемента определяется трехбуквенным обозначением модуля согласно следую­щей таблице.

Сокращение

Значение

ЯДР ТАБ ПОД ОТД ИПД МПС СРТ опт БИБ ГОТ ком отл СЕГ

Ядро

Обработка таблиц

Последовательный ввод-вывод Относительный ввод-вывод Индексный ввод-вывод Межпрограммные связи Сортировка-слияние Обработка исходных текстов Библиотека

Генератор отчетов Коммуникации Отладка Сегментация

Уровень, на котором встречается элемент в модуле, указан цифрой, пред­шествующей трехбуквенному сокращению имени модуля. Например, 2 ЯДР ука­зывает, что элемент принадлежит второму уровню ядра, а 1 ИПД — что элемент принадлежит первому уровню модуля индексного ввода-вывода. Литера +, сле­дующая за сокращением имспи модуля, обозначает, что элемент является уста­ревшим элементом в данной редакции стандарта Кобола и будет удален в сле­дующей редакции.

Побачили розбіжність з офіційним текстом?

Повідомити про неточність

Напишіть, що саме розходиться з офіційною публікацією. Код документа вкажіть у повідомленні — так ми швидше знайдемо потрібне місце.

Перейти до форми зворотного зв'язку

Дивіться також

Весь розділ →