Перейти до вмісту
ГОСТ 22558-89
/ 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-COUN­TER (СЧЕТЧИК-СТРАНИЦ) обеспечивается СУГО и использует­ся программой для нумерации страниц отчета. На PAGE-COUN­TER (СЧЕТЧИК-СТРАНИЦ) можно ссылаться только во фразе SOURCE (ИСТОЧНИК) в секции отчетов и в операторах раздела процедур (п. 3.5.5 настоящей части).

Специальный регистр LINE-COUNTER (СЧЕТЧИК-СТРОК)

Зарезервированное слово LINE-COUNTER (СЧЕТЧИК- СТРОК) является именем счетчика строк, порождаемого для каж­дой статьи описания отчета, определенной в секции отчетов разде­ла данных. Этот счетчик неявно описан как целое без знака в диа­пазоне значений от 0 до 999999, а его использование определяется реализацией. Значение LINE-COUNTER (СЧЕТЧИК-СТРОК) •обеспечивается системой управления генератором отчетов и исполь­зуется для определения вертикального расположения отчета.

На LINE-COUNTER (СЧЕТЧИК-СТРОК) можно ссылаться только во фразе SOURCE (ИСТОЧНИК) в секции отчетов и в опе­раторах раздела процедур; однако изменять значение LINE-COUN­TER (СЧЕТЧИК-СТРОК) может только система управления гене­ратором отчетов (СУГО) (п. 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 (ДЛЯ), должен иметь в разделе данных этой же программы статью описания файла, содержащую фразу RE­PORT (ОТЧЕТ).

Литерал-1 должен быть нечисловым литералом и не дол­жен быть стандартной константой. Смысл и правила для допусти­мого содержимого имени-реализации-1 и значения литерала-1 оп­ределяются реализацией.

Допустимость отдельных фраз в статье управления файлом для файла отчетов зависит от уровня модуля последовательного ввода-вывода, поддерживаемого реализацией (см. ч. 7, п. 2.2).

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

Побачили розбіжність з офіційним текстом?

Повідомити про неточність

Напишіть, що саме розходиться з офіційною публікацією. Код документа вкажіть у повідомленні — так ми швидше знайдемо потрібне місце.

Перейти до форми зворотного зв'язку

Дивіться також

Весь розділ →