02 ИМЯ-ОТЛАДКИ ШАБЛОН X (30).

02 ЗАПОЛНИТЕЛЬ ШАБЛОН X ЗНАЧЕНИЕ ПРОБЕЛ.

02 ИНДЕКС-ОТЛАДКИ-1 ШАБЛОН 39999 ЗНАК ПЕРВЫЙ ОТДЕЛЬНО.

02 ЗАПОЛНИТЕЛЬ ШАБЛОН X ЗНАЧЕНИЕ ПРОБЕЛ.

02 ИНДЕКС-ОТЛАДКИ-2 ШАБЛОН 39999 ЗНАК ПЕРВЫЙ ОТДЕЛЬНО.

02 ЗАПОЛНИТЕЛЬ ШАБЛОН X ЗНАЧЕНИЕ ПРОБЕЛ.

02 ИНДЕКС-ОТЛАДКИ-3 ШАБЛОН 39999 ЗНАК ПЕРВЫЙ ОТДЕЛЬНО.

02 ЗАПОЛНИТЕЛЬ ШАБЛОН X ЗНАЧЕНИЕ ПРОБЕЛ.

02 ЗНАЧЕНИЕ-ОТЛАДКИ ШАБЛОН Х(п).

  1. Перед каждым выполнением отладочной секции значения данных, соотнесенных DEBUG-ITEM (ДАННЫЕ-ОТЛАДКИ), за­полняются пробелами. Затем значения подчиненных ему данных обновляются в соответствии с нижеприведенными общими прави­лами, непосредственно перед передачей управления этой отладоч­ной секции. Значения данных, не указанных в нижеследующих об­щих правилах, представляются пробелами.

Обновление выполняется в соответствии с правилами для опе­ратора MOVE (ПОМЕСТИТЬ), за единственным исключением, со­стоящим в том, что перемещение в DEBUG-CONTENTS (ЗНАЧЕ­НИЕ-ОТЛАДКИ) неявно рассматривается как элементарное пере­мещение буквенно-цифрового в буквенно-цифровое без преобразо­вания данных из одной формы внутреннего представления в дру­гую.

  1. DEBUG-LINE (СТРОКА-ОТЛАДКИ) является опреде­ленным реализацией средством идентификации исходного опера­тора.

  2. DEBUG-NAME (ИМЯ-ОТЛАДКИ) содержит первые 30 литер имени, вызвавшего выполнение отладочной секции.

Все уточнители имени отделяются в значении данного DEBUG­NAME (ИМЯ-ОТЛАДКИ) словом IN или OF (ИЗ).

Индексы при их наличии не включаются в это значение.

  1. Если ссылка на данное, вызвавшее выполнение отла­дочной секции, индексирована, то в DEBUG-SUB-1 (ИНДЕКС- ОТЛАДКИ-1), DEBUG-SUB-2 (ИНДЕКС-ОТЛАДКИ-2), DE­BUG-SUB-3 (ИНДЕКС-ОТЛАДКИ-3) соответственно помеща­ются номера вхождений каждого из необходимых уровней индек- сирования.

  2. Размер данного . DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТ­ЛАДКИ) должен допускать представление необходимых значений, определяемых последующими общими правилами.

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

  1. DEBUG-LINE (СТРОКА-ОТЛАДКИ) идентифицирует пер­вый оператор этой процедуры;

  2. DEBUG-NAME (ИМЯ-ОТЛАДКИ) содержит имя этой про­цедуры;DEBUG-CONTENTS (ЗНАЧЕНИЕ ОТЛАДКИ) содержит значение ’START PROGRAM’ («НАЧАЛО ПРОГРАММЫ»),

  1. Если выполнение отладочной секции вызвано ссылкой на имя-процедуры-1 в операторе ALTER (ИЗМЕНИТЬ), то имеет мес­то следующее:

  1. DEBUG-LINE (СТРОКА-ОТЛАДКИ) идентифицирует этот оператор ALTER (ИЗМЕНИТЬ);

  2. DEBUG-NAME (ИМЯ-ОТЛАДКИ) содержит имя-процеду­ры-1;

  3. DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТЛАДКИ) содержит нмя процедуры, указанное фразой PROCEED ТО (ДЛЯ ПЕРЕХО­ДА К) оператора ALTER (ИЗМЕНИТЬ).

  1. Если выполнение отладочной секции вызвано передачей управления при выполнении оператора GO ТО (ПЕРЕЙТИ), то имеет место следующее:

  1. DEBUG-LINE (СТРОКА-ОТЛАДКИ) идентифицирует ука­занный оператор GO ТО (ПЕРЕЙТИ), который передает управле­ние нмени-процедуры-2;

  2. DEBUG-NAME (ИМЯ-ОТЛАДКИ) содержит имя-процеду­ры-1.

  1. Если выполнение отладочной секции вызвано ссылкой на имя-процедуры-1, указанной во фразах INPUT (ПРОЦЕДУРА ВВОДА) или OUTPUT (ПРОЦЕДУРА ВЫВОДА) оператора SORT (СОРТИРОВАТЬ) или MERGE (СЛИТЬ), то имеет место следующее:

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

  2. DEBUG-NAME (ИМЯ-ОТЛАДКИ) содержит имя-процеду­ры-1;

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

  1. в случае фразы INPUT (ПРОЦЕДУРА ВВОДА) оператора SORT (СОРТИРОВАТЬ) — ’SORT INPUT’ («ВВОД СОРТИРОВ­КИ»);

  2. в случае фразы OUTPUT (ПРОЦЕДУРА ВЫВОДА) опера­тора SORT (СОРТИРОВАТЬ) — ’SORT OUTPUT’ («ВЫВОД СОРТИРОВКИ»);

  3. в случае фразы OUTPUT (ПРОЦЕДУРА ВЫВОДА) опера­тора MERGE (СЛИТЬ) — ’MERGE OUTPUT’ («ВЫВОД СЛИЯ­НИЯ»).

  1. Если выполнение отладочной секции вызвано передачей управления имени-процедуры-1 при выполнении оператора PER­FORM (ВЫПОЛНИТЬ), то имеет место следующее:

  1. DEBUG-LINE (СТРОКА-ОТЛАДКИ) идентифицирует этот оператор;

  2. DEBUG-NAME (ИМЯ-ОТЛАДКИ) содержит имя-процеду­ры-1;

  3. DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТЛАДКИ) содержит ’PERFORM LOOP’ («ЦИКЛ ВЫПОЛНИТЬ»).

  1. Если имя-процедуры-1 относится к процедуре, выполне­ние которой управляется оператором USE (ИСПОЛЬЗОВАТЬ), и наступили условия ее выполнения, то имеет место следующее:

  1. DEBUG-LINE (СТРОКА-ОТЛАДКИ) идентифицирует опе­ратор, выполнение которого повлекло выполнение имени-процеду- ры-1;

  2. DEBUG-NAME (ИМЯ-ОТЛАДКИ) содержит имя-процеду­ры-1;

  3. DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТЛАДКИ) содержит значение ’USE PROCEDURE’ («ПРОЦЕДУРА ИСПОЛЬЗО­ВАТЬ»),

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

  1. DEBUG-LINE (СТРОКА-ОТЛАДКИ) идентифицирует пре­дыдущий оператор;

  2. DEBUG-NAME (ИМЯ-ОТЛАДКИ) содержит имя-процеду­ры-1;

  3. DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТЛАДКИ) содержит ’FALL THR0UGN’ («ПРОХОДИТ ЧЕРЕЗ»),

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

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

  2. DEBUG-NAME (ИМЯ-ОТЛАДКИ) содержит имя-фай­ла-1 или имя-коммуникацйи-1;

  3. для оператора READ (ЧИТАТЬ) DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТЛАДКИ) содержит прочитанную запись;

  4. для остальных операторов, ссылающихся на имя-фай- ла-1, DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТЛАДКИ) содержит пробелы;

  5. для любого оператора, ссылающегося на имя-коммуника- ции-1, DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТЛАДКИ) содер­жит значение связанной с ним области.

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

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

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

DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТЛАДКИ) содержит значение, представленное идентификатором-1 в момент передачи управления отладочной секции (см. общие правила 5 и 6),

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

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

    1. Назначение

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

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

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

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

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

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

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

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

  1. Организация

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    1. Назначение

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

  1. Общий формат

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



WORDS

MEMORY SIZE целое-1 CHARACTERS

(MODULES

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

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

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

(СЛОВ ЛИТЕР

МОДУЛЕЙ


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



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

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

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

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

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

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

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

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