Перейти до вмісту
ГОСТ 22558-89
/ 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- 1J [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} ... ]

В ВЫДЕЛЕНО

ЛЕВО ВПРАВО

[СДВИНУТО ВПРАВО] [ПРОБЕЛ КОГДА НУЛЬ]

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

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

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

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

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

Весь розділ →