Статус документа
Статус документа

ГОСТ 22558-89 (СТ СЭВ 6184-88, ИСО 1989-85) Язык программирования Кобол. Части 8-17

     4.7. Оператор START (ПОДВЕСТИ)


4.7.1. Назначение

Оператор START (ПОДВЕСТИ) предоставляет возможность логического позиционирования индексного файла для дальнейшего последовательного извлечения записей.

4.7.2. Общий формат


4.7.3. Синтаксические правила

(1) Имя-файла-1 должно быть именем файла с последовательным или динамическим доступом.

(2) Имя-данного-1 может уточняться.

(3) Если для имени-файла-1 не определена соответствующая процедура USE AFTER STANDARD EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ), должна быть указана фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА).

(4) Если задана фраза KEY (КЛЮЧ), имя-данного-1 должно ссылаться:

а) либо на данное, описанное как ключ записи имени-файла-1 (см. пп.2.5, 2.7 настоящей части);

б) либо на любое буквенно-цифровое данное, самая левая литера которого в записи файла соответствует самой левой литере ключа записи имени-файла-1 и длина которого не больше чем длина этого ключа.

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

(1) Файл, представленный именем-файла-1, ко времени выполнения оператора START (ПОДВЕСТИ) должен быть открыт для ввода или ввода-вывода (см. п.4.4 настоящей части).

(2) Если фраза KEY (КЛЮЧ) не указана, подразумевается знак отношения EQUAL (РАВЕН).

(3) Выполнение оператора START (ПОДВЕСТИ) не изменяет ни содержимое области записи, ни содержимое данного, представленного именем-данного, указанным во фразе DEPENDING ON (В ЗАВИСИМОСТИ ОТ) фразы RECORD (В ЗАПИСИ), относящейся к имени-файла-1.


(4) Сравнение, определяемое знаком отношения во фразе KEY (КЛЮЧ), проводится между ключом записи файла, представленного именем-файла-1, и данным, как указано в общих правилах (11) и (12).

Сравнение производится относительно возрастания ключей ссылки в соответствии с основной последовательностью для файла. Если операнды сравнения неодинакового размера, сравнение производится так, как если бы более длинный операнд усекался справа до размера более короткого. Все другие правила нечислового сравнения остаются в силе (см. ч.4, п.6.3.1.1.2).

а) Указателю позиции файла присваивается значение ключа ссылки первой из логических записей, ключ которых удовлетворяет сравнению.

б) Если сравнение не удовлетворяется ни для одной записи файла, возникает условие ошибки ключа, и выполнение оператора START (ПОДВЕСТИ) считается неуспешным.

(5) При выполнении оператора START (ПОДВЕСТИ) обновляется значение состояния ввода-вывода, относящегося к имени-файла-1 (см. п.1.3.4 настоящей части).

(6) Если во время выполнения оператора START (ПОДВЕСТИ) указатель позиции файла определяет, что необязательный входной файл отсутствует, возникает условие ошибки ключа, и выполнение оператора START (ПОДВЕСТИ) является неуспешным.

(7) Передача управления после успешного или неуспешного выполнения оператора START (ПОДВЕСТИ) зависит от наличия или отсутствия необязательных фраз INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) и NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) в операторе START (ПОДВЕСТИ) (см. п.1.3.5 настоящей части).

(8) После неуспешного выполнения оператора START (ПОДВЕСТИ) указатель позиции файла указывает, что правильная следующая запись не установлена. Кроме того для индексных файлов ключ ссылки становится неопределенным.

(9) Фраза END-START (КОНЕЦ-ПОДВЕСТИ) ограничивает область действия оператора START (ПОДВЕСТИ) (см. ч.4, п.6.4.3).

(10) Ключ ссылки устанавливается следующим образом:

а) если фраза KEY (КЛЮЧ) не задана, основной ключ, заданный для имени-файла-1, становится ключом ссылки;

б) если фраза KEY (КЛЮЧ) задана и имя-данного-1 задано в качестве ключа для имени-файла-1, этот ключ записи становится ключом ссылки;

в) если фраза KEY (КЛЮЧ) задана, а имя-данного-1 не задано в качестве ключа для имени-файла-1, ключом ссылки становится ключ записи, самая левая литера которого соответствует самой левой литере данного, заданного именем-данного-1.

Этот ключ ссылки используется для установления упорядочивания записей для этого оператора START (ПОДВЕСТИ), см. общее правило (4); и если выполнение оператора START (ПОДВЕСТИ) успешное, ключ ссылки используется для последующих операторов READ (ЧИТАТЬ) последовательного чтения (см. п.4.5 настоящей части).

(11) Если фраза KEY (КЛЮЧ) задана, сравнение, описанное в общем правиле (4), использует данное, заданное именем-данного-1.

(12) Если фраза KEY (КЛЮЧ) не задана, сравнение, описанное в общем правиле (4), использует данное, заданное во фразе RECORD KEY (КЛЮЧ ЗАПИСИ), соответствующей имени-файла-1.