[ПОСЛЕДНИЙ ФРАГМЕНТ целое-4]

, 1 [КОНЦОВКА целое-5] ].

4:4.3. С и н т а к с и ч е с к и е правила

Наличие статьи описания отчета зависит от того, обеспечи­вается ли модуль генератора отчетов в данной реализации (ч. 13, и. 3.5).4.4.4. Общие правила

(1) Если статья описания отчета содержит фразу GLOBAL (ГЛОБАЛЬНОЕ), специальные регистры LINE-COUNTER (СЧЕТЧИК-СТРОК) и PAGE-COUNTER (СЧЕТЧИК-СТРА- ■ НИЦ) являются глобальными именами.

(2)| Фраза GLOBAL (ГЛОБАЛЬНОЕ) описана.в п. 4.6.

Все

•остальные фразы в статье описания отчета описаны в модуле ге­нератора отчетов в этих спецификациях.



  1. Фраза EXTERNAL (ВНЕШНЕЕ)

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

Фраза EXTERNAL (ВНЕШНЕЕ) указывает, что данное или ■, определитель файла является внешним. Составляющие данные ' и групповые данные внешней записи данного доступны каждой программе в единице исполнения, которая описывает эту запись.

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

IS EXTERNAL

; ВНЕШНЕЕ

■ 4.5.3. С и н т а к с и ч е с к и е правила

  1. Фраза EXTERNAL (ВНЕШНЕЕ) может быть задана только в статьях описания файлов (см. пп. 4.2, 4.3 настоящей : части) или в статьях описания записей в секции рабочей памяти (см. п. 4.3 настоящей части).

  2. В одной и той же программе имя-данного, указанное в качестве субъекта статьи с номером уровня 01, включающей фразу EXTERNAL (ВНЕШНЕЕ), не должно совпадать с име- нем-данного, указанного для любой другой статьи описания дан­ного, которая включает фразу EXTERNAL (ВНЕШНЕЕ).

  3. Фразу VALUE (ЗНАЧЕНИЕ) нельзя использовать ни в : одной статье описания данного, которая включает статью, со­держащую фразу EXTERNAL (ВНЕШНЕЕ), или подчиняется такой статье. Фраза VALUE (ЗНАЧЕНИЕ) может быть задана для статей имен-условий, связанных с такими статьями описа­ния данных.

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

  1. Данные, находящиеся в записи, которую именует фраза имени-данного, являются внешними и могут быть доступны и обрабатываться любой программой в единице исполнения, кото­рая описывает и, возможно, переопределяет их в соответствии со следующими общими правилами.

  2. Если в единице исполнения две или несколько программ описывают одну и ту же внешнюю запись данных, каждое имя- записи соответствующих статей описания записей должно быть I одним и тем же, а записи должны определять одно и то же ко­личество литер в стандартном формате данных. Однако прог- [ рамма, которая описывает внешнюю запись, может содержать статью описания данного с фразой REDEFINES (ПЕРЕОПРЕ­ДЕЛЯЕТ), переопределяющей полную внешнюю запись, и это полное переопределение не должно появляться в идентичном ви­де в других программах в единице исполнения (см. ч. 6, п. 5.10). .

  3. Использование фразы EXTERNAL (ВНЕШНЕЕ) не подразумевает, что соответствующее имя-файла или имя-данно- го является глобальным именем (п. 4.6 настоящей части).

’(4) Определитель файла, связанный с этой статьей описа­ния, является внешним определителем файла.

4.6. Фраза GLOBAL (ГЛОБАЛЬНОЕ)

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

Фраза GLOBAL (ГЛОБАЛЬНОЕ) указывает, что имя-дан- ного, имя-файла или имя-отчета является глобальным именем. Глобальное имя доступно каждой программе, содержащейся в программе, которая объявляет это имя.

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

IS GLOBAL

ГЛОБАЛЬНОЕ

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

  1. Фраза GLOBAL (ГЛОБАЛЬНОЕ) может быть задана только в статьях описания данных уровня 01 в секции файлов или секции рабочей памяти, статьях описания файлов или ста­тьях описания отчетов.

  2. В одном и том же разделе данных статьи описания дан­ных для любых двух данных, для которых задано одинаковое имя, не должны включать фразу GLOBAL (ГЛОБАЛЬНОЕ).

  3. Если для нескольких файлов задана фраза SAME RE­CORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ), статьи описания записей или статьи описания файлов для этих файлов не долж­ны включать фразу GLOBAL (ГЛОБАЛЬНОЕ).

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

  1. Имя-данного, имя-файла или имя-отчета, описанное фра­зой GLOBAL (ГЛОБАЛЬНОЕ), является глобальным именем. Все имена данных, подчиненные глобальному имени, являются глобальными именами. Все имена условий, связанные с гло­бальным именем, являются глобальными именами.

  2. Оператор в программе, которая прямо или косвенно со­держится в программе, описывающей глобальное имя, может обращаться к этому имени без его повторного описания (см. п. 1.3.8 настоящей части).

Если фраза GLOBAL .(ГЛОБАЛЬНОЕ) используется в статье описания данного, которая содержит фразу REDEFINES (ПЕРЕОПРЕДЕЛЯЕТ) или RENAMES (ПЕРЕИМЕНОВЫВА-ЕТ), атрибутом «глобальное» обладает только субъект фразы REDEFINES (ПЕРЕОПРЕДЕЛЯЕТ) или RENAMES (ПЕРЕ­ИМЕНОВЫВАЕТ).

5. РАЗДЕЛ ПРОЦЕДУР В МОДУЛЕ МЕЖПРОГРАММНЫХ СВЯЗЕЙ

  1. Заголовок раздела процедур

Раздел процедур идентифицируется и должен начинаться еле- дующим заголовком:

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 настоящей части);

  1. если ссылка на соответствующее данное в операторе CALL (ВЫЗВАТЬ) объявляет передачу параметра ссылкой, объектная

программа выполняется так, как если бы данное в вызываемой программе занимало такую же область в памяти, как и данное в вызывающей программе. ■

Описание данного в вызываемой программе должно опреде­лять такое же количество позиций литер, какое указано в описании соответствующего данного в вызывающей программе;

  1. во всех случаях в вызываемой программе ссылки на имя- данного-1 разрешаются в соответствии с описанием данного в сек­ции связи вызываемой программы;

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

  1. они являются операндами фразы USING (ИСПОЛЬЗУЯ)’ заголовка раздела процедур;

  2. они подчиняются операндам фразы USING (ИСПОЛЬЗУЯ) заголовка раздела процедур; >

  3. они определяются фразой REDEFINES (ПЕРЕОПРЕДЕ­ЛЯЕТ) или RENAMES (ПЕРЕИМЕНОВЫВАЕТ), объект которой удовлетворяет приведенным выше условиям;

  4. они являются элементами, подчиненными любому элементу, который удовлетворяет условию в правиле 4в;

  5. они являются именами-условий или именами-индексов, свя­занными с данными, которые удовлетворяют любому из четырех перечисленных выше условий.

' в-1 во фразе USING (ИСПОЛЬЗУЯ) заголовка разде­ла процедур и во фразе USING (ИСПОЛЬЗУЯ) оператора CALL (ВЫЗВАТЬ) должно допускаться не менее пяти имен данных.

Л,1 < ВЫЗВАТЬ)

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

Оператор CALL (ВЫЗВАТЬ) вызывает передачу управления от одной объектной программы к другой внутри единицы исполнения.

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

Формат 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} ...


[ON EXCEPTION повелительный-оператор-1]

[NOT ON EXCEPTION повелительный-оператор-2]

[END-CALL]


ВЫЗВАТЬ


идентификатор-1 литерал-1


ИСПОЛЬЗУЯ


[ССЫЛКУ НА] [{идентификатор-2}...

ЗНАЧЕНИЕ {идентификатор-2} ...

[ПРИ ОШИБКЕ повелительный-оператор-1 j [БЕЗ ОШИБКИ повелительный-оператор-2]

[КОНЕЦ-ВЫЗВАТЬ]

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

к(1) Литерал-1 должен быть нечисловым литералом.































  1. Идентификатор-1 должен быть определен как буквенно­цифровое данное такое, что его значение может быть именем- : программы.

  2. Каждый операнд во фразе USING (ИСПОЛЬЗУЯ) должен быть предварительно определен как данное в секции файлов, сек­ции рабочей памяти, секции коммуникаций или секции связи и дол­жен быть данным уровня 01, уровня 77 или элементарным данным.

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

  1. Литерал-1 [или содержимое данного,представленного

идентификатором-1, является именем вызываемой программы. Программа, в которой появляется оператор CALL (ВЫЗВАТЬ), является вызывающей программой. Если вызываемая програм­ма — это программа Кобола, то литерал-1 или содержимое

д

данного, представленного идентификатором-1,

олжно быть име­нем программы, содержащимся в параграфе PROGRAM-ID (ПРО­ГРАММА) вызываемой программы. Если вызываемая програм­ма — не программа Кобола, правила формирования имени прог­раммы определяются реализацией.
  1. Если во время выполнения оператора CALL (ВЫЗВАТЬ) программа, указанная в операторе CALL (ВЫЗВАТЬ), становится доступной для выполнения, управление передается вызываемой программе. После возврата управления от вызываемой программы фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ) или ONI EXCEPTION (ПРИ ОШИБКЕ), если она задана, игнорируется,! и I управление передается на конец оператора CALL (ВЫЗ­ВАТЬ) I ( или> если задана фраза NOT ON ЁХСЕРТЮИ (БЕЗ ОШИБКИ), повелительному оператору-2. При передаче управ­ления повелительному-оператору-2 выполнение продолжается в соответствии с правилами для каждого оператора, указанного в повелительном-операторе-2. Если выполняется оператор ветв­ления процедур или условный оператор, который вызывает яв­ную передачу управления, управление передается в соответствии с правилами для этого оператора; в противном случае управле­ние передается на конец оператора CALL (ВЫЗВАТЬ) после того, как будет выполнен повелительный-оператор-2.

  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 (ВЫЗВАТЬ) определяются реализацией.

  1. Две или несколько программ в единице исполнения мо­гут иметь одно и то же имя-программы, и ссылка в операторе CALL (ВЫЗВАТЬ) на такое имя-программы разрешается по правилам для области действия для имен программ (см. п. 1.3.8.1 настоящей части).

Например, когда только две программы в единице исполне­ния имеют одинаковое имя, которое указано в операторе CALL (ВЫЗВАТЬ):

  1. одно из этих двух программ должна прямо или косвенно содержаться в отдельно компилируемой программе, в которой находится этот оператор CALL (ВЫЗВАТЬ), или в отдельно компилируемой программе, которая сама прямо или косвенно содержит программу, в которой находится этот оператор CALL (ВЫЗВАТЬ), и

б)-вторая из этих двух программ должна быть другой отдель­но компилируемой программой.