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

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

     5.3. Оператор CANCEL (ОСВОБОДИТЬ)


5.3.1. Назначение Оператор CANCEL (ОСВОБОДИТЬ) обеспечивает, что при следующем вызове названной программы она будет находиться в начальном состоянии.

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


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

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

(2) Идентификатор-1 должен относиться к буквенно-цифровому данному.

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

(1) Литерал-1 или содержимое данного, представленного идентификатором-1, идентифицирует программу, которая должна быть освобождена.

(2) В результате выполнения явного или неявного оператора CANCEL (ОСВОБОДИТЬ) прекращается всякая логическая связь программы, которая указывается в нем, с единицей исполнения, в которой появляется оператор CANCEL (ОСВОБОДИТЬ). Если программа, названная в успешно выполненном в единице исполнения явном или неявном операторе CANCEL (ОСВОБОДИТЬ), позднее вызывается в этой же единице исполнения, эта программа находится в начальном состоянии (см. пп.1.3.8, 2.4 и 5.2 настоящей части).

(3) Программа, названная в операторе CANCEL (ОСВОБОДИТЬ) в другой программе, должна быть вызвана этой другой программой (см. пп.1.3.8 и 5.2 настоящей части).

(4) При выполнении явного или неявного оператора CANCEL (ОСВОБОДИТЬ) все программы, содержащиеся в программе, которая названа в операторе CANCEL (ОСВОБОДИТЬ), тоже освобождаются. Результат такой же, как если бы правильный оператор CANCEL (ОСВОБОДИТЬ) выполнялся для каждой содержащейся программы в последовательности, обратной той, в которой программы появляются в отдельно компилируемой программе.

(5) Программа, названная в операторе CANCEL (ОСВОБОДИТЬ), не должна прямо или косвенно обращаться к программе, которая была вызвана, но еще не выполнила оператор EXIT PROGRAM (ВЫЙТИ ИЗ ПРОГРАММЫ).

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

(7) Вызываемая программа освобождается посредством указания ее в качестве операнда оператора CANCEL (ОСВОБОДИТЬ), в результате завершения единицы исполнения, в состав которой входит данная программа, или в результате выполнения оператора EXIT PROGRAM (ВЫЙТИ ИЗ ПРОГРАММЫ) в вызываемой программе, имеющей атрибут "начальная".

 (8) Никаких действий не выполняется при выполнении явного или неявного оператора CANCEL (ОСВОБОДИТЬ), называющего программу, которая не была вызвана в этой единице исполнения или была

вызвана, но в настоящее время освобождена. Управление передается следующему выполнимому оператору после явного оператора CANCEL (ОСВОБОДИТЬ).

(9) Содержимое данных во внешних записях данных, описанных в программе, не изменяется при освобождении этой программы.

(10) Во время выполнения явного или неявного оператора CANCEL (ОСВОБОДИТЬ) выполняется неявный оператор CLOSE (ЗАКРЫТЬ) без всяких необязательных фраз для каждого файла в открытом состоянии, который связан с внутренним определителем файла в программе, названной в явном операторе CANCEL (ОСВОБОДИТЬ). Все процедуры USE (ИСПОЛЬЗОВАТЬ), относящиеся к любому из этих файлов, не выполняются.