Д. Закрыть с замком.
Файл отчетов закрывается (запирается) и не может быть открыт во время выполнения данной единицы исполнения.Е. Закрыть катушку или том.
Выходной файл отчетов (носитель в виде катушки или тома).
Выполняются следующие операции:
стандартная процедура обработки конечных меток катушки или тома;
смена катушки (тома). Указатель текущего тома обновляется и указывает на новую катушку (том);
Выполняется стандартная процедура обработки начальных меток катушки (тома);
Следующая операция занесения записи, относящаяся к этому файлу, заносит следующую логическую запись па следующую катушку (том) файла.
Выходной файл отчета (носитель не в виде катушки или тома).
Выполнение этого оператора считается успешным. Файл остается открытым, и никакие действия, кроме указанных в общем правиле 4, не выполняются'
/К. Перемотка.
Текущая катушка или аналогичное устройство устанавливается на физическое начало.
Оператор CLOSE (ЗАКРЫТЬ) выполняется так, как будто нет необязательных фраз.
) Выполнение оператора CLOSE (ЗАКРЫТЬ) приводит к обновлению значения состояния ввода-вывода, связанного с именем файла-1 (см. ч. 7, п. 1.3.5).
) Все начатые отчеты, связанные с файлом отчетов, должны быть закончены посредством выполнения оператора TERMINATE (ЗАКОНЧИТЬ) до выполнения оператора CLOSE (ЗАКРЫТЬ) для этого файла отчетов.
) После успешного завершения оператора CLOSE (ЗАКРЫТЬ) без фразы REEL (КАТУШКУ) или UNIT (ТОМ) файл отчетов больше не входит в число открытых файлов и файл отчетов больше пе связан с определителем файла.
) Если в операторе CLOSE (ЗАКРЫТЬ) указано более одного имени-файла-1, результат выполнения этого оператора CLOSE (ЗАКРЫТЬ) такой же, как если бы отдельный оператор CLOSE (ЗАКРЫТЬ) был написан для каждого имени-файла-1 в том же порядке, в каком эти имена файлов указаны в операторе CLOSE (ЗАКРЫТЬ).
4.3 Оператор GENERATE (ГЕНЕРИРОВАТЬ)
Назначение
Оператор GENERATE (ГЕНЕРИРОВАТЬ) побуждает СУГО составить отчет в соответствии с описанием этого отчета в секции отчетов раздела данных.
Общий формат
GENERATE [1га"’М""0Г°-')
— ( имя-отчета-1 J
ГЕНЕРИРОВАТЬ I ИМЯ’ДаНН0Г°-1 )
(и м я - отч ета -1 j
Синтаксические правила
Имя-данного-1 должно относиться к группе отчета типа фрагмент и может уточняться именем отчета.
Имя-отчета-1 может использоваться только тогда, когда в описании этого отчета содержится:
фраза CONTROL (УПРАВЛЕНИЕ) и
не более одной группы отчета типа фрагмент, и
по крайней мере одна группа тела отчета.
Общие правила
По оператору GENERATE имя-отчета-1 (ГЕНЕРИРОВАТЬ имя-отчета-1) СУГО выполняет итоговую обработку. Если все выполняемые для отчета операторы GENERATE (ГЕНЕРИРОВАТЬ) имеют вид GENERATE имя-отчета-1 (ГЕНЕРИРОВАТЬ имя-отчета-1), то составляемый отчет называется итоговым отчетом. Итоговый отчет — отчет, в котором не представлена ни одна группа отчета типа фрагмент.
По оператору GENERATE имя-данного-1 (ГЕНЕРИРОВАТЬ имя-дапного-1) выполняется обработка фрагмента, которая включает определенную обработку, специфическую для группы отчета типа фрагмент, указанную оператором GENERATE (ГЕНЕРИРОВАТЬ). Обычно выполнение оператора GENERATE имя-данного-1 (ГЕНЕРИРОВАТЬ имя-данного-1) приводит к представлению указанной группы отчета типа фрагмент.
При выполнении первого по времени оператора GENERATE (ГЕНЕРИРОВАТЬ) для данного отчета СУГО запоминает значения управляющих данных. Во время выполнения второго и последующих операторов для того же отчета и до распознавания прерывания управления СУГО использует этот набор управляющих данных для проверки наличия прерывания управления. Если встретилось прерывание управления, СУГО запоминает новую последовательность значений управляющих данных, которая с этого времени используется для определения прерывания управления, пока не встретится очередное прерывание управления.
В процессе представления отчета, если СУГО должна осуществить переход на новую страницу для представления группы тела отчета, выполняются автоматические функции обработки групп отчета типа заголовок страницы и концовка страницы, если они определены (см. п. 3.10 настоящей части).
При выполнении первого по времени оператора GENERATE (ГЕНЕРИРОВАТЬ) для данного отчета СУГО обрабатывает названные ниже группы отчета в порядке их перечисления (если они определены в описании отчета), а также группы отчета тина заголовок страницы и концовка страницы, как это списано в об- щем правиле 4. Действия, выполняемые при обработке каждого типа группы отчета, объяснены в соответствующем параграфе (см. п. 3.20 настоящей части).
Обрабатывается группа отчета типа заголовок отчета.
Обрабатывается группа отчета типа заголовок страницы.
Обрабатываются все группы отчета типа управляемый заголовок, начиная от старшего уровня иерархии управления к младшим уровням.
Если выполняется оператор GENERATE имя-данного-1 (ГЕНЕРИРОВАТЬ имя-данного-1), выполняется обработка указанной группы отчета типа фрагмент. Если выполняется оператор GENERATE имя-отчета-1 (ГЕНЕРИРОВАТЬ имя-отчета-1), то выполняются некоторые действия, сопровождающие обработку группы отчета типа фрагмент (см. п. 3.20 настоящей части).
(6) В процессе выполнения последующих по времени операторов GENERATE (ГЕНЕРИРОВАТЬ) для данного отчета выполняется ряд описанных ниже действий в порядке следования их описания, а также в соответствии с общим правилом 4 обрабатываются группы типа заголовок страницы и концовка страницы. Действия, выполняемые при обработке каждого типа группы отчета объяснены в соответствующем параграфе (см. п. 3.20 настоящей части).
а) Проверка на наличие прерывания управления. Правила определения равенства управляющих данных такие же, как и для условий отношения.
Если встретилось прерывание управления, то:
для процедур, определенных оператором USE (ИСПОЛЬЗОВАТЬ) и фраз SOURCE (ИСТОЧНИК), соответствующих группам отчета типа управляемая концовка, обеспечивается возможность доступа к значениям управляющих данных, вызвавшим данное прерывание управления (см. п. 3.20 настоящей части);
обработка групп отчета типа управляемая концовка в порядке от младшего к старшим уровням иерархии управления. Обрабатываются только те группы отчета типа управляемая концовка, уровень иерархии которых не старше самого высокого уровня, на котором встретилось прерывание управления;
обработка групп отчета типа управляемый заголовок в порядке от старшего к младшим уровням иерархии. Обрабатываются только те из них, уровень иерархии управления которых не старше самого высокого уровня, на котором встретилось прерывание управления.
Если выполняется оператор GENERATE имя-данного-1 (ГЕНЕРИРОВАТЬ имя-данного-1), производится обработка указанной группы отчета типа фрагмент. Если выполняется оператор GENERATE имя-отчета-1 (ГЕНЕРИРОВАТЬ имя-отчета-1), то выполняются некоторые действия, входящие в обработку группы отчета типа фрагмент (см. п. 3.20 настоящей части)
.Операторы GENERATE (ГЕНЕРИРОВАТЬ) для отчета могут быть выполнены только после выполнения оператора INITIATE (НАЧАТЬ) и до выполнения оператора TERMINATE (ЗАКОНЧИТЬ) для этого отчета.
Оператор INITIATE (НАЧАТЬ)
Назначение
Оператор INITIATE (НАЧАТЬ) побуждает систему управления генератором отчетов начать составление отчета.
Общий формат
INITIATE {имя-отчета-1}...
НАЧАТЬ {имя-отчета-1} ...
Синтаксические правила
Каждое имя-отчета-1 должно быть определено статьей описания отчета в секции отчетов раздела данных.
Общиеправила
Оператор INITIATE (НАЧАТЬ) выполняет следующие действия для каждого указанного отчета:
все счетчики сумм устанавливаются в нуль;
LINE-COUNTER (СЧЕТЧИК-СТРОК) устанавливается в нуль;
PAGE-COUNTER (СЧЕТЧИК-СТРАНИЦ) устанавливается в единицу.
Оператор INITIATE (НАЧАТЬ) не открывает файл, с которым связан отчет. Более того, для этого файла до выполнения оператора INITIATE (НАЧАТЬ) должен быть выполнен оператор OPEN (ОТКРЫТЬ) с вариантом OUTPUT (ВЫХОДНОЙ) или EXTEND (ДОПОЛНЯЕМЫЙ).
Следующий оператор INITIATE (НАЧАТЬ) для имени-отчета-1 не может быть выполнен до тех пор, пока не будет выполнен оператор TERMINATE (ЗАКОНЧИТЬ) для этого отчета, следующий за предыдущим оператором INITIATE (НАЧАТЬ).
Если в операторе INITIATE (НАЧАТЬ) указано более одного имени-отчета, результат выполнения этого оператора такой, как если бы был записан отдельный оператор INITIATE (НАЧАТЬ) для каждого имени-отчета в том порядке, в каком имена- отчетов упоминались в операторе INITIATE (НАЧАТЬ).
Оператор OPEN (ОТКРЫТЬ)
Назначение
Оператор OPEN (ОТКРЫТЬ) инициирует обработку файлов отчетов.
Общий формат
(OUTPUT {имя-файла-1 [WITH NO REWIND]}... 1
EXTEND {имя-файла-2}... |‘
В
ОТКРЫТЬ
ЫХОДНОЙ {имя-файла-1 [БЕЗДОПОЛНЯЕМЫЙ {имя-файла-2}
Синтаксические правила
Оператор OPEN (ОТКРЫТЬ) для файла отчетов может содержать только вариант OUTPUT (ВЫХОДНОЙ) или EXTEND (ДОПОЛНЯЕМЫЙ).
Допустимость вариантов в операторе OPEN (ОТКРЫТЬ) зависит от уровня модуля последовательного ввода-вывода, поддерживаемого реализацией (см. ч. 7, п. 4.3).
Общие правила
Успешное выполнение оператора OPEN (ОТКРЫТЬ) делает файл доступным для обработки и переводит его в режим открытого файла. Успешное выполнение оператора OPEN (ОТКРЫТЬ) связывает файл с именем-файла посредством определителя файла.
Файл доступен, если он физически имеется в наличии и распознан системой управления вводом-выводом. Приведенная ниже таблица демонстрирует результаты открытия доступных и недоступных файлов.
Фраза |
Файл доступен |
4айл недоступен |
OUTPUT |
Нормальное открытие; |
Открытие приводит к |
(ВЫХОДНОЙ) |
файл не содержит записей |
созданию файла |
EXTEND (ДОПОЛНЯЕМЫЙ) |
Нормальное открытие |
Открытие неуспешное |
EXTEND (ДОПОЛНЯЕМЫЙ) (необязательный файл) |
Нормальное открытие |
Открытие приводит к созданию файла |
Если файл не открыт, не может быть выполнен ни один оператор с явной или неявной ссылкой на файл, за исключением оператора OPEN (ОТКРЫТЬ).
Оператор OPEN (ОТКРЫТЬ) для файла отчетов должен быть выполнен до выполнения оператора INITIATE (НАЧАТЬ) для любого отчета, содержащегося в этом файле.
Файл отчетов может быть открыт с вариантом OUTPUT (ВЫХОДНОЙ) или EXTEND (ДОПОЛНЯЕМЫЙ) в одной и той же единице исполнения.
После первого выполнения оператора OPEN (ОТКРЫТЬ) для файла отчетов перед каждым последующим выполнением операто- pa OPEN (ОТКРЫТЬ) для этого файла должен быть выполнен оператор CLOSE (ЗАКРЫТЬ) без вариантов REEL (КАТУШКУ), UNIT (ТОМ) или LOCK (С ЗАМКОМ) для этого файла.
Если для файла определены записи меток, начальные метки обрабатываются следующим образом:
а) когда указана фраза OUTPUT (ВЫХОДНОЙ), выполнение оператора OPEN (ОТКРЫТЬ) приводит к записи меток в соответствии с процедурами, определенными реализацией для записи выходных меток.
Действия оператора OPEN (ОТКРЫТЬ) не определены, когда записи меток указаны, но в файле отсутствуют, или не указаны, но присутствуют.
Если во время выполнения оператора OPEN (ОТКРЫТЬ) возникает условие противоречия свойств файла, выполнение оператора OPEN (ОТКРЫТЬ) неуспешно (см. ч. 7, п. 1.3.7).
Вариант NO REWIND (БЕЗ ПЕРЕМОТКИ) должен использоваться только в следующих случаях:
для последовательных однокатушечных (однотомных) файлов (см. п. 4.2 настоящей части);
для последовательных файлов, целиком содержащихся на одной катсшке ленты в среде многофайловых лепт (см. ч. 7, п.2.11).
Вариант NO REWIND (БЕЗ ПЕРЕМОТКИ) игнорируется, если он не применим к внешнему носителю, на котором располагается файл.
Если внешний носитель для файла допускает перемотку, применяются следующие правила:
если ни один из вариантов EXTEND (ДОПОЛНЯЕМЫЙ) или NO REWIND (БЕЗ ПЕРЕМОТКИ) не указан, выполнение оператора OPEN (ОТКРЫТЬ) приводит к переустановке файла в начало;
если задана фраза NO REWIND (БЕЗ ПЕРЕМОТКИ), при выполнении оператора OPEN (ОТКРЫТЬ) переустановка файла не производится; файл уже должен быть установлен в начало до выполнения оператора OPEN (ОТКРЬІТЬ).
(10) Если задан вариант EXTEND (ДОПОЛНЯЕМЫЙ), при выполнении оператора OPEN (ОТКРЫТЬ) файл устанавливается непосредственно за последней логической записью этого файла. Последней логической записью последовательного файла является последняя занесенная в файл запись.
(И) Если задан вариант EXTEND (ДОПОЛНЯЕМЫЙ) и фраза LABEL RECORDS (МЕТКИ) указывает, что записи меток присутствуют, выполнение оператора OPEN (ОТКРЫТЬ) включает следующие действия:
начальные метки файла обрабатываются только для однокатушечных (однотомных) файлов;
начальные метки катушки (тома) обрабатываются па последней имеющейся катушке (томе), как если бы файл открывался с вариантом INPUT (ВХОДНОЙ);
имеющиеся конечные метки файла обрабатываются, как если бы файл был открыт с вариантом INPUT (ВХОДНОЙ). Эти метки затем удаляются;