т) затем обработка продолжается, как если бы файл был открыт как OUTPUT (ВЫХОДНОЙ).
Интерпретация файла, содержащегося в среде многофайловых лент, логически эквивалентна интерпретации последовательного файла, содержащегося в среде однофайловых лепт.
Если совокупность файлов размещена па одной катушке ленты и на один из этих файлов имеется ссылка в операторе OPEN (ОТКРЫТЬ), то применяются следующие правила:
одновременно и открытом состоянии может находиться не более одного файла;
если один из файлов, соответствующих имени-файла, является субъектом оператора OPEN (ОТКРЫТЬ) с вариантом OUTPUT (ВЫХОДНОЙ), во время выполнения оператора OPEN (ОТКРЫТЬ) на соответствующей катушке должны уже существовать все файлы, номер позиций которых меньше, чем иомер позиции данного файла. Кроме того, в это время па катушке не могут существовать файлы, номер позиции которых больше номера позиции данного файла;
каждый из файлов должен быть последовательным файлом.
(141 Для необязательного файла, являющегося недоступным, успешное выполнение оператора OPEN (ОТКРЫТЬ) с вариантом EXTEND (ДОПОЛНЯЕМЫЙ) создает файл. Это создание происходит так, как если бы в указанном порядке выполнялись следующие операторы:
OPEN OUTPUT имя-файла.
CLOSE имя-файла.
ОТКРЫТЬ ВЫХОДНОЙ имя-файла.
ЗАКРЫТЬ и м я - ф а й л а.
. За этими операторами следует выполнение оператора OPEN (ОТКРЫТЬ), указанного в исходной программе.
Успешное выполнение оператора OPEN (ОТКРЫТЬ) с вариантом OUTPUT (ВЫХОДНОЙ) создает файл. После успешного создания такой файл не содержит записей данных.
После успешного выполнения оператора OPEN (ОТКРЫТЬ) указатель текущего тома устанавливается на:
катушку (том), содержащую последнюю логическую запись дополняем ого фа йла;
новую катушку (том) для недоступного выходного или дополняемого файла.Выполнение оператора OPEN (ОТКРЫТЬ) приводит к обновлению значения состояния ввода-вывода, соответствующего имени-файла (см. ч . 7, п. 1.3.5).
Если в операторе OPEN (ОТКРЫТЬ) указано более одного имени-файла, результат выполнения этого оператора OPEN (ОТКРЫТЬ) такой, как если бы отдельный оператор OPEN (ОТКРЫТЬ) был написан для каждого имени-файла в том порядке, как они указаны в операторе OPEN (ОТКРЫТЬ).
Минимальный и максимальный размеры записей файла устанавливаются во время создания файла и не могут изменяться в дальнейшем.
Оператор SUPPRESS (ПОДАВИТЬ)
Н а з и а ч е и и е
Оператор SUPPRESS побуждает систему управления генера-t тором отчетов исключить представление группы отчета.
Общий формат
SUPPRESS PRINTING
ПОДАВИТЬ ПЕЧАТЬ
Синтаксические правила
Оператор SUPPRESS (ПОДАВИТЬ) может указываться только в процедуре USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ).
Общие правила
) Оператор SUPPRESS (ПОДАВИТЬ) исключает представление только группы отчета, названной в процедуре USE (ИСПОЛЬЗОВАТЬ), в которой появляется оператор SUPPRESS (ПОДАВИТЬ).
) Оператор SUPPRESS (ПОДАВИТЬ) должен быть выполнен каждый раз, когда необходимо исключить представление определенной группы отчета.
) При выполнении оператора SUPPRESS (ПОДАВИТЬ) система управления генератором отчетов информируется о запрещении следующих функций группы отчета:
представление печатных строк группы отчета;
обработка всех фраз LINE (НОМЕР СТРОКИ) для группы отчета;
обработка фразы NEXT GROUP (СЛЕДУЮЩАЯ ГРУППА) для группы отчета;
корректировка регистра LINE-COUNTER (СЧЕТЧИК- СТРОК).
Оператор TERMINATE (ЗАКОНЧИТЬ)
Назначение
Оператор TERMINATE (ЗАКОНЧИТЬ) побуждает систему управления генератором отчетов завершить обработку указанных отчетов.
Общий формат
TERMINATE {имя-отчета-1}...
ЗАКОНЧИТЬ {имя-отчета-1}.. .
Синтаксические правила
Имя-отчета-1 должно быть определено статьей описания отчета в секции отчетов раздела данных.
Общие правила
. (1) Оператор TERMINATE (ЗАКОНЧИТЬ) приводит к выработке всех групп отчета типа управляемая концовка, начиная от управляемой концовки, соответствующей младшему уровню иерархии управления. Затем вырабатывается группа типа концовка отчета. СУГО обеспечивает доступность предыдущего набора значений управляющих данных фразам SOURCE (ИСТОЧНИК) для управляемой концовки и концовки отчета и процедурам USE (ИСПОЛЬЗОВАТЬ), как если бы прерывание управления было распознано для управляющего имени-данного самого старшего уровня иерархии управления.
Если для данного отчета между выполнением операторов INITIATE (НАЧАТЬ) и TERMINATE (ЗАКОНЧИТЬ) не был выполнен ни один оператор GENERATE (ГЕНЕРИРОВАТЬ), оператор TERMINATE (ЗАКОНЧИТЬ) не приводит к обработке никаких групп отчета и выполнению соответствующих действий СУГО.
В процессе представления отчета, когда СУГО должна осуществить переход на новую страницу для представления группы тела отчета, она выполняет автоматические функции обработки групп отчета типа заголовок страницы и концовка страницы, если они определены (см. п. 3.10 настоящей части).
Оператор TERMINATE (ЗАКОНЧИТЬ) может быть выполнен для отчета, если только оператору TERMINATE (ЗАКОНЧИТЬ) предшествовал по времени оператор INITIATE (НАЧАТЬ) для этого отчета и никакой оператор TERMINATE (ЗАКОНЧИТЬ) еще не был выполнен для него.
Если в операторе TERMINATE (ЗАКОНЧИТЬ) указано более одного имени-отчета, результат выполнения такого оператора TERMINATE (ЗАКОНЧИТЬ) такой же, как если бы отдельный оператор TERMINATE (ЗАКОНЧИТЬ) был записан для каждого имени-отчета в том же порядке, в каком имена-отчетов указаны в операторе TERMINATE (ЗАКОНЧИТЬ).
Оператор TERMINATE (ЗАКОНЧИТЬ) не закрывает файл, с которым связан отчет; для этого файла должен быть выполнен оператор CLOSE (ЗАКРЫТЬ). Каждый отчет, для которого начата обработка, должен быть завершен до выполнения оператора CLOSE (ЗАКРЫТЬ) для соответствующего файла.Оператор USE AFTER STANDARD EXCEPTION PROCEDURE (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ)
Назначение
Оператор USE AFTER STANDARD EXCEPTION PROCEDURE (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ) указывает процедуры для обработки ошибок ввода-вывода, являющиеся дополнением к стандартным процедурам, обеспечиваемым системой управления вводом-выводом.
Общий формат
USE AFTER STANDARD (PROCEDURE ON
(ERROR J
{имя-файла-1} .. . ’
OUTPUT
EXTEND
ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ
ОШИБКИ
і {имя-файла-1}...
ДЛЯ ВЫХОДНЫХ
ДОПОЛНЯЕМЫХ
Синтаксические правила
Оператор USE (ИСПОЛЬЗОВАТЬ), если он имеется, должен непосредственно следовать за заголовком секции в декларативной части раздела процедур и должен быть один в предложении. Остальная часть декларативной секции должна состоять из нуля, одного или нескольких процедурных параграфов, определяющих процедуры, которые должны использоваться.
Сам оператор USE (ИСПОЛЬЗОВАТЬ) никогда не выполняется; он только определяет условия, вызывающие выполнение указанных после него процедур.
Появление имени-файла-1 в операторе LISE (ИСПОЛЬЗОВАТЬ) не может требовать одновременного выполнения более чем одной процедуры USE (ИСПОЛЬЗОВАТЬ).
Слова ERROR и EXCEPTION являются синонимами.
Файлы, на которые имеются явные или неявные ссылки в операторе USE (ИСПОЛЬЗОВАТЬ), могут иметь различную организацию или доступ.
Каждый из вариантов OUTPUT (ВЫХОДНЫХ) или EXTEND (ДОПОЛНЯЕМЫХ) может указываться только один раз в декларативной части раздела процедур
.Общие правила
Декларативные процедуры могут быть включены в любую исходную Кобол-программу, независимо от того, содержит ли эта программа другую программу или сама содержится в другой программе. Декларатива вызывается тогда, когда во время выполнения программы выполняются условия, описанные в операторе USE (ИСПОЛЬЗОВАТЬ), предшествующем декларативе. Только одна декларатива внутри отдельно скомпилированной программы, содержащей оператор, который вызвал уточняющее условие, вызывается тогда, когда во время выполнения программы возникает какое-либо из условий, описанных в операторе USE (ИСПОЛЬЗОВАТЬ), предшествующем декларативе. Если не существует уточняющей декларативы в отдельно скомпилированной программе, то декларатива нс выполняется.
J2) Внутри декларативной процедуры не должно быть обращений к каким-либо процедурам в недекларативной части раздела процедур.
К именам процедур, связанным с оператором USE (ИСПОЛЬЗОВАТЬ), могут быть обращения в другой декларативной секции или в недекларативной процедуре только посредством оператора PERFORM (ВЫПОЛНИТЬ).
Когда имя-файла-1 указано явно, то к имени-файла-1 не применяется никакой другой оператор USE (ИСПОЛЬЗОВАТЬ).
Процедуры, связанные с оператором USE (ИСПОЛЬЗОВАТЬ), выполняются системой управления вводом-выводом после завершения стандартной программы обработки ошибки ввода-вывода при неуспешном выполнении операции ввода-вывода, за исключением того, что вариант AT END (В КОНЦЕ) имеет старшинство. При выполнении процедур соблюдаются следующие правила:
если указано имя-файла-1, то выполняется соответствующая процедура при возникновении условия, описанного в операторе USE (ИСПОЛЬЗОВАТЬ);
если указано OUTPUT (ВЫХОДНЫХ) то соответствующая процедура выполняется при возникновении условия, описанного в операторе USE (ИСПОЛЬЗОВАТЬ) для любого файла, открытого как OUTPUT (ВЫХОДНОЙ) или же находящегося в процессе открытия в режиме вывода, за исключением файлов, ссылка на которые посредством имени-файла-1 имеется в другом операторе USE (ИСПОЛЬЗОВАТЬ), описывающем такое же условие;
если указано EXTEND (ДОПОЛНЯЕМЫХ), то соответствующая процедура выполняется при возникновении условия, описанного в операторе USE (ИСПОЛЬЗОВАТЬ), для любого файла, открытого как EXTEND (ДОПОЛНЯЕМЫЙ) или находящегося в процессе открытия в режиме дополнения, за исключением файлов, ссылки на которые посредством пмени-файла-1 имеются в другом ■672
операторе USE (ИСПОЛЬЗОВАТЬ), описывающем такое же условие.
После выполнения процедуры, связанной с оператором USE (ИСПОЛЬЗОВАТЬ), управление передается вызывающей программе в системе управления вводом-выводом.
Если значение состояния ввода-вывода не указывает на критическую ошибку ввода-вывода, то система управления вводом-выводом возвращает управление оператору, следующему за оператором ввода-вывода. Если значение состояния ввода-вывода указывает на критическую ошибку, то действие определяется реализацией.
Внутри процедуры, связанной с оператором USE (ИСПОЛЬЗОВАТЬ), не должны выполняться никакие операторы, которые могут потребовать выполнение процедуры, связанной с другим оператором USE (ИСПОЛЬЗОВАТЬ), вызванной ранее и еще не вернувшей управление вызвавшей ее программе.
4.9. Оператор USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ)
Назначение
Оператор USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ) указывает операторы раздела процедур, которые выполняются непосредственно перед представлением группы отчета, описанной в секции отчетов раздела процедур.
Общий формат
USE BEFORE REPORTING идентификатор-1
ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ идентификатор-1
Синтаксические правила
Оператор USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ), если он указан, должен непосредственно следовать за заголовком секции в декларативной части раздела процедур и должен быть единственным в предложении. Остальная часть секции должна состоять из нуля, одного или нескольких параграфов, определяющих подлежащие использованию процедуры.
Идентификатор-1 должен относиться к группе отчета. Иден* тификатор-1 не должен появляться более чем в одном операторе USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ).
Операторы GENERATE (ГЕНЕРИРОВАТЬ), INITIATE (НАЧАТЬ) или TERMINATE (ЗАКОНЧИТЬ) не должны появляться в процедуре USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ).
Оператор PERFORM (ВЫПОЛНИТЬ) в процедуре, относящейся к оператору USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ), не должен иметь в своей области действия операторы GENERATE (ГЕНЕРИРОВАТЬ), INITIATE (НАЧАТЬ) или TERMINATE (ЗАКОНЧИТЬ).Процедура, связанная с оператором USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ), не должна изменять значений ни одного из управляющих данных.
Оператор USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ) сам не выполняется, он только определяет условия, которые вызывают выполнение связанной с ним процедуры.
Общие правила
Декларативные процедуры могут быть включены в любую исходную Кобол-программу, независимо от того, содержит ли она другую программу или сама содержится в другой программе. Дек- ларатива вызывается непосредственно перед представлением названной группы отчета во время выполнения программы. Группа отчета указывается идентификатором-1 в операторе USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ), предшествующем процедуре.
Внутри декларативной процедуры не должно быть обращений к каким-либо недекларативным процедурам.
К именам-процедур, связанным с оператором USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ), могут быть обращения в другой декларативной секции или в недекларативной процедуре только посредством оператора PERFORM (ВЫПОЛНИТЬ).
В операторе USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ) указанные процедуры выполняются системой управления генератором отчетов непосредственно перед представлением названной группы отчета (см. п. 3.20 настоящей части).
Внутри процедуры, связанной с оператором USE (ИСПОЛЬЗОВАТЬ), не должны выполняться никакие операторы, которые могут потребовать выполнение процедуры, связанной с другим оператором USE (ИСПОЛЬЗОВАТЬ), вызванной ранее и еще не вернувшей управление вызвавшей ее программе.