[ПОСЛЕДНИЙ ФРАГМЕНТ целое-4]
, 1 [КОНЦОВКА целое-5] ].
4:4.3. С и н т а к с и ч е с к и е правила
Наличие статьи описания отчета зависит от того, обеспечивается ли модуль генератора отчетов в данной реализации (ч. 13, и. 3.5).4.4.4. Общие правила
(1) Если статья описания отчета содержит фразу GLOBAL (ГЛОБАЛЬНОЕ), специальные регистры LINE-COUNTER (СЧЕТЧИК-СТРОК) и PAGE-COUNTER (СЧЕТЧИК-СТРА- ■ НИЦ) являются глобальными именами. |
|
(2)| Фраза GLOBAL (ГЛОБАЛЬНОЕ) описана.в п. 4.6. |
Все |
•остальные фразы в статье описания отчета описаны в модуле генератора отчетов в этих спецификациях. |
Фраза EXTERNAL (ВНЕШНЕЕ)
Назначение
Фраза EXTERNAL (ВНЕШНЕЕ) указывает, что данное или ■, определитель файла является внешним. Составляющие данные ' и групповые данные внешней записи данного доступны каждой программе в единице исполнения, которая описывает эту запись.
Общий формат
IS EXTERNAL
; ВНЕШНЕЕ
■ 4.5.3. С и н т а к с и ч е с к и е правила
Фраза EXTERNAL (ВНЕШНЕЕ) может быть задана только в статьях описания файлов (см. пп. 4.2, 4.3 настоящей : части) или в статьях описания записей в секции рабочей памяти (см. п. 4.3 настоящей части).
В одной и той же программе имя-данного, указанное в качестве субъекта статьи с номером уровня 01, включающей фразу EXTERNAL (ВНЕШНЕЕ), не должно совпадать с име- нем-данного, указанного для любой другой статьи описания данного, которая включает фразу EXTERNAL (ВНЕШНЕЕ).
Фразу VALUE (ЗНАЧЕНИЕ) нельзя использовать ни в : одной статье описания данного, которая включает статью, содержащую фразу EXTERNAL (ВНЕШНЕЕ), или подчиняется такой статье. Фраза VALUE (ЗНАЧЕНИЕ) может быть задана для статей имен-условий, связанных с такими статьями описания данных.
4.5.4. Общие правила
Данные, находящиеся в записи, которую именует фраза имени-данного, являются внешними и могут быть доступны и обрабатываться любой программой в единице исполнения, которая описывает и, возможно, переопределяет их в соответствии со следующими общими правилами.
Если в единице исполнения две или несколько программ описывают одну и ту же внешнюю запись данных, каждое имя- записи соответствующих статей описания записей должно быть I одним и тем же, а записи должны определять одно и то же количество литер в стандартном формате данных. Однако прог- [ рамма, которая описывает внешнюю запись, может содержать статью описания данного с фразой REDEFINES (ПЕРЕОПРЕДЕЛЯЕТ), переопределяющей полную внешнюю запись, и это полное переопределение не должно появляться в идентичном виде в других программах в единице исполнения (см. ч. 6, п. 5.10). .
Использование фразы EXTERNAL (ВНЕШНЕЕ) не подразумевает, что соответствующее имя-файла или имя-данно- го является глобальным именем (п. 4.6 настоящей части).
’(4) Определитель файла, связанный с этой статьей описания, является внешним определителем файла.
4.6. Фраза GLOBAL (ГЛОБАЛЬНОЕ)
Назначение
Фраза GLOBAL (ГЛОБАЛЬНОЕ) указывает, что имя-дан- ного, имя-файла или имя-отчета является глобальным именем. Глобальное имя доступно каждой программе, содержащейся в программе, которая объявляет это имя.
Общий -формат
IS GLOBAL
ГЛОБАЛЬНОЕ
С и н т а к с и ч е с к и е правила
Фраза GLOBAL (ГЛОБАЛЬНОЕ) может быть задана только в статьях описания данных уровня 01 в секции файлов или секции рабочей памяти, статьях описания файлов или статьях описания отчетов.
В одном и том же разделе данных статьи описания данных для любых двух данных, для которых задано одинаковое имя, не должны включать фразу GLOBAL (ГЛОБАЛЬНОЕ).
Если для нескольких файлов задана фраза SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ), статьи описания записей или статьи описания файлов для этих файлов не должны включать фразу GLOBAL (ГЛОБАЛЬНОЕ).
О б щ и е правила
Имя-данного, имя-файла или имя-отчета, описанное фразой GLOBAL (ГЛОБАЛЬНОЕ), является глобальным именем. Все имена данных, подчиненные глобальному имени, являются глобальными именами. Все имена условий, связанные с глобальным именем, являются глобальными именами.
Оператор в программе, которая прямо или косвенно содержится в программе, описывающей глобальное имя, может обращаться к этому имени без его повторного описания (см. п. 1.3.8 настоящей части).
Если фраза GLOBAL .(ГЛОБАЛЬНОЕ) используется в статье описания данного, которая содержит фразу REDEFINES (ПЕРЕОПРЕДЕЛЯЕТ) или RENAMES (ПЕРЕИМЕНОВЫВА-ЕТ), атрибутом «глобальное» обладает только субъект фразы REDEFINES (ПЕРЕОПРЕДЕЛЯЕТ) или RENAMES (ПЕРЕИМЕНОВЫВАЕТ).
5. РАЗДЕЛ ПРОЦЕДУР В МОДУЛЕ МЕЖПРОГРАММНЫХ СВЯЗЕЙ
Заголовок раздела процедур
Раздел процедур идентифицируется и должен начинаться еле- дующим заголовком:
PROCEDURE DIVISION [USING {имя-данного-1} ... ].
РАЗДЕЛ ПРОЦЕДУР [ИСПОЛЬЗУЯ {имя-данного-1}... ].
Фраза USING (ИСПОЛЬЗУЯ) требуется только тогда, когда объектная программа будет вызываться по оператору CALL (ВЫЗВАТЬ), который содержит фразу USING (ИСПОЛЬЗУЯ).
Фраза USING (ИСПОЛЬЗУЯ) в заголовке .раздела процедур идентифицирует имена, используемые программой для всех параметров, которые передаются ей из вызывающей программы. Параметры, передаваемые вызываемой программе, идентифицируются во фразе USING (ИСПОЛЬЗУЯ) оператора CALL (ВЫЗВАТЬ) в вызывающей программе. Соответствие между этими двумя списками имен устанавливается по позиционному принципу.
Имя-данного-1 должно быть определено как статья уровня 01 или статья уровня 77 в секции связи. Конкретное слово, определенное пользователем, может появляться в качестве имени-данного-1 только один раз. Статья описания данного для -имени-данного-1 не должна содержать фразу REDEFINES (ПЕРЕОПРЕДЕЛЯЕТ). Однако имя-данного-1 может быть объектом фразы REDEFINES (ПЕРЕОПРЕДЕЛЯЕТ) в других местах в секции связи.
Применяются следующие дополнительные правила:
' (1) если ссылка на соответствующее данное в операторе
CALL (ВЫЗВАТЬ) объявляет передачу параметра по значению, значение данного пересылается во время выполнения оператора CALL (ВЫЗВАТЬ) и помещается в определяемый системой элемент памяти, который имеет атрибуты, объявленные в секции связи для имени-данного-1. Описание данных для каждого параметра во фразе BY CONTENT (ЗНАЧЕНИЕ) опера-
; тора CALL (ВЫЗВАТЬ) должно быть таким же, как описание ' данного для соответствующего параметра во фразе USING (ИС- ' ПОЛЬЗУЯ) заголовка раздела процедур, т. е. не должно требоваться какого-либо преобразования, расширения или усечения (см. п. 5.2 настоящей части);
если ссылка на соответствующее данное в операторе CALL (ВЫЗВАТЬ) объявляет передачу параметра ссылкой, объектная
программа выполняется так, как если бы данное в вызываемой программе занимало такую же область в памяти, как и данное в вызывающей программе. ■
Описание данного в вызываемой программе должно определять такое же количество позиций литер, какое указано в описании соответствующего данного в вызывающей программе;
во всех случаях в вызываемой программе ссылки на имя- данного-1 разрешаются в соответствии с описанием данного в секции связи вызываемой программы;
к данным, определенным в секции связи вызываемой программы, можно обращаться внутри раздела процедур этой программы тогда и только тогда, когда они удовлетворяют одному из следующих условий:
они являются операндами фразы USING (ИСПОЛЬЗУЯ)’ заголовка раздела процедур;
они подчиняются операндам фразы USING (ИСПОЛЬЗУЯ) заголовка раздела процедур; >
они определяются фразой REDEFINES (ПЕРЕОПРЕДЕЛЯЕТ) или RENAMES (ПЕРЕИМЕНОВЫВАЕТ), объект которой удовлетворяет приведенным выше условиям;
они являются элементами, подчиненными любому элементу, который удовлетворяет условию в правиле 4в;
они являются именами-условий или именами-индексов, связанными с данными, которые удовлетворяют любому из четырех перечисленных выше условий.
' в-1 во фразе USING (ИСПОЛЬЗУЯ) заголовка раздела процедур и во фразе USING (ИСПОЛЬЗУЯ) оператора CALL (ВЫЗВАТЬ) должно допускаться не менее пяти имен данных.
Л,1 < ВЫЗВАТЬ)
Назначение
Оператор CALL (ВЫЗВАТЬ) вызывает передачу управления от одной объектной программы к другой внутри единицы исполнения.
Общий формат
Формат 1
CALL , USING
литерал-1
[BY REFERENCE] I {идентификатор-2} ...
BY CONTENT {идентификатор-2} ...
[ON OVERFLOW повелительный-оператор-l] [END-CALL}
ВЫЗВАТЬ
идентификатор-1 литерал-1
ИСПОЛЬЗУЯ
[ССЫЛКУ НА], {идентификатор-2}...
ЗНАЧЕНИЕ {идентификатор-2} .,.
[ПРИ ПЕРЕПОЛНЕНИИ повелительный-оператор-1 ]
[КОНЕЦ-ВЫЗВАТЬ]
Формат 2
CALL
идентификатор-11
литерал-1
USING
[BY REFERENCE] {идентификатор-2}...
BY CONTENT {идентификатор-2} ...
[NOT ON EXCEPTION повелительный-оператор-2]
[END-CALL]
ВЫЗВАТЬ
идентификатор-1 литерал-1
ИСПОЛЬЗУЯ
ЗНАЧЕНИЕ {идентификатор-2} ...
[ПРИ ОШИБКЕ повелительный-оператор-1 j [БЕЗ ОШИБКИ повелительный-оператор-2]
[КОНЕЦ-ВЫЗВАТЬ]
5.2.3. С и н т а к с и ч е с к и е правила
к(1) Литерал-1 должен быть нечисловым литералом.
Идентификатор-1 должен быть определен как буквенноцифровое данное такое, что его значение может быть именем- : программы.
Каждый операнд во фразе USING (ИСПОЛЬЗУЯ) должен быть предварительно определен как данное в секции файлов, секции рабочей памяти, секции коммуникаций или секции связи и должен быть данным уровня 01, уровня 77 или элементарным данным.
5.2.4. Общие правила
Литерал-1 [или содержимое данного,представленного
идентификатором-1, является именем вызываемой программы. Программа, в которой появляется оператор CALL (ВЫЗВАТЬ), является вызывающей программой. Если вызываемая программа — это программа Кобола, то литерал-1 или содержимое
д
данного, представленного идентификатором-1,
олжно быть именем программы, содержащимся в параграфе PROGRAM-ID (ПРОГРАММА) вызываемой программы. Если вызываемая программа — не программа Кобола, правила формирования имени программы определяются реализацией.Если во время выполнения оператора CALL (ВЫЗВАТЬ) программа, указанная в операторе CALL (ВЫЗВАТЬ), становится доступной для выполнения, управление передается вызываемой программе. После возврата управления от вызываемой программы фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ) или ONI EXCEPTION (ПРИ ОШИБКЕ), если она задана, игнорируется,! и I управление передается на конец оператора CALL (ВЫЗВАТЬ) I ( или> если задана фраза NOT ON ЁХСЕРТЮИ (БЕЗ ОШИБКИ), повелительному оператору-2. При передаче управления повелительному-оператору-2 выполнение продолжается в соответствии с правилами для каждого оператора, указанного в повелительном-операторе-2. Если выполняется оператор ветвления процедур или условный оператор, который вызывает явную передачу управления, управление передается в соответствии с правилами для этого оператора; в противном случае управление передается на конец оператора CALL (ВЫЗВАТЬ) после того, как будет выполнен повелительный-оператор-2.
Если во время выполнения оператора CALL (ВЫЗВАТЬ) устанавливается, что программа, заданная в операторе CALL (ВЫЗВАТЬ), не может стать доступной для выполнения в это время, будет выполнено одно из указанных действий. Ресурсы времени выполнения, которые должны проверяться с целью установления 692
доступности вызываемой программы для выполнения, определяются реализацией.
а) Если в операторе CALL (ВЫЗВАТЬ) задана фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ) или ON EXCEPTION (ПРИ ОШИБКЕ), управление передается повелительному-опе- ратору-1. Затем выполнение продолжается в соответствии с правилами для каждого оператора, указанного в повелительном- операторе-1. Если выполняется оператор ветвления процедур или условный оператор, который вызывает явную передачу управления, управление передается в соответствии с правилами для этого оператора; в противном случае управление передается на конец оператора CALL (ВЫЗВАТЬ) после выполнения по- велительного-оператора-1, а фраза NOT ON EXCEPTION (БЕЗ ОШИБКИ), если она задана, игнорируется.
6)J Если фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ) или ON EXCEPTION (ПРИ ОШИБКЕ) не задана в операторе CALL (ВЫЗВАТЬ), фраза NOT ON EXCEPTION (БЕЗ ОШИБКИ), если она задана, игнорируется. | Все остальные действия оператора CALL (ВЫЗВАТЬ) определяются реализацией.
Две или несколько программ в единице исполнения могут иметь одно и то же имя-программы, и ссылка в операторе CALL (ВЫЗВАТЬ) на такое имя-программы разрешается по правилам для области действия для имен программ (см. п. 1.3.8.1 настоящей части).
Например, когда только две программы в единице исполнения имеют одинаковое имя, которое указано в операторе CALL (ВЫЗВАТЬ):
одно из этих двух программ должна прямо или косвенно содержаться в отдельно компилируемой программе, в которой находится этот оператор CALL (ВЫЗВАТЬ), или в отдельно компилируемой программе, которая сама прямо или косвенно содержит программу, в которой находится этот оператор CALL (ВЫЗВАТЬ), и
б)-вторая из этих двух программ должна быть другой отдельно компилируемой программой.