Статус документа
Статус документа

ГОСТ 22558-89 (СТ СЭВ 6184-88, ИСО 1989-85) Язык программирования Кобол. Части 8-17

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


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

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

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

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

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

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

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

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

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

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