Правила для оператора GENERATE (ГЕНЕРИРОВАТЬ) указывают, что при распознавании прерывания управления СУГО порождает группы отчета типа управляемая концовка начиная от самого низкого уровня в порядке возрастания до наивысшего уровня прерывания управления. При этом нужно отметить, что если фраза RESET (СБРОСИТЬ) в описании отчета указывает управляющее имя-данного, выполняются действия, описанные в п. 10е, даже если для этого управляющего имени-данного не определена группа отчета типа управляемая концовка.
Производится концовочпое суммирование, т. е. все счетчики •сумм, определенные в этой группе отчета, являющиеся операндами фраз SUM. (СУММА) в этой же группе отчета, прибавляются к порождаемым этими фразами счетчикам сумм (см. п. 3.19 настоящей •части).
Производится нарастающее суммирование, т. е. все счетчики сумм, определенные в этой группе отчета, являющиеся операндами фраз SUM (СУММА) в группах отчета типа управляемая концовка, относящихся к более высоким уровням иерархии управления, прибавляются к порождаемым этими фразами счетчикам сумм (см. п. 3.19 настоящей части).
Если имеется процедура USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ) со ссылкой на имя-данного группы «отчета, выполняется процедура, определенная оператором USE (ИСПОЛЬЗОВАТЬ).
Если был выполнен оператор SUPPRESS (ПОДАВИТЬ) или ■группа отчета непечатаемая, СУГО следующими выполняет действия, описанные в п. 10е ниже.
Если оператор SUPPRESS (ПОДАВИТЬ) не был выполнен ■и группа отчета печатаемая, СУГО формирует печатаемые строки и представляет-группу отчета соответственно правилам представления для групп отчета типа управляемая концовка.
Затем СУГО сбрасывает те счетчики сумм, обновление которых должно выполняться при обработке этого уровня иерархии управления (см. п. 3.19 настоящей части).
Обработка группы отчета тина фрагмент, выполняемая по -оператору GENERATE имя-отчета (ГЕНЕРИРОВАТЬ нмя-отче- та), описана в п. Па— 11д ниже.
Если в описании отчета указана только одна группа отчета типа фрагмент, обработка фрагмента выполняется генератором отчетов по оператору GENERATE имя-отчета (ГЕНЕРИРОВАТЬ имя- ютчета) в соответствии с и. Па—11л. описанными гч/.е. Эти дейст-вия выполняются так, как если бы выполнялся оператор GENERATE имя-даниого (ГЕНЕРИРОВАТЬ имя-данного) для этого фрагмента.
Если в описании отчета нет ни одной группы отчета типа фрагмент, обработка, выполняемая по оператору GENERATE имя-отче- та (ГЕНЕРИРОВАТЬ имя-отчета), описана в Па.
Это действие выполняется так, как если бы описание отчета содержало только одну группу отчета типа фрагмент и выполнялся бы оператор GENERATE имя-данного (ГЕНЕРИРОВАТЬ имя- даппого).
Выполняется любое подытоживание, предназначенное для определенной группы отчета типа фрагмент (см. п. 3.19 настоящей части).
Если имеется процедура USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ) со ссылкой на имя-данного группы отчета, выполняется процедура USE (ИСПОЛЬЗОВАТЬ).
Если был выполнен оператор SUPPRESS (ПОДАВИТЬ) или группа отчета непечатаемая, то ее дальнейшая обработка не производится.
Если группа отчета типа фрагмент порождается по оператору GENERATE имя-отчета (ГЕНЕРИРОВАТЬ имя-отчета), дальнейшая обработка группы отчета не производится.
Если ни 11в, ни Иг не применяются, формируются печатаемые строки п группа отчета представляется соответственно правилам представления для групп отчета типа фрагмент (см. п. 3.10 настоящей части).
При обработке групп отчета типа управляемый заголовок, управляемая концовка или фрагмент (см. общие правила 9, 10. И), СУГО может прерывать обработку этой группы тела после установления, что эта группа должна быть представлена, и выполнить переход на следующую страницу (и, соответственно, порождение групп отчета типа концовка страницы или заголовок страницы) до представления группы тела.
) При обработке прерывания управления значения управляющих данных, которые использовались СУГО для обнаружения прерывания управления, будут называться предыдущими .значениями.
При обработке по прерыванию управления группы отчета типа управляемая концовка любые ссылки на управляющие данные в процедуре, определенной оператором USE (ИСПОЛЬЗОВАТЬ) или фразе SOURCE (ИСТОЧНИК), связанные с этой группой типа управляемая концовка, относятся к предыдущим значениям.
При выполнении оператора TERMINATE (ЗАКОНЧИТЬ) и при порождении групп отчета типа управляемая концовка и концовка отчета СУГО обеспечивает доступность набора предыдущих.
значений управляющих данных фразе SOURCE (ИСТОЧНИК) или ссылкам процедуры, определенной оператором USE (ИСПОЛЬЗОВАТЬ), как если бы прерывание управления было распознано для управляющего имени-данного самого старшего уровня.
Ссылки на все остальные данные в группах отчета и относящихся к ним процедурах операторов USE (ИСПОЛЬЗОВАТЬ) относятся к текущим значениям данных во время обработки этой группы отчета.
3.21. Фраза USAGE (ОБ ИСПОЛЬЗОВАНИИ)
Назначение
Фраза USAGE (об использовании) определяет формат данного в памяти машины.
Общий формат
[USAGE IS] DISPLAY
ДЛЯ ВЫДАЧИ
'3.21.3. Синтаксические правила
Фраза USAGE (об использовании) может быть записана в любой статье описания данного.
Если фраза USAGE (об использовании) записана в статье описания группового данного, она может быть также записана в статье описания подчиненного элементарного данного или группового данного.
Фраза USAGE (об использовании) для группы отчета может определять только USAGE IS DISPLAY (ДЛЯ ВЫДАЧИ).
Общие правила
Если фраза USAGE (об использовании) записана на уровне группового данного, она относится к каждому элементарному данному в группе.
Фраза USAGE (об использовании) указывает, в каком виде представлено данное в памяти машины. Это не влияет на использование данного, хотя спецификации некоторых операторов в разделе процедур могут накладывать ограничения на фразу об использовании для операндов, на которые имеются ссылки в операторах. Фраза USAGE (об использовании) может влиять на основание системы счисления и тип представления литер данного.
Фраза USAGE IS DISPLAY (ДЛЯ ВЫДАЧИ) указывает, что формат данного является стандартным форматом данного.
Если фраза USAGE (об использовании) не указана для элементарного данного или для любой группы, к которой принадлежит данное, предполагается неявная фраза DISPLAY (ДЛЯ ВЫДАЧИ).
3 22. Фраза VALUE (ЗНАЧЕНИЕ)
Назначение
Фраза VALUE (ЗНАЧЕНИЕ) определяет значение печатаемого данного секции отчетов.
Общий формат VALUE IS литерал-1
(ЗНАЧЕНИЕ 1
1 4T4ALI I литерал-1
Синтаксические правила
Числовой литерал со знаком должен соответствовать строке литер шаблона числового данного со знаком.
Числовой литерал во фразе VALUE (ЗНАЧЕНИЕ) должен иметь значение из диапазона значений, указанного фразой PICTURE (ШАБЛОН) и не может иметь значение, которое могло бы потребовать усечения ненулевых цифр. Нечисловой литерал во фразе VALUE (ЗНАЧЕНИЕ) данного должен не превышать размер, указанный во фразе PICTURE (ШАБЛОН).
Общие правила
Фраза VALUE (ЗНАЧЕНИЕ) не должна противоречить другим фразам в описании данного или в описании иерархии данного. Применяются следующие правила:
если категория данного числовая, литерал-1 во фразе VALUE (ЗНАЧЕНИЕ) должен быть числовым; . _ ■ ■
если категория данного буквенная, буквенно-цифровая, буквенно-цифровая редактируемая или числовая редактируемая, литерал-1 во фразе VALUE (ЗНАЧЕНИЕ) должен быть нечисловым литералом. Литерал выравнивается в данном как если бы данное было описано как буквенно-цифровое (см. ч. 4, п. 4.3.6). Литеры редактирования во фразе PICTURE (ШАБЛОН) учитываются при определении размера данного, но не влияют на инициацию данного (см. ч. 6, п. 5.9). Поэтому значение для редактируемого данного должно быть указано в отредактированной форме;
на инициацию не влияют фразы BLANK WHEN ZERO (ПРОБЕЛ КОГДА НУЛЬ) или JUSTIFIED (СДВИНУТО), которые могут быть указаны.
Если в секции отчетов элементарная статья отчета, содержащая фразу VALUE (ЗНАЧЕНИЕ), не содержит фразу GROUP INDICATE (ОПРЕДЕЛЯЕТ ГРУППУ), то печатаемому данному присваивается указанное значение каждый раз при печати соответствующей группы отчета. Однако если-кроме фра.зы VALUE (ЗНАЧЕНИЕ) имеется также фраза GROUP INDICATE (ОПРЕДЕЛЯЕТ ГРУППУ)' указанное значение представляется только при существовании определенных условий во время выполнения (см. п. 3.13 настоящей части).
РАЗДЕЛ ПРОЦЕДУР В МОДУЛЕ ГЕНЕРАТОРА ОТЧЕТОВ
Общее описание
Если в исходной Кобол-программе имеется оператор USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ) модуля генератора отчетов, раздел процедур содержит декларативные процедуры. Ниже приведен общий формат раздела процедур, когда имеется оператор USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ) и (или) USE AFTER STANDARD EXCEPTION PROCEDURE (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ).
PROCEDURE DIVISION.
DECLARATIVES.
{имя-секции SECTION.
AFTER STANDARD EXCEPTION
P
оператор USE
ROCEDUREBEFORE REPORTING
[имя-параграфа.
[предложение] ... ] ...}...
END DECLARATIVES.
{имя-секции SECTION.
[имя-параграфа.
[предложение] .. . ] ...}...
РАЗДЕЛ ПРОЦЕДУР.
ДЕКЛАРАТИВЫ.
{СЕКЦИЯ имя-секции.
ПОСЛЕ СТАНДАРТНОЙ
П
оператор ИСПОЛЬЗОВАТЬ
РОЦЕДУРЫ ОШИБКИ • ДО ВЫДАЧИ[имя-параграфа.
[предложение]!... ] ...}... КОНЕЦ ДЕКЛАРАТИВ
{СЕКЦИЯ имя-секции.
[имя-параграфа.
[предложение] ... ] .
Оператор CLOSE (ЗАКРЫТЬ)
Назначение
Оператор CLOSE (ЗАКРЫТЬ) завершает обработку катушек (томов) и файлов с необязательной перемоткой и (или) замком или удалением, где это применимо.Общий формат
{
имя-файла-1
CLOSE
wf|[F0R REMQVAL],VITU ( NO REWIND )
W
( КАТУШКУ |ТОМ
имя-файла-1
ЗАКРЫТЬ
ITH j LOCK jимя-файла-1 [С УДАЛЕНИЕМ]
БЕЗ ПЕРЕМОТКИ
С ЗАМКОМ
Синтаксические правила
Файлы, на которые ссылается оператор CLOSE (ЗАКРЫТЬ), могут иметь различную организацию или доступ.
Допустимость вариантов в операторе CLOSE (ЗАКРЫТЬ) зависит от уровня модуля последовательного ввода-вывода, поддерживаемого реализацией (см. ч. 7, п. 4.2).
Общие правила ,
За исключением особо оговоренных случаев в ниже приведенных общих правилах, термины «катушка» и «том» являются синонимами и полностью взаимозаменяемы в операторе CLOSE (ЗАКРЫТЬ). Интерпретация последовательных файлов массовой памяти логически эквивалентна интерпретации файлов на ленте или аналогичных последовательных носителях. Файл, содержащийся в многофайловой ленточной среде, логически рассматривается как последовательный однокатушечный (однотомный) файл.
Оператор CLOSE (ЗАКРЫТЬ) может быть выполнен только для файла, который был открыт.
Для того, чтобы показать действие различных типов оператора CLOSE (ЗАКРЫТЬ) для различных носителей данных, все файлы отчетов разделяются на следующие категории:
без катушек (томов). Файл, носитель которого такой, что для него понятие перемотки катушек (томов) не имеет смысла;
последовательный однокатушечный (однотомный). Последовательный файл, который полностью располагается на одной катушке (томе);
последовательный многокатушечный (многотомный). Последовательный файл, который располагается на нескольких катушках (томах).
(3) Результаты выполнения каждого типа оператора CLOSE (ЗАКРЫТЬ) для каждой категории файла приведены в таблице.
Значения символов А—3 в таблице приведены ниже.
Влияние на обработанные ранее катушки (тома) выходного файла отчетов.
Формат оператора GUOSE (ЗАКРЫТЬ) |
Категория файла |
||
Без катушек (томов) |
Последовательный однокатушечный (однотомный) |
Поел едователъный многокатушечный (многотомный) |
|
CLOSE (ЗАКРЫТЬ) |
в |
в, ж |
А, В, Ж |
CLOSE WITH LOCK (ЗАКРЫТЬ С ЗАМКОМ) |
в, д |
в, д, ж |
А, В, Д, Ж |
CLOSE WITH NO REWIND (ЗАКРЫТЬ БЕЗ ПЕРЕМОТКИ) |
в, з |
Б, В |
А, Б, В |
CLOSE REEL/UNIT (ЗАКРЫТЬ КАТУШКУ/ТОМ) |
Е |
Е, Ж |
Е, Ж |
CLOSE REEL/U'NIT FOR REMOVAL (ЗАКРЫТЬ КАТУШКУ/ТОМ С УДАЛЕНИЕМ) |
Е |
г. Е, Ж |
Г, Е, Ж |
Все катушки (тома) в файле отчетов, предшествующие текущей катушке (тому), закрываются, если для них не выполнялся оператор CLOSE REEL (ЗАКРЫТЬ КАТУШКУ) или CLOSE UNIT (ЗАКРЫТЬ ТОМ).
Б. Текущая катушка не перематывается.
Текущая катушка (том) остается в текущей позиции.
Закрыть выходной файл отчетов.
Если для файла указаны записи меток, метки обрабатываются в соответствии со стандартной процедурой обработки меток, определенной реализацией. Действия оператора CLOSE (ЗАКРЫТЬ) не определены, если записи меток указаны, по отсутствуют, или когда записи меток не указаны, но присутствуют.
Если записи меток не указаны для файла отчетов, метки не обрабатываются, но выполняются операции закрытия, определенные реализацией.
Г. Удаление катушки (тома).
Если это применимо, производится перемотка текущей катушки или тома и логическое удаление их из единицы исполнения, однако, катушка или том могут стать снова доступными в порядке расположения катушек или томов в файле отчета, если за выполнением оператора CLOSE (ЗАКРЫТЬ) без варианта REEL (КАТУШКУ) или UNIT (ТОМ) для этого файла отчетов будет выполнен оператор OPEN (ОТКРЫТЬ) для этого же файла отчетов.