4.3.1. Назначение
Оператор RETURN (ВЕРНУТЬ) получает либо отсортированные записи в конечной фазе операции сортировки, либо объединенные в один файл записи, полученные при выполнении операции слияния.
4.3.2. Общий формат
RETURN имя-файла-1 RECORD [ INTO идентификатор-1] | ||
AT END повелительный-оператор-1 | ||
[ NOT AT END повелительный-оператор-2] | ||
[ END-RETURN ] | ||
ВЕРНУТЬ ЗАПИСЬ имя-файла-1 [В идентификатор-1] | ||
В КОНЦЕ повелительный-оператор-1 | ||
[ НЕ В КОНЦЕ повелительный-оператор-2] | ||
[ КОНЕЦ-ВЕРНУТЬ ] |
4.3.3. Синтаксические правила
(1) Область памяти, связанная с идентификатором-1, и область записи, связанная с именем-файла-1, не должны представлять одну и ту же область памяти.
(2) Имя-файла-1 должно быть описано в статье описания сортируемого-сливаемого файла в разделе данных.
(3) Оператор RETURN (ВЕРНУТЬ) может использоваться только в процедуре вывода, связанной с оператором SORT (СОРТИРОВАТЬ) или MERGE (СЛИТЬ) для имени-файла-1.
4.3.4. Общие правила
(1) Если файл состоит из логических записей нескольких типов, то эти записи автоматически разделяют общую область записи в памяти; это равносильно неявному переопределению области. Значения любых данных, которые лежат вне текущей записи, по окончании выполнения оператора RETURN (ВЕРНУТЬ) не определены.
(2) В результате выполнения оператора RETURN (ВЕРНУТЬ) следующая существующая запись файла, представленного именем-файла-1, становится доступной для обработки в области, связанной с именем-файла-1, в порядке, определенном ключами, перечисленными в операторе MERGE (СЛИТЬ) или SORT (СОРТИРОВАТЬ). Если следующей логической записи в файле, представленном именем-файла-1, не существует, возникает условие конца, и управление передается повелительному-оператору-1 фразы AT END (В КОНЦЕ). Выполнение продолжается согласно правилам для операторов, указанных в повелительном-операторе-1. Если выполняется оператор ветвления процедур или условный оператор, вызывающий явную передачу управления, оно передается согласно правилам для этого оператора; в противном случае после завершения выполнения повелительного-оператора-1 управление передается в точку выхода из оператора RETURN (ВЕРНУТЬ), а фраза NOT AT END (HE В КОНЦЕ), если указана, она игнорируется. При наступлении условия конца выполнение оператора RETURN (ВЕРНУТЬ) считается неуспешным и содержимое области записи, соответствующей имени-файла-1, не определено. Оператор RETURN (ВЕРНУТЬ) не может быть выполнен как часть текущей процедуры вывода после выполнения повелительного-оператора-1, указанного фразой AT END (В КОНЦЕ).
(3) Если при выполнении оператора RETURN (ВЕРНУТЬ) условие конца не возникает, то после того, как запись стала доступной, и после выполнения всех неявных пересылок, связанных с фразой INTO (В), управление передается повелительному-оператору-2, если он указан; в противном случае управление передается в точку выхода оператора RETURN (ВЕРНУТЬ).
(4) Фраза END-RETURN (КОНЕЦ-ВЕРНУТЬ) ограничивает область действия оператора RETURN (ВЕРНУТЬ) (см. ч.4, п.6.4.3).
(5) Фраза INTO (В) может быть указана в операторе RETURN (ВЕРНУТЬ) в следующих случаях:
а) если в статье описания сортируемого-сливаемого файла имеется только одно описание записи;
б) если все имена-записей, соответствующие имени-файла-1, и данное, представленное идентификатором-1, описывают групповое данное или элементарное буквенно-цифровое данное.
(6) результат выполнения оператора RETURN (ВЕРНУТЬ) с фразой INTO (В) эквивалентен выполнению следующих действий в указанном порядке:
а) выполнению того же оператора RETURN (ВЕРНУТЬ) без фразы INTO (В);
б) текущая запись перемещается из области записи в область, определенную идентификатором-1, согласно правилам для оператора MOVE (ПОМЕСТИТЬ) без фразы CORRESPONDING (СООТВЕТСТВЕННО). Размер текущей записи определяется правилами, указанными для фразы RECORD (В ЗАПИСИ). Если статья описания файла содержит фразу RECORD IS VARYING (В ЗАПИСИ ПЕРЕМЕННОЕ ЧИСЛО ЛИТЕР), пересылка является групповой. Неявный оператор MOVE (ПОМЕСТИТЬ) не выполняется, если выполнение оператора RETURN (ВЕРНУТЬ) было неуспешным. Индексы, относящиеся к идентификатору-1, вычисляются после чтения записи и непосредственно перед ее пересылкой в данное. Запись доступна как в области записи, так и в области данного, представленного идентификатором-1.