4.4.1. Назначение
Оператор SORT (СОРТИРОВАТЬ) создает сортируемый файл, выполняя для этого процедуру ввода или перемещение записей из других файлов, сортирует записи в сортируемом файле по указанному набору ключей и в последней фазе операции сортировки делает доступной каждую запись из сортируемого файла в отсортированном порядке для указанной процедуры вывода или для выходного файла.
4.4.2. Общий формат
4.4.3. Синтаксические правила
(1) Оператор SORT (СОРТИРОВАТЬ) может указываться в любом месте раздела процедур, за исключением декларатив.
(2) Имя-файла-1 должно быть описано в статье описания сортируемого-сливаемого файла в разделе данных.
(3) Если указана фраза USING (ИСПОЛЬЗУЯ) и файл, представленный именем-файла-1, содержит записи переменной длины, размер записей, содержащихся в файле, представленном именем-файла-2, должен быть не меньше размера самой короткой и не больше размера самой длинной записи, описанной для имени-файла-1. Если файл, представленный именем-файла-1, содержит записи фиксированной длины, размер записей, содержащихся в файле, представленном именем-файла-2, должен быть не больше, чем размер самой длинной записи, описанной для файла, представленного именем-файла-1.
(4) Имя-данного-1 является именем ключа и подчиняется следующим правилам:
а) данные, представленные именами ключей, должны быть описаны в записях, соответствующих имени-файла-1;
б) имена ключей могут уточняться;
в) имена ключей не должны быть групповыми данными, содержащими переменно повторяющиеся данные;
г) если имя-файла-1 имеет более одного описания записи, то данные, указанные именами ключей, могут быть описаны только в одном из описаний записей. Одни и те же позиции литер, определяемые именем-ключа в одной статье описания записи, считаются ключом во всех записях файла;
д) описания ключей не должны содержать фразу OCCURS (ПОВТОРЯЕТСЯ) или быть подчиненными статьям, имеющим фразу OCCURS (ПОВТОРЯЕТСЯ);
е) если файл, представленный именем-файла-1, содержит записи переменной длины, все данные, представленные именами-ключей, должны содержаться в первых х позициях записи, где х равняется минимальному размеру записи, указанному для файла, представленного именем-файла-1.
(5) Слова THRU и THROUGH эквивалентны.
(6) Имя-файла-2 и имя-файла-3 должны быть описаны в разделе данных статьей описания файла, а не статьей описания сортируемого-сливаемого файла.
(7) Файлы, представленные именем-файла-2 и именем-файла-3, могут размещаться на одной и той же катушке.
(8) Если имя-файла-3 относится к индексному файлу, первое указание имени-данного-1 должно быть связано с фразой ASCENDING (ПО ВОЗРАСТАНИЮ), а данное, представленное именем-данного-1, должно занимать те же позиции литер в записи, что и данное, соответствующее основному ключу записи для этого файла.
(9) В одной и той же фразе SAME SORT AREA (ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ) или SAME SORT-MERGE AREA (ОБЩАЯ ОБЛАСТЬ СОРТИРОВКИ-СЛИЯНИЯ) не могут быть указаны никакие два имени-файла, используемые в одном и том же операторе SORT (СОРТИРОВАТЬ). Имена-файлов, соответствующие фразе GIVING (ПОЛУЧАЯ), не могут указываться в одной и той же фразе SAME (ОБЩАЯ) (см. ч.7, п.2.13 и п.2.5 настоящей части).
(10) Если указана фраза GIVING (ПОЛУЧАЯ) и файл, представленный именем-файла-3, содержит записи переменной длины, размер записей, содержащихся в файле, представленном именем-файла-1, должен быть не меньше размера самой короткой и не больше размера самой длинной записи, описанной для имени-файла-3. Если файл, представленный именем-файла-3, содержит записи фиксированной длины, размер записей, содержащихся в файле, представленном именем-файла-1, должен быть не больше самой длинной записи, описанной для файла, представленного именем-файла-3.
4.4.4. Общие правила
(1) Если файл, представленный именем-файла-1, содержит только записи фиксированной длины, любая запись файла, представленного именем-файла-2, содержащая меньше позиций литер, чем запись фиксированной длины, при передаче в файл, представленный именем-файла-1, дополняется пробелами справа, начиная с первой позиции литеры после последней литеры записи.
(2) Имена-данных, указанные в качестве ключей, перечисляются в операторе SORT (СОРТИРОВАТЬ) в порядке убывания значимости. Самое левое имя-данного-1 - самый главный ключ, следующее имя-данного-2 - следующий по значимости ключ и так далее.
а) Если определена фраза ASCENDING (ПО ВОЗРАСТАНИЮ), то отсортированная последовательность будет сформирована, начиная с наименьшего значения данных, указанных в качестве ключей, и кончая наибольшим значением в соответствии с правилами сравнения операндов в условиях отношения.
б) Если указана фраза DESCENDING (ПО УБЫВАНИЮ), то отсортированная последовательность будет сформирована, начиная с наибольшего значения данных, указанных в качестве ключей, и кончая наименьшим значением в соответствии с правилами сравнения операндов.
(3) Если указана фраза DUPLICATES (С ДУБЛИРОВАНИЕМ) и содержимое всех ключей, связанных с одной записью данных, равно содержимому соответствующих ключей, связанных с одной или несколькими другими записями данных, то порядок возврата этих записей следующий: