декларатива внутри программы, в которой находится оператор, вызвавший уточняющее условие;
декларатива, в которой задана фраза GLOBAL (ГЛОБАЛЬНО) и которая находится внутри программы, прямо содержащей программу, которая была проверена последней на уточняющую декларативу;
любая декларатива, выбранная путем применения правила 16 для каждой более объемлющей содержащей программы до тех пор, пока правило 16 не будет применено к самой объемлющей программе. Если уточняющая декларатива не найдена, ничего не выполняется. .
Часть 11. МОДУЛЬ СОРТИРОВКИ-СЛИЯНИЯ
ВВЕДЕНИЕ В МОДУЛЬ СОРТИРОВКИ-СЛИЯНИЯ
Назначение
Модуль сортировки-слияния обеспечивает возможности упорядочения записей одного или более файлов или комбинирования записей двух или более одинаково упорядоченных файлов в соответствии с набором определенных пользователем ключей, содержащихся в каждой записи. При желании пользователь может применить некоторую специальную обработку для каждой отдельной записи, используя процедуры ввода или вывода. Такая специальная обработка может быть применена до и (или) после того, как записи упорядочены оператором SORT (СОРТИРОВАТЬ), или после того, как записи были объединены оператором MERGE (СЛИТЬ).
Понятия языка
Сортируемый файл
Сортируемый файл — это совокупность записей, которые долж- ни быть упорядочены оператором SORT (СОРТИРОВАТЬ). Сортируемый файл не имеет меток, которыми может управлять программист, и правила блокирования и распределения внутренней памяти является внутренней функцией оператора SORT (СОРТИРОВАТЬ).
Операторы RELEASE (ПЕРЕДАТЬ) и RETURN (ВЕРНУТЬ) не определяют буферных областей, блокирования, размещения на катушках. Таким образом, сортируемый файл представляется внутренним файлом, который создается (с помощью оператора RELEASE (ПЕРЕДАТЬ)) из входного, файла, обрабатывается (с помощью оператора SORT (СОРТИРОВАТЬ)) и выводится (с помощью оператора RETURN (ВЕРНУТЬ)) в выходной файл.
Сортируемый файл называется в статье управления файлом и описывается в статье описания сортируемого-сливаемого файла. На сортируемый файл ссылаются в операторх RELEASE (ПЕРЕДАТЬ), RETURN (ВЕРНУТЬ) и SORT (СОРТИРОВАТЬ).
Сливаемый файл
Сливаемый файл — это совокупность записей, предназначенных для слияния с помощью оператора MERGE (СЛИТЬ). Программист не может управлять метками сливаемого файла; правила блокирования и распределения внутренней памяти являются внутренней функцией оператора MERGE (СЛИТЬ). Оператор RETURN (ВЕРНУТЬ) не определяет буферных областей, блокирования, размещения на катушках. Таким образом, сливаемый файл представляется внутренним файлом, который создается из входных файлов посредством их слияния (с помощью оператора MERGE (СЛИТЬ)) и выводится (оператором RETURN (ВЕРНУТЬ)) в выходной файл.
Сливаемый файл называется в статье управления файлом и описывается в статье описания сортируемого-сливаемого файла. На сливаемый файл ссылаются в операторах RETURN (ВЕРНУТЬ) и MERGE (СЛИТЬ).
РАЗДЕЛ ОБОРУДОВАНИЯ В МОДУЛЕ СОРТИРОВКИ-СЛИЯНИЯ
Секция ввода-вывода
Информация, относящаяся к секции ввода-вывода, содержится в ч. 7, п. 2.1.
Параграф FILE CONTROL (УПРАВЛ ЕНИЕ-ФАЙЛАМИ)
Информация, относящаяся к параграфу FILE-CONTROL (УПРАВЛ ЕНИЕ-ФАЙЛАМИ), содержится в ч. 7, п. 2.2.
Статья управления файлом
Назначение
Статья управления файлом объявляет существенные свойства файла сортировки или файла слияния.Общий формат
SELECT имя-файла-1 ASSIGN ТО ( имя-реализации-1 ]
ДЛЯ имя-файла-1 НАЗНАЧИТЬ [ имя-реализации-1 j _
т (литерал-1 J
С и н т а к с и ч е с к и е правила
Каждый сортируемый или сливаемый файл, описанный » разделе данных, должен быть назван в одной статье управления файлом. Каждый сортируемый или сливаемый файл, описанный во фразе SELECT (ДЛЯ), должен иметь статью описания сортируемого или сливаемого файла в разделе данных.
Если имя-файла-1 представляет сортируемый или сливаемый файл, то разрешается только фраза ASSIGN (НАЗНАЧИТЬ),, которая должна следовать за именем-файла-1 в параграфе FILECONTROL (УПРАВЛЕНИЕ-ФАИЛАМИ).
Общие правила
Фраза ASSIGN (НАЗНАЧИТЬ) указывает связь файла,, представленного именем-файла-1, с носителем данных, представленным именем-реализации-1 или литералом-1.
Параграф I O-CONTROL (УПРАВЛ ЕН И Е-ВВОДОМ-ВЫВОДОМ)
Назначение
Параграф І-O-CONTROL (УПРАВЛЕНИЕ-ВВОДОМ-ВЫВО- ДОМ) указывает общие области памяти, которые используются различными файлами, включая сортируемые и сливаемые файлы.
Общий формат
I-O-CONTROL.
AREA FOR имя-файла-1
[RECORD
([ SAME SORT j SORT-MERGE
{имя-файла-2}... ] .. ..
УПРАВЛЕНИЕ-ВВОДОМ-ВЫВОДОМ.
ЗАПИСИ
[ [ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ
СОРТИРОВКИ-СЛИЯНИЯ
ДЛЯ имя-файла-1 {имя-файла-2} ... ] ... .]
С и н т а к с и ч е ское правило
Допустимость варианта RECORD (ЗАПИСИ) во фразе SAME (ОБЩАЯ ОБЛАСТЬ) зависит от уровня реализации модуля последовательного ввода-вывода.
Общее правило
Фраза SAME RECORD/SORT/SORT-MERGE AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ/СОРТИРОВКИ/СОРТИРОВКИ-СЛИЯ- НИЯ) для модуля сортировки-слияния описана в п. 2.5.
Фразы SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ) и SAME SORT/SORT-MERGE AREA (ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ/СОРТИРОВКИ-СЛИЯНИЯ)
Назначение
Фразы SAME RECORD (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ) и SAME SORT/SORT-MERGE (ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ/СОРТИРОВКИ-СЛИЯНИЯ) определяют область памяти, которую одновременно используют разные файлы, среди которых имеется хотя бы один сортируемый или сливаемый файл.
О б щ и й формат
R
AREA FOR имя-файла-1
SAME
ECORD SORT SORT-MERGE{имя-файла-2}.. .
З
для
АПИСИС
ОБЩАЯ ОБЛАСТЬ
ОРТИРОВКИСОРТИРОВКИ-СЛИЯНИЯ
I имя-файла-1 {имя-файла-2}...
Синтаксические правила
Каждое имя-файла, указанное во фразе SAME RECORD ^ОБЩАЯ ОБЛАСТЬ ЗАПИСИ) или SAME SORT/SORT-MERGE (ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ/СОРТИРОВКИ-СЛИЯНИЯ), должно быть указано в параграфе FILE-CONTROL (УП- РАВЛЕНИЕ-ФАЙЛАМИ) той же самой программы.
Имя-файла-1 и имя-файла-2 не могут ссылаться на определитель внешнего файла.
Варианты SORT (СОРТИРОВКИ) и SORT-MERGE (СОРТИРОВКИ-СЛИЯНИЯ) эквивалентны..
Имя сортируемого или сливаемого файла не должно быть указано во фразе SAME (ОБЩАЯ) без вариантов RECORD (ЗАПИСИ), SORT (СОРТИРОВКИ) или SORT-MERGE (СОРТИРОВКИ-СЛИЯНИЯ).
Фраза SAME (ОБЩАЯ) может быть включена в программу (в любом из трех возможных вариантов) более одного раза,, однако:
имя-файла не должно появляться более чем в одной фразе SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ);
имя-файла, указывающее сортируемый или сливаемый файл, не может появляться более чем в одной фразе SAME SORT AREA(ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ) или SAME SORT-MERGE AREA (ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ-СЛИЯНИЯ);
- в) если имя-файла, не относящееся к сортируемому или сливаемому файлу, появляется во фразе SAME (ОБЩАЯ ОБЛАСТЬ) и в одной или более фразах SAME SORT AREA (ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ) или SAME SORT-MERGE AREA (ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ-СЛИЯНИЯ) (см. ч. 7, п. 2.13), то все файлы, указанные в этой фразе SAME (ОБЩАЯ ОБЛАСТЬ) должны быть указаны в той же фразе SAME SORT AREA (ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ) или SAME SORT-MERGE AREA (ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ-СЛИЯНИЯ).
(6) Файлы, указанные во фразах SAME SORT AREA (ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ), SAME SORT-MERGE AREA (ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ-СЛИЯНИЯ) или SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ), могут иметь различную организацию или доступ.
2.5.4. О б щ и е правила
Фраза SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ) указывает, что два или белее файлов, представленных именем- файла-1 и именем-файла-2, должны использовать общую область памяти для обработки текущей логической записи. Все файлы могут быть открыты одновременно. Логическая запись в общей области записи рассматривается как логическая запись каждого открытого выходного файла, имя которого встречается во фразе SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ), и как логическая запись читавшегося последним входного файла, имя которого встречается в этой же фразе SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ)- Это равносильно неявному переопределению области, то есть записи располагаются с самой левой позиции литеры.
Если используется фраза SAME SORT AREA (ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ) или SAME SORT-MERGE AREA (ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ-СЛИЯНИЯ), то хотя бы одно из имен-файлов должно указывать сортируемый или сливаемый файл. Эта фраза указывает, что память используется следующим образом: '
любая из этих фраз указывает область памяти, которая будет доступна для использования при сортировке или слиянии каждого указанного сортируемого или сливаемого файла. Такая область памяти, резервируемая для слияния или сортировки одного файла, доступна для повторного использования в сортировке или ■слиянии и для других сортируемых или сливаемых файлов;
области памяти, назначенные фацлам, не являющимся сортируемыми или сливаемыми файлами, могут быть назначены, при необходимости, для сортируемых или сливаемых файлов, указанных в какой-либо из этих фраз. Особенности такого назначения должны быть указаны реализацией;
файлы, не являющиеся сортируемыми или сливаемыми, не- используют одну и ту же область памяти. Если пользователь хочет, чтобы эти файлы использовали общую область памяти, о» должен включить в программу фразу SAME (ОБЩАЯ ОБЛАСТЬ) или SAME RECORD (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ), называющую эти файлы;
во время выполнения операторов SORT (СОРТИРОВАТЬ) или MERGE (СЛИТЬ), ссылающихся на файл, указанный во- фразах SAME SORT AREA (ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ) или SAME SORT-MERGE AREA (ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ-СЛИЯНИЯ), не должен быть открыт никакой файл, не являющийся сортируемым или сливаемым файлом, указанный в этой фразе.
РАЗДЕЛ ДАННЫХ В МОДУЛЕ СОРТИРОВКИ-СЛИЯНИЯ
Секция файлов
Секция файлов расположена в разделе данных исходной программы. Секция файлов определяет структуру сортируемых и сливаемых файлов. Каждый сортируемый или сливаемый файл описывается статьей описания сортируемого-сливаемого файла и одной или более статьями описания записи. Статьи описания записи размещаются непосредственно после статьи описания сортируемого-сливаемого файла.
Общий формат секции файлов в модуле сортировки-слияни» приведен ниже.
FILE SECTION.
[статья-описания-сортируемого-сливаемого-файла
{статья-описания-записи}
СЕКЦИЯ ФАЙЛОВ.
[статья-описания-сортируемого-сливаемого-файла
{статья-описания-записи}’...]...
Статья описания с о р т и р у е м о г о-с л и в а е мого ф а й л а
В Кобол-программе статья описания сортируемого-сливаемого файла (статья SD (ОС)) является высшим уровнем организации в секции файлов. После заголовка секции файлов следует статья описания сортируемого-сливаемого файла, состоящая из индикатора уровня SD (ОС), имени-файла и последовательности независимых фраз. Фразы статьи описания сортируемого-сливаемого файла (статьи SD (ОС)) определяют размер и имена записей данных, относящихся к сортируемому или сливаемому файлу.
Для таких файлов не предусмотрены управляемые пользователем процедуры меток, а правила объединения записей в блоки и ^выделения внутренней памяти являются внутренней функцией операторов SORT (СОРТИРОВАТЬ) и MERGE (СЛИТЬ).
Статья описания сортируемого-сливаемого файла оканчивается точкой.
С т р у к т у р а описания записи
Описание записи состоит из ряда статей описания данных, описывающих характеристики отдельной записи. Каждая статья описания данного состоит из номера-уровня, за которым следует имя- данного или фраза FILLER (ЗАПОЛНИТЕЛЬ), если указаны, далее может быть указана последовательность независимых фраз. Описание записи может иметь иерархическую структуру, поэтому используемые в статье фразы могут существенно отличаться друг от друга в зависимости от того, следуют ли за ней подчиненные статьи.
Структура описания записи и допустимых в статье описания записи элементов приводится в ч. 4, п. 4.3.2 и ч. 6, п. 5.3. Допустимые в статье описания данных фразы соответствуют уровню модуля ядра, поддерживаемого реализацией.
Начальные значения
Начальные значения данных в секции файлов не определены.
Статья описания сортируемого-сливаемого файла
Назначение
Описание сортируемого или сливаемого файла дает информацию, касающуюся физической структуры и идентификации записей файла, подлежащего сортировке или слиянию.
Общий формат
SD имя-файла-1
1
CONTAINS целое-1 CHARACTERS
IS VARYING IN SIZE [ [FROM целое-2] целое-3] CHARACTERS] [DEPENDING ON имя-данного-1] CONTAINS целое-4 TO целое-5
CHARACTERS
-[
RECORD
' (RECORD IS 1 ,
5^1^- { RECORDS ARE j <ИМЯ-Данног°-2} • • ' ОС имя-файла-1
целое-1 ЛИТЕР
ПЕРЕМЕННОЕ ЧИСЛО I[ОТ целое-2]
[В ЗАПИСИ { [ДО целое-3] ЛИТЕР]
[В ЗАВИСИМОСТИ ОТ имя-данного-1[
ОТ целое-4 ДО целое-5 ЛИТЕР
[ЗАПИСЬ 1 n<ULI,Tv t m I
I ЗАПИСИ / ДАННЫХ {имя'Данн0Г0’2/ • ■ • I ■
Синтаксические правила
Индикатор уровня SD (ОС) указывает начало статьи описания сортируемого или сливаемого файла и должен предшествовать имени-файла.
Фразы, следующие за именем-файла-1, необязательны, и порядок их следования не существенен.
Одна или более статей описания записи должны следовать за статьей описания сортируемого или сливаемого файла, однако, никакой оператор ввода-вывода не может быть выполнен для этого файла.
Возможность использования формата 2 фразы RECORD (В ЗАПИСИ) зависит от уровня модуля последовательного ввода-вывода, поддерживаемого реализацией.