ГОСТ 22558-89 сторінка 71 з 116
заголовком следующего раздела в этой программе;
заголовком раздела идентификации, который указывает на начало другой исходной программы;
заголовком конца программы;
физической позицией, после которой больше не появляются строки исходной программы.
Исходная программа Кобола, которая прямо или косвен- ■ но содержится в другой программе, рассматривается в этих спецификациях как отдельная программа, которая может дополнительно обращаться к некоторым ресурсам, определенным в содержащей программе.
Объектный код, получаемый в результате компиляции исходной программы, содержащейся в другой программе, рассматривается в этих спецификациях как неотъемлемая часть объектного кода, получающегося в результате компиляции со- держащей программы.
Начальное состояние программы
Начальное состояние программы — это состояние программы в момент ее первого вызова в единице исполнения.
X а р а к т е р и с т и к и программы
.(1) Инициируются внутренние данные программы, находящиеся в секции рабочей памяти и секции коммуникаций. Если фраза VALUE (ЗНАЧЕНИЕ) используется в описании данного, это данное инициируется на указанное значение.
Если данному не соответствует фраза VALUE (ЗНАЧЕНИЕ), начальное значение данного не определено.
Файлы с внутренними определителями файлов, связанные с программой, не находятся в открытом состоянии.
Управляющие механизмы для всех операторов PERFORM (ВЫПОЛНИТЬ), находящихся в программе, устанавливаются в свое начальное состояние.
Оператор GO ТО (ПЕРЕЙТИ К), на который ссылается оператор ALTER (ИЗМЕНИТЬ), находящийся в этой же программе, устанавливается в свое начальное состояние.
2.4.2-. Программы в начальном состоянии Программа находится в начальном состоянии:
при первом вызове программы в единице исполнения;
при первом вызове программы после выполнения оператора CANCEL (ОСВОБОДИТЬ) для этой программы или программы, которая прямо или косвенно содержит эту программу;
при каждом вызове программы, если она имеет атрибут «начальная»;
при первом вызове программы после выполнения оператора CALL (ВЫЗВАТЬ) для программы, которая имеет атрибут «начальная» и которая прямо или косвенно содержит данную программу.
2.Ь. Заголовок конца программы
Назначение
Заголовок конца программы указывает на конец названной исходной программы Кобола.
Общий формат
END PROGRAM имя-программы.
КОНЕЦ-ПРОГРАММЫ имя-программы.
Синтаксические правила
Имя-программы должно подчиняться правилам образования слов, определяемых пользователем.
Имя-программы должно быть таким же, как имя-программы, объявленное в предыдущем параграфе PROGRAM-ID (ПРОГРАММА) (п. 3.1 настоящей части).
Если параграф PROGRAM-ID (ПРОГРАММА), объявляющий некоторое имя-программы, помещается между параграфом PROGRAM-ID (ПРОГРАММА) и заголовком конца прог-
раммы, соответственно объявляющим и ссылающимся на другое і имя-программы, заголовок конца программы, указывающий пер- ' вое имя-программы, должен предшествовать заголовку, в кото- | ром указывается второе имя-программы. і
О б щ и е правила
Заголовок конца программы должен присутствовать в ! каждой программе, которая либо содержит другую программу, ! либо содержится в другой программе. |
Заголовок конца программы обозначает конец указанной исходной программы Кобола.
Если программа, которая заканчивается заголовком кон- I ца программы, содержится в другой программе, следующий one- і ратор должен быть заголовком раздела идентификации или дру- j гим заголовком конца программы, который завершает содержа- ! щую программу. j
1 Если программа, заканчивающаяся заголовком конца про-} іграммы, не содержится в другой программе и | если следующий исходный оператор является оператором Кобола, он должен быть заголовком раздела идентификации программы, которая должна компилироваться отдельно от программы, заканчивающейся заго« ловком конца программы.
РАЗДЕЛ ИДЕНТИФИКАЦИИ В МОДУЛЕ МЕЖПРОГРАММНЫ К СВЯЗЕЙ
Параграф PROGRAM-ID (ПРОГРАММА) и вложенные исходные программы
Назначение
Параграф PROGRAM-ID (ПРОГРАММА) определяет имя, по которому идентифицируется программа, и присваивает этой программе выбранные атрибуты.
З.Е2. Общий формат
Р R О G R А М -1D. п м я - п р о г р а м м ы
те f COMMON 1 ПППГГ1,., 1
IS( INTfiAL- jPROGRAM]-
С
Г(
ОБЩАЯ |
і
НАЧАЛЬНАЯ
/
ПРОГРАМА4А.
имя-программы
и н т а к с и ч е с к и е
правила
Имя-программы должно соответствовать правилам образования слов, определяемых пользователем.
Программе, содержащейся в другой программе, нельзя присваивать имя, которое уже имеет некоторая другая программа, содержащаяся в отдельно компилируемой программе, которая содержит эту программу.
Необязательная фраза COMMON (ОБЩАЯ) может использоваться только тогда, когда программа содержится в другой программе.
Общие правила
Имя-программы идентифицирует исходную программу, объектную программу и все листинги, относящиеся к конкретной программе.
Фраза COMMON (ОБЩАЯ) указывает, что программа является общей. Общая программа содержится в другой программе и может быть вызвана не только из программы, в которой она содержится, но и из других программ (см. п. Г.3.8 настоящей части).
Фраза INITIAL (НАЧАЛЬНАЯ) указывает, что программа является начальной. При вызове начальной программы она и все содержащиеся в ней программы устанавливаются в их начальное состояние (см. п. 2.4 настоящей части).
РАЗДЕЛ ДАННЫХ В МОДУЛЕ МЕЖПРОГРАММНЫХ СВЯЗЕЙ
Секция связи
Секция связи находится в разделе данных исходной программы. Секция связи появляется в вызываемой программе и описывает данные, к которым будет обращаться и вызывающая и вызываемая программа.
Секция связи в программе необходима тогда и только тогда, когда объектная программа должна работать под управлением оператора CALL (ВЫЗВАТЬ) и оператор CALL (ВЫЗВАТЬ) в вызывающей программе содержит фразу USING (ИСПОЛЬЗУЯ). Секция связи используется для описания данных, которые доступны через вызывающую программу, но к которым можно обращаться как в вызывающей, так и в вызываемой программе. Механизм, с помощью которого устанавливается соответствие между данными, описанными в секции связи вызываемой программы, и данными, описанными в вызывающей программе, рассматривается в пп. 5.1 и 5.2 настоящей части. Для имен индексов такое соответствие не устанавливается, и имена индексов в вызываемой и вызывающей программах всегда ссылаются на отдельные индексы.
Секция связи имеет такую же структуру, как и ранее описанная секция рабочей памяти. Сначала записывается заголовок секции,, за ним следуют статьи описания несвязанных данных и (или) статьи описания записей.
Ниже приведен общий формат секции связи.
LINKAGE SECTION. •
статья-описания-уровня-77 статья-описания-записи ]
СЕКЦИЯ СВЯЗИ.
Г статья-описания-уровня-77 1
[ статья-описания-записи J
Если к данному секции связи обращаются в программе, которая не является вызываемой, результат не определен.
Н е с в я з а н н а я память
Данные в секции связи, которые не находятся в иерархическом отношении друг с другом, нет необходимости группировать в записи. Такие данные классифицируются и определяются как несвязанные элементарные данные. Каждое из этих данных определяется отдельной статьей описания данного, которая начинается специальным номером уровня 77.
В каждой статье описания данного необходимы следующие фразы:
номер-уровня-77
имя-данного
фраза PICTURE (ШАБЛОН) или фраза USAGE IS INDEX (ДЛЯ ИНДЕКСА).
Другие статьи описания данных необязательны и могут использоваться в случае необходимости для завершения описания данного.
Записи секции связи
Элементы данных в секции связи, которые состоят в определенных иерархических отношениях друг с другом, должны быть сгруппированы в записи в соответствии с правилами формирования описаний записей. Данные в секции связи, которые не состоят в иерархических отношениях с другими данными, могут быть описаны как записи, представляющие собой одиночные элементарные данные.
Начальные значения
Фраза VALUE (ЗНАЧЕНИЕ) не должна задаваться в секции связи. Исключение составляют статьи имен-условий (уровень 88).
Статья описания файла в модуле межпрограммных связей
Назначение
Внутри модуля межпрограммных связей статья описания файла в секции файлов определяет внутренние или внешние атрибуты определителя файла, соответствующих записей данных в соответствующих данных. Кроме того, статья описания файла устанавливает, является имя файла локальным или глобальным.
Общий формат
Формат 1
FD имя-файла-1
[IS EXTERNAL]
[IS GLOBAL]
{
RECORDS
CHARACTERS
CONTAINS целое-3 CHARACTERS
IS VARYING IN SIZE [ [FROM целое-4] [TO целое-5] CHARACTERS] KtWKU] [DEPENDING ON имя-данного-1]
CONTAINS діелое-6 TO целое-7 CHARACTERS
' jRECORD IS I / STANDARD 1 I RECORDS ARE | | OMITTED ]
' . f , T„ (имя-данного-2
VALUE OF { имя-реализации-1 IS] [ [литерал-1
[RECORD
IS ] ,
RECORDS
ARE | • •• J
L AT
INAGE IS І“м»-Аан"ог<>-4 I LINES Г WITH FOOTING целое-8
имя-данного-5 целое-9
A LINES
T TOP ! имя‘Данного’6|
I целое-10 I
имя-данного-7 целое-11
LINES
AT BOTTOM
[CODE-SET IS имя-алфавита-1].
ОФ имя-файла-1 [ВНЕШНЕЕ] [ГЛОБАЛЬНОЕ]
В БЛОКЕ (ОТ целое-1 ДО] целое-2
целое-3 ЛИТЕР
ПЕРЕМЕННОЕ ЧИСЛО [[ОТ целое-4]
В ЗАПИСИ I [ДО целое-5] ЛИТЕР]
[В ЗАВИСИМОСТИ ОТ имя-данного-1]
ОТ целое-6-ДО целое-7 ЛИТЕР
МЕТКИ
— ] ОПУЩЕНЫ )
'[ ЗНАЧЕНИЕ ] , , ( имя-данного-2 к
J (имя-Реализации‘1 (литерал.і
[ЗАПИСИ ДАННЫХ {имя-данного-3} ... ]
[ВЕРСТКА[™дОДа3ННОГО'4 } СТРОК [ КОНЦОВКА ОТ f имя-данного-5 Г
[ целое-9 J
[ ВЕРХНЕЕ ПОЛЕ [ имя-данного-6 11
[ [целое-10 JJ
[ НИЖНЕЕ ПОЛЕ f имя-данного-7 111
[ I целое-11 IJ I
[АЛФАВИТ имя-алфавита-1].
Формат 2
FD имя-файла-1
[IS EXTERNAL] [IS GLOBAL]
f BLOCK CONTAINS [целое-1 TO] целое-2 [ ~EC0-P-S- 1 —J [CHARACTERS
CONTAINS целое-3 CHARACTERS
I RECORD
S VARYING IN SIZE [[FROM целое-4] [TO целое-5] CHARACTERS] [DEPENDING ON имя-данного-1]
CONTAINS целое-6 TO целое-7 CHARACTERS
Г IRECORD IS И STANDARD 11
1 -LA- — I RECORDS ARE j ( OMITTED )
VALUE
OF
{имя-реализации-1
IS
|
™^ЄрадН|°Г°'2
j)
• • •
{ RECORDS
ARE } <ИМЯ-Аанног°-3}
•
• • J »
ОФ имя-файла-1
[ ЗАПИСЕЙ ]
ЛИТЕР j
ВНЕШНЕЕ] [ГЛОБАЛЬНОЕ]
[В БЛОКЕ [ОТ целое-1 ДО] целое-2
целое-3 ЛИТЕР
ПЕРЕМЕННОЕ ЧИСЛО [ [ОТ целое-4]
[ В ЗАПИСИ(
ДО целое-5] ЛИТЕР]
[В ЗАВИСИМОСТИ ОТ имя-данного-1] '
ОТ целое-6 ДО целое-7 ЛИТЕР
имя-данного-2 литерал-1
имя-реализации-1
Г(ЗНАЧЕНИЕ І
ЗНАЧ
СТАНДАРТНЫ
ОПУЩЕНЫ
МЕТКИ
[ЗАПИСИ ДАННЫХ {имя-данного-3} ... ].
Формат 3
FD имя-файла-1
[IS EXTERNAL]
[IS GLOBAL]
BLOCK CONTAINS [целое-1 TO] целое-2 CHARACTERS
DPrrwn I CONTAINS целое-3 CHARACTERS ]
I CONTAINS целое-6 TO целое-7 CHARACTERS]
Г (RECORD IS 1(STANDARD 11
- I RECORDS ARE / ( OMITTED j
„лгпслсг 1 тс ( ИМЯ-ДаННОГО-2] ,
VALUE OF {имя-реализации-1 IS/ , )}...
r [литерал-1 j
[CODE-SET IS имя-алфавита]
R {имя-отчета-1} ... .
EPORT IS
REPORTS ARE
ОФ имя-файла-1
[ ЗАПИСЕЙ 11
ЛИТЕР /]
ВНЕШНЕЕ] [ГЛОБАЛЬНОЕ]
В БЛОКЕ [ОТ целое-1 ДО] целое-2
В ЗАПИСИ /целое'3 ЛИТЕР
ОТ целое-6 ДО целое-7 ЛИТЕР
имя-данного-2 литерал-1
имя-реализации-1
ЗНАЧЕНИЕ
[ ЗНАЧ
СТАНДАРТНЫ
ОПУЩЕНЫ
МЕТКИ
[АЛФАВИТ имя-алфавита-1]
ОТЧЕТ 1
ОТЧЕТЫ j {имя-отчета-1} . .. .
Синтаксические правила
Формат 1 — это статья описания последовательного файла. Присутствие конкретных фраз в этой статье описания файла зависит от уровня модуля последовательного ввода-вывода, обеспечиваемого реализацией (см. ч. 7, п. 3.2).
Формат 2 — это статья описания относительного файла или индексного файла. Присутствие конкретных фраз в этой статье описания файла зависит от уровня модуля относительного ввода- вывода или модуля индексного ввода-вывода, обеспечиваемого реализацией (см. ч. 8, п. 3.2, ч. 9, п. 3.2) .
Формат 3 — это статья описания файла отчетов. Наличие статьи описания для файла отчетов зависит от того, обеспечивается ли модуль генератора отчетов в данной реализации (ч. 13, п. 3.2).
Об щ и е правила
Если статья описания последовательного файла содержит фразу LINAGE (ВЕРСТКА) и фразу EXTERNAL (ВНЕШНЕЕ), данное LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) является внешним данным. Если статья описания последовательного файла содержит фразу LINAGE (ВЕРСТКА) и фразу GLOBAL (ГЛОБАЛЬНОЕ), специальный регистр LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) является глобальным именем.
Фраза EXTERNAL (ВНЕШНЕЕ) описана в п. 4.5. Фраза GLOBAL (ГЛОБАЛЬНОЕ) описана в п. 4.6. Все остальные фразы в Статье описания файла описаны в соответствующем модуле в этих спецификациях.
Статья описания данного в модуле межпрограммных связен
Назначение
В модуле межпрограммных связей статья описания данного уровня 01 в секции рабочей памяти или в секции файлов устанавливает, какие имена — локальные или глобальные, имеет запись данных и подчиненные ей данные.
В модуле межпрограммных связей статья описания данного уровня 01 в секции рабочей памяти определяет атрибут «внутреннее» или «внешнее» для записи данного и подчиненных ей данных.
Общий формат
лЛГ имя-данного-1 1
|L FILLER J
[REDEFINES имя-данного-2]
[IS EXTERNAL]
[IS GLOBAL]
П PICTURE j PIC
IS
строка-литер
BINARY
COMPUTATIONAL
C USAGE IS
OMP
DISPLAY
INDEX
PACKED-DECIMAL
[SIGN IS]
LEADING
1
TRAILING I
[SEPARATE
CHARACTER] ]
OCCURS целое-2 TIMES
[(ASCENDING
]
I DESCENDING J KEY S {имя-Данног°-3>
[INDEXED BY {имя-индекса-1}... ]
OCCURS целое-1 TO целое-2 TIMES DEPENDING ON имя-данного-4
(ASCENDING ] TC , 1
I DESCENDING | KEY ,S ї""’-""""™-3) • • •] ••
[INDEXED BY {имя-индекса-1}... ]
Г(
SYNCHRONIZED
[ LEFT 1 ( SYNC j
[ RIGHT
"(JUSTIFIED 1 птгт,т/
I JUST (RIGHT
[BLANK WHEN ZERO]
[VALUE IS литерал-1].
01
имя-данного-1
ЗАП
ЗАПОЛНИТЕЛЬ
[ПЕРЕОПРЕДЕЛЯЕТ
имя-данного-2]
[ВНЕШНЕЕ]
[ГЛОБАЛЬНОЕ]
ШАБЛОН
I [ строка-литер
ДЛЯ
ДВОИЧНОЕ
ВЫЧИСЛЕНИЙ
ВЫЧ ВЫДАЧИ ИНДЕКСА
ДЕСЯТИЧНОЕ
[ЗНАК]
ПЕРВЫЙ
ПОСЛЕДНИЙ
[ОТДЕЛЬНО]
"ПОВТОРЯЕТСЯ целое-2 РАЗ
[ВОЗРАСТАНИЮ 1
ПО. { УБЫВАНИЮ ' ) КЛ10ЧА
{имя-данного-3}...
[ИНДЕКСИРУЕТСЯ {имя-индекса-1} ... ]
ПОВТОРЯЕТСЯ ОТ целое-1 ДО целое-2 РАЗ
В ЗАВИСИМОСТИ ОТ имя-данного-4
„„ [ ВОЗРАСТАНИЮ 1 v П„Х1 А
I УБЫВАНИЮ—|КЛЮЧА
{имя-данного-3}...
[ИНДЕКСИРУЕТСЯ {имя-индекса-1} ... ]
В ВЫДЕЛЕНО
ЛЕВО ВПРАВО
[СДВИНУТО ВПРАВО] [ПРОБЕЛ КОГДА НУЛЬ]
Побачили розбіжність з офіційним текстом?