Д. Закрыть с замком.

Файл отчетов закрывается (запирается) и не может быть от­крыт во время выполнения данной единицы исполнения.Е. Закрыть катушку или том.

Выходной файл отчетов (носитель в виде катушки или тома).

Выполняются следующие операции:

  1. стандартная процедура обработки конечных меток катушки или тома;

  2. смена катушки (тома). Указатель текущего тома обновляет­ся и указывает на новую катушку (том);

  3. Выполняется стандартная процедура обработки начальных меток катушки (тома);

  4. Следующая операция занесения записи, относящаяся к это­му файлу, заносит следующую логическую запись па следующую катушку (том) файла.

Выходной файл отчета (носитель не в виде катушки или тома).

Выполнение этого оператора считается успешным. Файл оста­ется открытым, и никакие действия, кроме указанных в общем правиле 4, не выполняются'

/К. Перемотка.

Текущая катушка или аналогичное устройство устанавливается на физическое начало.

Оператор CLOSE (ЗАКРЫТЬ) выполняется так, как будто нет необязательных фраз.

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

  2. ) Все начатые отчеты, связанные с файлом отчетов, должны быть закончены посредством выполнения оператора TERMINATE (ЗАКОНЧИТЬ) до выполнения оператора CLOSE (ЗАКРЫТЬ) для этого файла отчетов.

  3. ) После успешного завершения оператора CLOSE (ЗАК­РЫТЬ) без фразы REEL (КАТУШКУ) или UNIT (ТОМ) файл от­четов больше не входит в число открытых файлов и файл отчетов больше пе связан с определителем файла.

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

4.3 Оператор GENERATE (ГЕНЕРИРОВАТЬ)

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

Оператор GENERATE (ГЕНЕРИРОВАТЬ) побуждает СУГО составить отчет в соответствии с описанием этого отчета в секции отчетов раздела данных.

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

GENERATE [1га"’М""°-')

— ( имя-отчета-1 J

ГЕНЕРИРОВАТЬ I ИМЯДаНН0Г°-1 )

(и м я - отч ета -1 j

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

  1. Имя-данного-1 должно относиться к группе отчета типа фрагмент и может уточняться именем отчета.

  2. Имя-отчета-1 может использоваться только тогда, когда в описании этого отчета содержится:

  1. фраза CONTROL (УПРАВЛЕНИЕ) и

  2. не более одной группы отчета типа фрагмент, и

  3. по крайней мере одна группа тела отчета.

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

  1. По оператору GENERATE имя-отчета-1 (ГЕНЕРИРОВАТЬ имя-отчета-1) СУГО выполняет итоговую обработку. Если все вы­полняемые для отчета операторы GENERATE (ГЕНЕРИРОВАТЬ) имеют вид GENERATE имя-отчета-1 (ГЕНЕРИРОВАТЬ имя-отче­та-1), то составляемый отчет называется итоговым отчетом. Итого­вый отчет — отчет, в котором не представлена ни одна группа от­чета типа фрагмент.

  2. По оператору GENERATE имя-данного-1 (ГЕНЕРИРО­ВАТЬ имя-дапного-1) выполняется обработка фрагмента, которая включает определенную обработку, специфическую для группы от­чета типа фрагмент, указанную оператором GENERATE (ГЕНЕ­РИРОВАТЬ). Обычно выполнение оператора GENERATE имя-дан­ного-1 (ГЕНЕРИРОВАТЬ имя-данного-1) приводит к представле­нию указанной группы отчета типа фрагмент.

  3. При выполнении первого по времени оператора GENERA­TE (ГЕНЕРИРОВАТЬ) для данного отчета СУГО запоминает значения управляющих данных. Во время выполнения второго и последующих операторов для того же отчета и до распознавания прерывания управления СУГО использует этот набор управляю­щих данных для проверки наличия прерывания управления. Если встретилось прерывание управления, СУГО запоминает новую по­следовательность значений управляющих данных, которая с этого времени используется для определения прерывания управления, пока не встретится очередное прерывание управления.

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

  5. При выполнении первого по времени оператора GENERA­TE (ГЕНЕРИРОВАТЬ) для данного отчета СУГО обрабатывает названные ниже группы отчета в порядке их перечисления (если они определены в описании отчета), а также группы отчета тина заголовок страницы и концовка страницы, как это списано в об- щем правиле 4. Действия, выполняемые при обработке каждого типа группы отчета, объяснены в соответствующем параграфе (см. п. 3.20 настоящей части).

  1. Обрабатывается группа отчета типа заголовок отчета.

  2. Обрабатывается группа отчета типа заголовок страницы.

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

  4. Если выполняется оператор GENERATE имя-данного-1 (ГЕ­НЕРИРОВАТЬ имя-данного-1), выполняется обработка указанной группы отчета типа фрагмент. Если выполняется оператор GENE­RATE имя-отчета-1 (ГЕНЕРИРОВАТЬ имя-отчета-1), то выпол­няются некоторые действия, сопровождающие обработку группы отчета типа фрагмент (см. п. 3.20 настоящей части).

(6) В процессе выполнения последующих по времени операто­ров GENERATE (ГЕНЕРИРОВАТЬ) для данного отчета выполня­ется ряд описанных ниже действий в порядке следования их описа­ния, а также в соответствии с общим правилом 4 обрабатываются группы типа заголовок страницы и концовка страницы. Действия, выполняемые при обработке каждого типа группы отчета объясне­ны в соответствующем параграфе (см. п. 3.20 настоящей части).

а) Проверка на наличие прерывания управления. Правила оп­ределения равенства управляющих данных такие же, как и для ус­ловий отношения.

Если встретилось прерывание управления, то:

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

  2. обработка групп отчета типа управляемая концовка в по­рядке от младшего к старшим уровням иерархии управления. Об­рабатываются только те группы отчета типа управляемая концов­ка, уровень иерархии которых не старше самого высокого уровня, на котором встретилось прерывание управления;

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

Если выполняется оператор GENERATE имя-данного-1 (ГЕ­НЕРИРОВАТЬ имя-данного-1), производится обработка указан­ной группы отчета типа фрагмент. Если выполняется оператор GENERATE имя-отчета-1 (ГЕНЕРИРОВАТЬ имя-отчета-1), то вы­полняются некоторые действия, входящие в обработку группы от­чета типа фрагмент (см. п. 3.20 настоящей части)

  1. .Операторы GENERATE (ГЕНЕРИРОВАТЬ) для отчета могут быть выполнены только после выполнения оператора INITI­ATE (НАЧАТЬ) и до выполнения оператора TERMINATE (ЗА­КОНЧИТЬ) для этого отчета.

  1. Оператор INITIATE (НАЧАТЬ)

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

Оператор INITIATE (НАЧАТЬ) побуждает систему управле­ния генератором отчетов начать составление отчета.

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

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

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

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

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

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

  1. Оператор INITIATE (НАЧАТЬ) выполняет следующие дей­ствия для каждого указанного отчета:

  1. все счетчики сумм устанавливаются в нуль;

  2. LINE-COUNTER (СЧЕТЧИК-СТРОК) устанавливается в нуль;

  3. PAGE-COUNTER (СЧЕТЧИК-СТРАНИЦ) устанавливается в единицу.

  1. Оператор INITIATE (НАЧАТЬ) не открывает файл, с кото­рым связан отчет. Более того, для этого файла до выполнения опе­ратора INITIATE (НАЧАТЬ) должен быть выполнен оператор OPEN (ОТКРЫТЬ) с вариантом OUTPUT (ВЫХОДНОЙ) или EXTEND (ДОПОЛНЯЕМЫЙ).

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

  3. Если в операторе INITIATE (НАЧАТЬ) указано более од­ного имени-отчета, результат выполнения этого оператора такой, как если бы был записан отдельный оператор INITIATE (НА­ЧАТЬ) для каждого имени-отчета в том порядке, в каком имена- отчетов упоминались в операторе INITIATE (НАЧАТЬ).

  1. Оператор OPEN (ОТКРЫТЬ)

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

Оператор OPEN (ОТКРЫТЬ) инициирует обработку файлов отчетов.

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

(OUTPUT {имя-файла-1 [WITH NO REWIND]}... 1

EXTEND {имя-файла-2}... |‘


В

ОТКРЫТЬ

ЫХОДНОЙ {имя-файла-1 [БЕЗ
ПЕРЕМОТКИ]}...

ДОПОЛНЯЕМЫЙ {имя-файла-2}

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

  1. Оператор OPEN (ОТКРЫТЬ) для файла отчетов может содержать только вариант OUTPUT (ВЫХОДНОЙ) или EXTEND (ДОПОЛНЯЕМЫЙ).

  2. Допустимость вариантов в операторе OPEN (ОТКРЫТЬ) зависит от уровня модуля последовательного ввода-вывода, под­держиваемого реализацией (см. ч. 7, п. 4.3).

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

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

Файл доступен, если он физически имеется в наличии и распоз­нан системой управления вводом-выводом. Приведенная ниже таблица демонстрирует результаты открытия доступных и недо­ступных файлов.

Фраза

Файл доступен

4айл недоступен

OUTPUT

Нормальное открытие;

Открытие приводит к

(ВЫХОДНОЙ)

файл не содержит записей

созданию файла

EXTEND (ДОПОЛНЯЕМЫЙ)

Нормальное открытие

Открытие неуспешное

EXTEND (ДОПОЛНЯЕМЫЙ) (необязательный файл)

Нормальное открытие

Открытие приводит к созданию файла



  1. Если файл не открыт, не может быть выполнен ни один оператор с явной или неявной ссылкой на файл, за исключением оператора OPEN (ОТКРЫТЬ).

  2. Оператор OPEN (ОТКРЫТЬ) для файла отчетов должен быть выполнен до выполнения оператора INITIATE (НАЧАТЬ) для любого отчета, содержащегося в этом файле.

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

После первого выполнения оператора OPEN (ОТКРЫТЬ) для файла отчетов перед каждым последующим выполнением операто- pa OPEN (ОТКРЫТЬ) для этого файла должен быть выполнен оператор CLOSE (ЗАКРЫТЬ) без вариантов REEL (КАТУШКУ), UNIT (ТОМ) или LOCK (С ЗАМКОМ) для этого файла.

  1. Если для файла определены записи меток, начальные мет­ки обрабатываются следующим образом:

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

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

  1. Если во время выполнения оператора OPEN (ОТКРЫТЬ) возникает условие противоречия свойств файла, выполнение опера­тора OPEN (ОТКРЫТЬ) неуспешно (см. ч. 7, п. 1.3.7).

  2. Вариант NO REWIND (БЕЗ ПЕРЕМОТКИ) должен ис­пользоваться только в следующих случаях:

  1. для последовательных однокатушечных (однотомных) фай­лов (см. п. 4.2 настоящей части);

  2. для последовательных файлов, целиком содержащихся на одной катсшке ленты в среде многофайловых лепт (см. ч. 7, п.2.11).

  1. Вариант NO REWIND (БЕЗ ПЕРЕМОТКИ) игнорируется, если он не применим к внешнему носителю, на котором располага­ется файл.

  2. Если внешний носитель для файла допускает перемотку, применяются следующие правила:

  1. если ни один из вариантов EXTEND (ДОПОЛНЯЕМЫЙ) или NO REWIND (БЕЗ ПЕРЕМОТКИ) не указан, выполнение оператора OPEN (ОТКРЫТЬ) приводит к переустановке файла в начало;

  2. если задана фраза NO REWIND (БЕЗ ПЕРЕМОТКИ), при выполнении оператора OPEN (ОТКРЫТЬ) переустановка файла не производится; файл уже должен быть установлен в начало до выполнения оператора OPEN (ОТКРЬІТЬ).

(10) Если задан вариант EXTEND (ДОПОЛНЯЕМЫЙ), при выполнении оператора OPEN (ОТКРЫТЬ) файл устанавливается непосредственно за последней логической записью этого файла. Последней логической записью последовательного файла является последняя занесенная в файл запись.

(И) Если задан вариант EXTEND (ДОПОЛНЯЕМЫЙ) и фра­за LABEL RECORDS (МЕТКИ) указывает, что записи меток при­сутствуют, выполнение оператора OPEN (ОТКРЫТЬ) включает следующие действия:

  1. начальные метки файла обрабатываются только для одно­катушечных (однотомных) файлов;

  2. начальные метки катушки (тома) обрабатываются па по­следней имеющейся катушке (томе), как если бы файл открывался с вариантом INPUT (ВХОДНОЙ);

  3. имеющиеся конечные метки файла обрабатываются, как ес­ли бы файл был открыт с вариантом INPUT (ВХОДНОЙ). Эти метки затем удаляются;