ГОСТ 22558-89 сторінка 78 з 116
Каждое слово текста, копируемое из библиотеки, [ но не (замененное^ копируется так, что будет начинаться в результирующей программе в той же области строки, в которой оно начинается в строке в библиотеке. I Однако, если слово текста, копируемое из библиотеки, начинается в области А, и за ним следует другое слово текста, которое также начинается в области А этой же строки, и если имеет место замена предшествующего слова текста в строке заменяющим текстом большей длины, следующее слово текста начинается в области В, если оно не может быть начато в области А. Каждое слово текста в псевдотексте-2, котс-
рое должно быть помещено в результирующую программу, начинается в результирующей программе в той же области, в которой оно появляется в псевдотексте-2. Каждый идентификатор-2, литерал-2 или слово-2, которое должно быть помещено в результирующую программу, начинается в результирующей программе в той же области, в которой появилось бы самое левое слово библиотечного текста, которое участвовало в сравнении, если бы оно не заменялось.
Библиотечный текст должен соответствовать правилам формата представления Кобола.
Если в исходную программу как результат оператора COPY (КОПИРОВАТЬ) вводятся дополнительные строки, каждое вводимое слово текста появляется в отладочной строке, если оператор COPY (КОПИРОВАТЬ) начинается в отладочной строке или если вводимое слово текста появляется в отладочной строке в библиотечном тексте. I Когда вводится слово текста, определенное фразой BY (НА), оно появляется в отладочной строке, если пер- : вое слово библиотечного текста, которое должно быть заменено, указано в отладочной строке. За исключением предыдущих случаев, только те слова текста, которые указаны в отладочных строках, которые являются отладочными в строках псевдотекста-2, появляются в отладочных строках в результирующей программе. Если какой-нибудь литерал, указанный как литерал-2 или в псевдотексте-2 или библиотечном тексте, является слишком длинным и не может вместиться в одной строке без переноса на другую в результирующей программе и литерал не должен размещаться в отладочной строке, вводятся дополнительные строки продолжения, которые содержат остаток литерала. Если замена требует, чтобы продолжаемый литерал был продолжен в отладочной строке^ в программе имеется ошибка.
Слова текста после замены помещаются в исходную программу для компиляции в соответствии с правилами формам та представления (см. ч. 4, п. 7.). Если в исходную программу копируются слова текста из псевдотекста-2, дополнительные пробелы могут быть введены только между словами текста туда, где уже имеется пробел (включая подразумеваемый пробел между исходными строками).
(И) Если в исходную программу в результате обработки операторов COPY (КОПИРОВАТЬ) вводятся дополнительные строки, поле индикатора вводимой строки содержит такую же литеру, как строка, на которой начинается текст, подлежащий замене, за исключением случая, когда эта строка содержит дефис; в этом-случае вводимая строка содержит пробел.
В случае, когда литерал продолжается на вводимой строке, которая не является отладочной строкой, в поле индикатора помещается дефис.
ОПЕРАТОР REPLACE (ЗАМЕНИТЬ)
Назначение
Оператор REPLACE (ЗАМЕНИТЬ) используется для замены текста исходной программы.
Общий формат
Формат 1
REPLACE (== псевдотекст-1 = =
В Y = = псевдотекст-2 ==}...
ЗАМЕНИТЬ {= = псевдотекст-1 = =
НА= = псевдотекст-2 = =}...
Формат 2
REPLACE OFF
ОТКЛЮЧИТЬ ЗАМЕНИТЬ
Синтаксические правила
Оператор REPLACE (ЗАМЕНИТЬ) может появиться в исходной программе всюду, где может появиться строка-литер. Ему должен предшествовать разделитель точка, кроме случая, когда он является первым оператором отдельно компилируемой программы.
Оператор REPLACE (ЗАМЕНИТЬ) должен заканчиваться разделителем точка.
Псевдотекст-1 должен содержать одно или несколько слов текста.
Псевдотекст-2 может содержать одно или несколько слов текста или не содержать ни одного слова текста.
Строка-литер в псевдотексте-1 и псевдотексте-2- может быть продолжена (см. ч. 4, п. 7.2.5).
Реализация должна допускать слова текста в псевдотексте длиной от 1 до 322 литер.
Псевдотекст-1 не должен состоять только из разделителя запятая или разделителя точка с запятой.
Если слово REPLACE (ЗАМЕНИТЬ) появляется в статье-комментарии или в месте, где может появиться статья-комментарий, оно рассматривается как часть статьи-комментария,
Общие правила
Формат 1 оператора REPLACE (ЗАМЕНИТЬ) определяет текст исходной программы, который должен быть заменен
соответствующим текстом. Каждое совпадающее появление псевдотекста-1 в исходной программе заменяется соответствующим псевдотекстом-2.
Формат 2 оператора REPLACE (ЗАМЕНИТЬ) указывает, что все действующие в настоящий момент замены текста отменяются.
Данное появление оператора REPLACE (ЗАМЕНИТЬ) находится в действии от точки, в которой оно указано, до следующего появления оператора или конца отдельно компилируемой программы соответственно.
Все операторы REPLACE (ЗАМЕНИТЬ), находящиеся в исходной программе, обрабатываются после того, как будут обработаны все операторы COPY (КОПИРОВАТЬ), находя щиеся в исходной программе.
Текст, создаваемый в результате обработки оператора REPLACE (ЗАМЕНИТЬ), не должен' содержать оператор REPLACE (ЗАМЕНИТЬ).
Операция сравнения для определения замены текста выполняется следующим образом:
псевдотекст-1 сравнивается с эквивалентным количеством смежных слов текста исходной программы, начиная с самого левого слова текста исходной программы и первого псевдотекста-1;
псевдотекст-1 совпадает с исходным текстом тогда и только тогда, когда упорядоченная последовательность слов текста которая образует псевдотекст-1, равна символ за символом упорядоченной последовательности слов текста исходной программы. При сопоставлении каждое вхождение разделителя запятая, точка с запятой или пробел в псевдотексте-1 или в тексте исходной программы рассматривается как один пробел. Любая последовательность из одного или нескольких разделителей пробел рассматриваются как один пробел;
если совпадение не имеет места, сравнение повторяется для каждого следующего последовательного вхождения псевдотекста-1 до тех пор, пока не будет обнаружено совпадение или не останется ни ‘одного следующего последовательного вхождения псевдотекста-1.
когда все вхождения псевдотекста-1 сравнивались и совпадение не произошло, следующее последовательное слово текста исходной программы рассматривается как самое левое слово текста исходной программы и снова повторяется цикл срав-. нения, начиная с первого вхождения псевдотекста-1;
если происходит совпадение псевдотекста-1 и текста исходной программы, соответствующий псевдотекст-2 заменяет совпавший текст в исходной программе. Слово текста исходной программы, непосредственно следующее за самым правым словом текста, которое участвовало в сравнении, рассматривается теперь как самое левое слово текста исходной программы. Цикл сравнения снова начинается с первого вхождения псевдотекста-1;
операция сравнения продолжается до тех пор, пока самое правое слово текста в тексте исходной программы, которое принадлежит области действия оператора REPLACE (ЗАМЕНИТЬ), или участвовало в успешном сравнении, или было рассмотрено в качестве самого левого слова текста исходной программы и участвовало в полном цикле сравнения.
Строки комментариев и пустые строки, появляющиеся в тексте исходной программы и в псевдотексте-!, при сопоставлении игнорируются; следование слов текста в тексте исходной программы и псевдотекста-1 определяется правилами формата представления (см. ч. 4, п. 7.2).
Строки комментариев и пустые строки в псевдотексте-2 помещаются в результирующую программу без изменения всякий раз, когда псевдотекст-2 помещается в исходную программу в результате замены текста. Строка комментария и пустая строка в тексте исходной программы не заменяется, если эта строка комментария или пустая строка появляется внутри последовательности слов текста, которые совпадают с псевдотекстом-!.
В псевдотексте допускаются отладочные строки. Слова текста в отладочной строке участвуют в правилах сравнения, как если бы D (Т) не появлялось в поле индикатора.
Синтаксическая правильность текста исходной программы, за исключением операторов COPY (КОПИРОВАТЬ) и REPLACE (ЗАМЕНИТЬ), не может быть установлена до тех пор, пока не будут полностью обработаны все операторы COPY (КОПИРОВАТЬ) и REPLACE (ЗАМЕНИТЬ).
Слова текста, вводимые в исходную программу в результате обработки оператора REPLACE (ЗАМЕНИТЬ), помещаются в исходную прогр-амму в соответствии с правилами формата представления (см. ч. 4, п. 7). Когда слова текста из псевдотекста-2 вводятся в исходную программу, дополнительные пробелы могут быть введены только между словами текста, где уже имеется пробел (включая подразумеваемый пробел -между исходными строками).
Если в исходную программу в результате обработки операторов REPLACE (ЗАМЕНИТЬ) вводятся дополнительные строки, поле индикатора вводимой строки содержит такую же литеру, как строка, на которой начинается текст, подлежащий замене, за исключением случая, когда эта же строка содержит дефис; в этом случае вводимая строка содержит пробел.
Если какой-нибудь литерал в псевдотексте-2 является слишком длинным и не может вместиться в одной строке без перено
са на другую строку в результирующей программе и литерал не должен размещаться в отладочной строке, вводятся дополнительные строки продолжения, которые содержат остаток литерала. Если замена требует, чтобы продолжаемый литерал был продолжен в отладочной строке, в программе имеется ошибка.
Часть 13. МОДУЛЬ ГЕНЕРАТОРА ОТЧЕТОВ
!. ВВЕДЕНИЕ В МОДУЛЬ ГЕНЕРАТОРА ОТЧЕТОВ
Назначение
Модуль генератора отчетов обеспечивает средства составления отчетов посредством определения физического представления отчета, не требуя, по возможности, задания необходимых для этого процедур.
Для определения логической организации отчета использована иерархия уровней. Каждый отчет подразделяется на группы отчета,, которые, в свою очередь, подразделяются . на последовательности данных. Такая иерархическая структура делает возможными явные ссылки на отдельные группы отчета наряду с неявными ссылками на другие уровни иерархии. Группа отчета содержит одно- или несколько данных, которые располагаются на одной или нескольких строках.
Понятия языка
Файл отчетов
Файл отчетов — это выходной файл с последовательной организацией, имеющий статью описания файла, содержащую фразу REPORT (ОТЧЕТ). Содержимое файла отчетов состоит из записей, которые будут записываться в файл под управлением системы управления генератором отчетов (СУГО).
Файл отчетов именуется в статье управления файлом и описывается статьей описания файла, содержащей фразу REPORT (ОТЧЕТ). Доступ к файлу отчетов обеспечивается операторами OPEN (ОТКРЫТЬ), GENERATE (ГЕНЕРИРОВАТЬ), INITIATE (НАЧАТЬ), SUPPRESS (ПОДАВИТЬ), TERMINATE (ЗАКОНЧИТЬ), USE AFTER STANDARD EXCEPTION PROCEDURE (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ), USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ) и CLOSE (ЗАКРЫТЬ).
С п еци а л ь н ы й регистр PAGE-COUNTER (СЧЕТЧИК-СТРАНИЦ)
Зарезервированное слово PAGE-COUNTER (СЧЕТЧИК-СТРАНИЦ) служит именем счетчика страниц, который генерируется для каждой статьи описания отчета, определенной в секции отчетов раздела данных. Неявное описание счетчика соответствует описа- «ию целого без знака в диапазоне значений от 1 до 999999, а его использование определяется реализацией. Значение PAGE-COUNTER (СЧЕТЧИК-СТРАНИЦ) обеспечивается СУГО и используется программой для нумерации страниц отчета. На PAGE-COUNTER (СЧЕТЧИК-СТРАНИЦ) можно ссылаться только во фразе SOURCE (ИСТОЧНИК) в секции отчетов и в операторах раздела процедур (п. 3.5.5 настоящей части).
Специальный регистр LINE-COUNTER (СЧЕТЧИК-СТРОК)
Зарезервированное слово LINE-COUNTER (СЧЕТЧИК- СТРОК) является именем счетчика строк, порождаемого для каждой статьи описания отчета, определенной в секции отчетов раздела данных. Этот счетчик неявно описан как целое без знака в диапазоне значений от 0 до 999999, а его использование определяется реализацией. Значение LINE-COUNTER (СЧЕТЧИК-СТРОК) •обеспечивается системой управления генератором отчетов и используется для определения вертикального расположения отчета.
На LINE-COUNTER (СЧЕТЧИК-СТРОК) можно ссылаться только во фразе SOURCE (ИСТОЧНИК) в секции отчетов и в операторах раздела процедур; однако изменять значение LINE-COUNTER (СЧЕТЧИК-СТРОК) может только система управления генератором отчетов (СУГО) (п. 3.5.6 настоящей части).
Индексирование
Счетчики сумм и специальные регистры LINE-COUNTER (СЧЕТЧИК-СТРОК) и PAGE-COUNTER (СЧЕТЧИК-СТРАНИЦ) не могут быть использованы в качестве индексов в секции отчетов.
2. РАЗДЕЛ ОБОРУДОВАНИЯ В МОДУЛЕ ГЕНЕРАТОРА ОТЧЕТОВ
Секция ввода-вывода
Информация, относящаяся к .секции ввода-вывода, находится в ч. 7, п. 2.1.
Параграф FILE-CONTROL (УПРАВЛЕНИЕ-ФАЙЛАМИ)
Информация, относящаяся к параграфу FILE-CONTROL (УП- РАВЛЕНИЕ-ФАЙЛАМИ) находится в ч. 7, п. 2.2.
Статья управления файлом
Назначение
Статья управления файлом объявляет соответствующие физические атрибуты файла отчетов.
Общий формат
SELECT [OPTIONAL] имя-файла-1
ASSIGN ТО І имя-реализации-11
(литерал-1 J '‘‘
I RESERVE целое-1 f AREAS]]
[ [ORGANIZATION IS] SEQUENTIAL]
PADDING CHARACTER IS ( имя-данного-1 1 1
. [ литерал-2 ) J
RECORD DELIMITER IS ( STANDARD-1 j
(имя-реализации-2 I
[ACCESS MODE IS SEQUENTIAL]
[FILE STATUS IS имя-данного-2].
ДЛЯ [НЕОБЯЗАТЕЛЬНОГО] имя-файла-1
НАЗНАЧИТЬ [ имя-реализации-1 1 ( литерал-1 [
[РЕЗЕРВИРОВАТЬ целое-1 ОБЛАСТЕЙ]
[ [ОРГАНИЗАЦИЯ] ПОСЛЕДОВАТЕЛЬНАЯ]
[литера ЗАПОЛНИТЕЛЬ [имя-данного-1 11
L (литерал-2 ) J
ОГРАНИЧИТЕЛЬ ЗАПИСИ [-CT-HftAPT~A і
: ' [ имя-реализации-2 J
[ДОСТУП ПОСЛЕДОВАТЕЛЬНЫЙ]
[СОСТОЯНИЕ ФАЙЛА имя-данного-2].
Синтаксические правила
Фраза SELECT (ДЛЯ) должна быть первой в статье управления файлом. Следующие за ней фразы могут появляться в любом порядке.
Каждый файл отчетов, описанный в разделе данных, должен определяться только один раз в параграфе FILE-CONTROL (УПРАВЛЕНИЕ-ФАЙЛАМИ). Каждый файл отчетов, определенный фразой SELECT (ДЛЯ), должен иметь в разделе данных этой же программы статью описания файла, содержащую фразу REPORT (ОТЧЕТ).
Литерал-1 должен быть нечисловым литералом и не должен быть стандартной константой. Смысл и правила для допустимого содержимого имени-реализации-1 и значения литерала-1 определяются реализацией.
Допустимость отдельных фраз в статье управления файлом для файла отчетов зависит от уровня модуля последовательного ввода-вывода, поддерживаемого реализацией (см. ч. 7, п. 2.2).
Общие правила
Побачили розбіжність з офіційним текстом?