т) затем обработка продолжается, как если бы файл был от­крыт как OUTPUT (ВЫХОДНОЙ).

  1. Интерпретация файла, содержащегося в среде многофай­ловых лент, логически эквивалентна интерпретации последователь­ного файла, содержащегося в среде однофайловых лепт.

  2. Если совокупность файлов размещена па одной катушке ленты и на один из этих файлов имеется ссылка в операторе OPEN (ОТКРЫТЬ), то применяются следующие правила:

  1. одновременно и открытом состоянии может находиться не более одного файла;

  2. если один из файлов, соответствующих имени-файла, явля­ется субъектом оператора OPEN (ОТКРЫТЬ) с вариантом OUT­PUT (ВЫХОДНОЙ), во время выполнения оператора OPEN (ОТ­КРЫТЬ) на соответствующей катушке должны уже существовать все файлы, номер позиций которых меньше, чем иомер позиции дан­ного файла. Кроме того, в это время па катушке не могут сущест­вовать файлы, номер позиции которых больше номера позиции дан­ного файла;

  3. каждый из файлов должен быть последовательным файлом.

(141 Для необязательного файла, являющегося недоступным, успешное выполнение оператора OPEN (ОТКРЫТЬ) с вариантом EXTEND (ДОПОЛНЯЕМЫЙ) создает файл. Это создание проис­ходит так, как если бы в указанном порядке выполнялись следую­щие операторы:

OPEN OUTPUT имя-файла.

CLOSE имя-файла.

ОТКРЫТЬ ВЫХОДНОЙ имя-файла.

ЗАКРЫТЬ и м я - ф а й л а.

. За этими операторами следует выполнение оператора OPEN (ОТКРЫТЬ), указанного в исходной программе.

Успешное выполнение оператора OPEN (ОТКРЫТЬ) с вариан­том OUTPUT (ВЫХОДНОЙ) создает файл. После успешного соз­дания такой файл не содержит записей данных.

  1. После успешного выполнения оператора OPEN (ОТ­КРЫТЬ) указатель текущего тома устанавливается на:

  1. катушку (том), содержащую последнюю логическую запись дополняем ого фа йла;

  1. новую катушку (том) для недоступного выходного или до­полняемого файла.Выполнение оператора OPEN (ОТКРЫТЬ) приводит к обновлению значения состояния ввода-вывода, соответствующего имени-файла (см. ч . 7, п. 1.3.5).

  2. Если в операторе OPEN (ОТКРЫТЬ) указано более одно­го имени-файла, результат выполнения этого оператора OPEN (ОТКРЫТЬ) такой, как если бы отдельный оператор OPEN (ОТ­КРЫТЬ) был написан для каждого имени-файла в том порядке, как они указаны в операторе OPEN (ОТКРЫТЬ).

  3. Минимальный и максимальный размеры записей файла устанавливаются во время создания файла и не могут изменяться в дальнейшем.

  1. Оператор SUPPRESS (ПОДАВИТЬ)

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

Оператор SUPPRESS побуждает систему управления генера-t тором отчетов исключить представление группы отчета.

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

SUPPRESS PRINTING

ПОДАВИТЬ ПЕЧАТЬ

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

  1. Оператор SUPPRESS (ПОДАВИТЬ) может указываться только в процедуре USE BEFORE REPORTING (ИСПОЛЬЗО­ВАТЬ ДО ВЫДАЧИ).

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

  1. ) Оператор SUPPRESS (ПОДАВИТЬ) исключает представ­ление только группы отчета, названной в процедуре USE (ИС­ПОЛЬЗОВАТЬ), в которой появляется оператор SUPPRESS (ПО­ДАВИТЬ).

  2. ) Оператор SUPPRESS (ПОДАВИТЬ) должен быть выпол­нен каждый раз, когда необходимо исключить представление опре­деленной группы отчета.

  1. ) При выполнении оператора SUPPRESS (ПОДАВИТЬ) система управления генератором отчетов информируется о запре­щении следующих функций группы отчета:

  2. представление печатных строк группы отчета;

  3. обработка всех фраз LINE (НОМЕР СТРОКИ) для группы отчета;

  4. обработка фразы NEXT GROUP (СЛЕДУЮЩАЯ ГРУППА) для группы отчета;

  5. корректировка регистра LINE-COUNTER (СЧЕТЧИК- СТРОК).

  1. Оператор TERMINATE (ЗАКОНЧИТЬ)

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

Оператор TERMINATE (ЗАКОНЧИТЬ) побуждает систему уп­равления генератором отчетов завершить обработку указанных от­четов.

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

TERMINATE {имя-отчета-1}...

ЗАКОНЧИТЬ {имя-отчета-1}.. .

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

  1. Имя-отчета-1 должно быть определено статьей описания отчета в секции отчетов раздела данных.

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

. (1) Оператор TERMINATE (ЗАКОНЧИТЬ) приводит к выра­ботке всех групп отчета типа управляемая концовка, начиная от управляемой концовки, соответствующей младшему уровню иерар­хии управления. Затем вырабатывается группа типа концовка от­чета. СУГО обеспечивает доступность предыдущего набора значе­ний управляющих данных фразам SOURCE (ИСТОЧНИК) для управляемой концовки и концовки отчета и процедурам USE (ИС­ПОЛЬЗОВАТЬ), как если бы прерывание управления было рас­познано для управляющего имени-данного самого старшего уровня иерархии управления.

  1. Если для данного отчета между выполнением операторов INITIATE (НАЧАТЬ) и TERMINATE (ЗАКОНЧИТЬ) не был вы­полнен ни один оператор GENERATE (ГЕНЕРИРОВАТЬ), опера­тор TERMINATE (ЗАКОНЧИТЬ) не приводит к обработке ника­ких групп отчета и выполнению соответствующих действий СУГО.

  2. В процессе представления отчета, когда СУГО должна осу­ществить переход на новую страницу для представления группы тела отчета, она выполняет автоматические функции обработки групп отчета типа заголовок страницы и концовка страницы, если они определены (см. п. 3.10 настоящей части).

  3. Оператор TERMINATE (ЗАКОНЧИТЬ) может быть вы­полнен для отчета, если только оператору TERMINATE (ЗАКОН­ЧИТЬ) предшествовал по времени оператор INITIATE (НАЧАТЬ) для этого отчета и никакой оператор TERMINATE (ЗАКОНЧИТЬ) еще не был выполнен для него.

  4. Если в операторе TERMINATE (ЗАКОНЧИТЬ) указано более одного имени-отчета, результат выполнения такого оператора TERMINATE (ЗАКОНЧИТЬ) такой же, как если бы отдельный оператор TERMINATE (ЗАКОНЧИТЬ) был записан для каждого имени-отчета в том же порядке, в каком имена-отчетов указаны в операторе TERMINATE (ЗАКОНЧИТЬ).

  1. Оператор TERMINATE (ЗАКОНЧИТЬ) не закрывает файл, с которым связан отчет; для этого файла должен быть вы­полнен оператор CLOSE (ЗАКРЫТЬ). Каждый отчет, для которо­го начата обработка, должен быть завершен до выполнения опера­тора CLOSE (ЗАКРЫТЬ) для соответствующего файла.Оператор USE AFTER STANDARD EXCEPTION PROCE­DURE (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУ­РЫ ОШИБКИ)

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

Оператор USE AFTER STANDARD EXCEPTION PROCEDU­RE (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ) указывает процедуры для обработки ошибок ввода-вы­вода, являющиеся дополнением к стандартным процедурам, обес­печиваемым системой управления вводом-выводом.

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

USE AFTER STANDARD (PROCEDURE ON

(ERROR J

{имя-файла-1} .. . ’

OUTPUT

EXTEND

ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ

ОШИБКИ

і {имя-файла-1}...

ДЛЯ ВЫХОДНЫХ

ДОПОЛНЯЕМЫХ

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

  1. Оператор USE (ИСПОЛЬЗОВАТЬ), если он имеется, дол­жен непосредственно следовать за заголовком секции в деклара­тивной части раздела процедур и должен быть один в предложе­нии. Остальная часть декларативной секции должна состоять из нуля, одного или нескольких процедурных параграфов, определя­ющих процедуры, которые должны использоваться.

  2. Сам оператор USE (ИСПОЛЬЗОВАТЬ) никогда не выпол­няется; он только определяет условия, вызывающие выполнение указанных после него процедур.

  3. Появление имени-файла-1 в операторе LISE (ИСПОЛЬЗО­ВАТЬ) не может требовать одновременного выполнения более чем одной процедуры USE (ИСПОЛЬЗОВАТЬ).

  4. Слова ERROR и EXCEPTION являются синонимами.

  5. Файлы, на которые имеются явные или неявные ссылки в операторе USE (ИСПОЛЬЗОВАТЬ), могут иметь различную ор­ганизацию или доступ.

Каждый из вариантов OUTPUT (ВЫХОДНЫХ) или EXTEND (ДОПОЛНЯЕМЫХ) может указываться только один раз в декларативной части раздела процедур

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

  1. Декларативные процедуры могут быть включены в любую исходную Кобол-программу, независимо от того, содержит ли эта программа другую программу или сама содержится в другой про­грамме. Декларатива вызывается тогда, когда во время выполне­ния программы выполняются условия, описанные в операторе USE (ИСПОЛЬЗОВАТЬ), предшествующем декларативе. Только одна декларатива внутри отдельно скомпилированной программы, со­держащей оператор, который вызвал уточняющее условие, вызы­вается тогда, когда во время выполнения программы возникает какое-либо из условий, описанных в операторе USE (ИСПОЛЬЗО­ВАТЬ), предшествующем декларативе. Если не существует уточ­няющей декларативы в отдельно скомпилированной программе, то декларатива нс выполняется.

J2) Внутри декларативной процедуры не должно быть обраще­ний к каким-либо процедурам в недекларативной части раздела процедур.

  1. К именам процедур, связанным с оператором USE (ИС­ПОЛЬЗОВАТЬ), могут быть обращения в другой декларативной секции или в недекларативной процедуре только посредством опе­ратора PERFORM (ВЫПОЛНИТЬ).

  2. Когда имя-файла-1 указано явно, то к имени-файла-1 не применяется никакой другой оператор USE (ИСПОЛЬЗОВАТЬ).

  3. Процедуры, связанные с оператором USE (ИСПОЛЬЗО­ВАТЬ), выполняются системой управления вводом-выводом после завершения стандартной программы обработки ошибки ввода-вы­вода при неуспешном выполнении операции ввода-вывода, за ис­ключением того, что вариант AT END (В КОНЦЕ) имеет стар­шинство. При выполнении процедур соблюдаются следующие пра­вила:

  1. если указано имя-файла-1, то выполняется соответствующая процедура при возникновении условия, описанного в операторе USE (ИСПОЛЬЗОВАТЬ);

  2. если указано OUTPUT (ВЫХОДНЫХ) то соответствующая процедура выполняется при возникновении условия, описанного в операторе USE (ИСПОЛЬЗОВАТЬ) для любого файла, открыто­го как OUTPUT (ВЫХОДНОЙ) или же находящегося в процессе открытия в режиме вывода, за исключением файлов, ссылка на которые посредством имени-файла-1 имеется в другом операторе USE (ИСПОЛЬЗОВАТЬ), описывающем такое же условие;

  3. если указано EXTEND (ДОПОЛНЯЕМЫХ), то соответству­ющая процедура выполняется при возникновении условия, описан­ного в операторе USE (ИСПОЛЬЗОВАТЬ), для любого файла, от­крытого как EXTEND (ДОПОЛНЯЕМЫЙ) или находящегося в процессе открытия в режиме дополнения, за исключением файлов, ссылки на которые посредством пмени-файла-1 имеются в другом ■672

операторе USE (ИСПОЛЬЗОВАТЬ), описывающем такое же ус­ловие.

  1. После выполнения процедуры, связанной с оператором USE (ИСПОЛЬЗОВАТЬ), управление передается вызывающей программе в системе управления вводом-выводом.

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

  1. Внутри процедуры, связанной с оператором USE (ИС­ПОЛЬЗОВАТЬ), не должны выполняться никакие операторы, ко­торые могут потребовать выполнение процедуры, связанной с дру­гим оператором USE (ИСПОЛЬЗОВАТЬ), вызванной ранее и еще не вернувшей управление вызвавшей ее программе.

4.9. Оператор USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ)

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

Оператор USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ) указывает операторы раздела процедур, которые вы­полняются непосредственно перед представлением группы отчета, описанной в секции отчетов раздела процедур.

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

USE BEFORE REPORTING идентификатор-1

ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ идентификатор-1

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

  1. Оператор USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ), если он указан, должен непосредственно следо­вать за заголовком секции в декларативной части раздела проце­дур и должен быть единственным в предложении. Остальная часть секции должна состоять из нуля, одного или нескольких парагра­фов, определяющих подлежащие использованию процедуры.

  2. Идентификатор-1 должен относиться к группе отчета. Иден* тификатор-1 не должен появляться более чем в одном операторе USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ).

  3. Операторы GENERATE (ГЕНЕРИРОВАТЬ), INITIATE (НАЧАТЬ) или TERMINATE (ЗАКОНЧИТЬ) не должны появ­ляться в процедуре USE BEFORE REPORTING (ИСПОЛЬЗО­ВАТЬ ДО ВЫДАЧИ).

  1. Оператор PERFORM (ВЫПОЛНИТЬ) в процедуре, относя­щейся к оператору USE BEFORE REPORTING (ИСПОЛЬЗО­ВАТЬ ДО ВЫДАЧИ), не должен иметь в своей области действия операторы GENERATE (ГЕНЕРИРОВАТЬ), INITIATE (НА­ЧАТЬ) или TERMINATE (ЗАКОНЧИТЬ).Процедура, связанная с оператором USE BEFORE REPOR­TING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ), не должна изменять значений ни одного из управляющих данных.

  2. Оператор USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ) сам не выполняется, он только определяет условия, которые вызывают выполнение связанной с ним процедуры.

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

  1. Декларативные процедуры могут быть включены в любую исходную Кобол-программу, независимо от того, содержит ли она другую программу или сама содержится в другой программе. Дек- ларатива вызывается непосредственно перед представлением наз­ванной группы отчета во время выполнения программы. Группа отчета указывается идентификатором-1 в операторе USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ), предшествую­щем процедуре.

  2. Внутри декларативной процедуры не должно быть обра­щений к каким-либо недекларативным процедурам.

  3. К именам-процедур, связанным с оператором USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ), могут быть об­ращения в другой декларативной секции или в недекларативной процедуре только посредством оператора PERFORM (ВЫПОЛ­НИТЬ).

  4. В операторе USE BEFORE REPORTING (ИСПОЛЬЗО­ВАТЬ ДО ВЫДАЧИ) указанные процедуры выполняются систе­мой управления генератором отчетов непосредственно перед пред­ставлением названной группы отчета (см. п. 3.20 настоящей части).

  5. Внутри процедуры, связанной с оператором USE (ИС­ПОЛЬЗОВАТЬ), не должны выполняться никакие операторы, ко­торые могут потребовать выполнение процедуры, связанной с дру­гим оператором USE (ИСПОЛЬЗОВАТЬ), вызванной ранее и еще не вернувшей управление вызвавшей ее программе.