Фраза 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 ИПД — что элемент принадлежит первому уровню модуля индексного ввода-вывода. Литера +, следующая за сокращением имспи модуля, обозначает, что элемент является устаревшим элементом в данной редакции стандарта Кобола и будет удален в следующей редакции.
1.1. Перечень отличий в понятиях языка
Элемент |
ГОСТ 22558 |
Настоящий стандарт |
4 Понятия языка Набор литер Литеры, используемые в словах для английской нотации: 0—9, A—Z, — (дефис) (для русской нотации 0—S, A—Z, А—Я — (дефис)) .... |
1 ЯДР |
1 ЯДР |
Элемент |
ГОСТ 22558 |
Настоящий стандарт |
Литеры, используемые в пунктуации; « ( ). про- |
|
|
бел |
1 ЯДР |
1 ЯДР |
Литеры, используемые в пунктуации: , (запятая) ; |
|
|
(точка с запятой) |
2 ЯДР |
1 ЯДР |
Литеры, используемые в пунктуации, : (двоеточие) |
— |
2 ЯДР |
Литеры, используемые в пунктуации, = |
2 БИБ |
2 ОИТ |
Литеры, используемые в редактировании, В , . z (П) * f (хг) |
|
|
0 CR (КР) DB (ДБ) |
1 ЯДР |
1 ЯДР |
Литеры, используемые в арифметических опера- |
|
|
циях, -1 * / ** Литеры, используемые в условиях отношения, = |
2 ЯДР |
2 ЯДР |
2 ЯДР |
1 ЯДР |
|
Литеры, используемые в условиях отношения, > |
|
|
= < = |
|
'1' ЯДР |
Литеры, используемые при индексировании, 4- — |
2 ТАБ |
'll ЯДР |
Разрешена замена двумя литерами |
1 ЯДР |
1 ЯДР |
Разрешена замена одной литерой |
|
1 ЯДР |
Замена одной литерой должна быть сделана для |
|
|
недостающих литер Кобола |
1 ЯДР |
— |
Разделители |
|
|
» ( ) . пробел |
1 ЯДР |
1 ЯДР |
, (запятая) ; (точка с запятой) |
2 ЯДР |
1 ЯДР |
: (двоеточие) |
|
2 ЯДР |
= |
2 БИБ |
2 ОИТ |
Один или больше пробелов, являющихся частью |
|
|
разделителя |
— |
1 ЯДР |
Строки-литер Слова Кобола |
|
|
Максимум 30 литер |
1 ЯДР |
1 ЯДР |
Системные имена и слова, определенные пользователем, должны образовывать непересекаю- |
|
|
щиеся множества |
1 ЯДР |
— |
Системные имена и слова, определенные поль- |
|
|
зователем, образуют пересекающиеся множества |
1 ЯДР |
|
Слова, определенные пользователем, |
|
|
Имя-алфавита |
1 ЯДР |
1 ЯДР |
Имя-коммуникации |
1 ком |
1 ком |
Им я-класс а |
—— |
1 ЯДР |
Имя-условия |
2 ЯДР |
2 ЯДР |
Имя-данного |
1 ЯДР |
1 ЯДР |
Должно начинаться буквой |
1 ЯДР |
|
Не обязательно начинается буквой |
2 ЯДР |
1 ЯДР |
Имя-файла |
1 ПОД |
я под |
|
1 ОТД |
1 отд |
|
1 ипд |
1 ипд |
|
11 СР г |
1 CPT |
|
1 гот |
1 гот |
Элемент |
ГОСТ 22558 |
Настоящий стандарт |
Имя-индекса |
1 ТАБ |
1 ЯДР |
Номер-уровня |
1 ЯДР |
1 ЯДР |
Имя-библиотеки |
2 БИБ |
<2 ОИТ |
Мнемоническое-имя |
1 ЯДР |
1 ЯДР |
Имя-парапрафа |
1 ЯДР |
1 ЯДР |
Имя-программы |
1 ЯДР |
1 ЯДР |
Имя-записи |
1 ПОД 1 отд и- ИПД 1 СРТ |
1 иод 1 отд ;!■ ИПД 1 СРТ |
Имя-отчета |
1 гот |
1 гот |
Имя-программного-модуля |
1 ЯДР |
1 ЯДР + |
Имя-секции |
'1 ЯДР |
1 ЯДР |
Номер-сегмента Символическая-л итера |
1 СЕГ |
1 СЕГ -І- 2 ЯДР |
Им я-текс та Системные-имена |
1 БИБ |
1 ОИТ |
Имя-машины |
1 ЯДР |
1 ЯДР |
Имя-реал изации |
1 ЯДР |
1 ЯДР |
Имя-языка Зарезервированные слова |
1 ЯДР |
1 ЯДР |
Обязательные слова |
1 ЯДР |
1 ЯДР |
Ключевые слова Слова-специальные-литеры |
1 ЯДР |
1 ЯДР |
Знаки арифметических операций + — */** Знаки арифметических операций, используемые при индексировании именем-данного, Знаки арифметических операций, используемые |
2 ЯДР |
2 ЯДР 1 ЯДР |
при индексировании именем-индекса + — |
2 ТАБ |
1 ЯДР |
Литеры отношения = > < Литеры отношения >= '< = |
2 ЯДР |
1 ЯДР 1 ЯДР |
Необязательные слова Связки Слова специального назначения Стандартные константы: ZERO (НУЛЬ), SPACE (ПРОБЕЛ) HIGH-VALUE (НАИБОЛЬ- ШЕЕ-ЗНАЧЕНИЕ), LOW-VALUE (НАИ- МЕНЬШЕЕ-ЗНАЧЕНИЕ), QUOTE (КАВЫЧ- |
1 ЯДР 2 ЯДР |
1 ЯДР |
КА) Стандартные константы: ZEROES, ZEROS (НУЛИ), SPACES (ПРОБЕЛЫ), HIGH-VALUES (НАИБОЛЬШИЕ-ЗНАЧЕНИЯ), LOW-VALUES (НАИМЕНЬШИЕ-ЗНАЧЕНИЯ), QUOTES (КА- |
1 ЯДР |
1 ЯДР |
БЫЧКИ) Стандартные константы: ALL литерал (ВСЕ ли- |
2 ЯДР |
1 ЯДР |
терал) Стандартные константы: символичеекая-литера, ALL стандартная-константа (ВСЕ стандартная-константа), ALL символическая-литера |
2 ЯДР |
2 ЯДР |
(ВСЕ символическая-литера) |
— |
2 ЯДР |