Состояние ввода-вывода = 41. Оператор OPEN (ОТКРЫТЬ) выдан для открытого файла.
Состояние ввода-вывода = 42. Оператор CLOSE (ЗАКРЫТЬ) выдан для неоткрытого файла.
Состояние ввода-вывода = 43. При последовательном доступе последний оператор ввода-вывода, выполненный для файла до выполнения оператора DELETE (УДАЛИТЬ) или REWRITE (ОБНОВИТЬ), не является успешно выполненным оператором READ (ЧИТАТЬ).
Состояние ввода-вывода = 44. Нарушение границ возникает по следующим причинам:
совершена попытка записать или обновить запись, которая длиннее максимально допустимой или короче минимально допустимой в соответствии с фразой RECORD IS VARYING (В ЗАПИСИ ПЕРЕМЕННОЕ ЧИСЛО), связанной с именем файла;
на уровне 1 сделана попытка обновить запись индексного файла, а размер заменяющей записи отличен от размера заменяемой записи.
Состояние ввода-вывода = 46. Выдан оператор последовательного чтения для файла, открытого в режиме ввода или ввода- вывода и не была установлена правильная следующая запись по одной из следующих причин:
предыдущий оператор START (ПОДВЕСТИ) закончился неуспешно, или
предыдущий оператор READ (ЧИТАТЬ) закончился неуспешно, но не вызвал условие «в конце»;
предыдущий оператор READ (ЧИТАТЬ) вызвал условие «в конце».
Состояние ввода-вывода = 47, Был выдан оператор READ (ЧИТАТЬ) или START (ПОДВЕСТИ) | для файла, не открытого в режиме ввода или ввода-вывода.
Состояние ввода-вывода = 48. Был выдан оператор WRITE (ПИСАТЬ) для файла, не открытого в режиме ввода-вывода, вывода |_или дополнения I
Состояние ввода-вывода = 49. Был выдан оператор DELETE (УДАЛИТЬ) или REWRITE (ОБНОВИТЬ) для файла, не открытого в режиме ввода-вывода.
(6) Определяемое реализацией условие с неуспешным завершением
а) Состояние ввода-вывода = 9х. Существуют определяемые реализацией условия. Эти условия не должны дублировать никакие условия, определенные для значений от 00 до 49 состояния ввода-вывода. Значение х определяется реализацией.
1.3.5. У с л о в и е ошибки ключа
Условие ошибки ключа может возникнуть в результате выполнения операторов DELETE (УДАЛИТЬ), READ (ЧИТАТЬ), REWRITE (ОБНОВИТЬ) j, START (ПОДВЕСТИ) | или WRITE (ПИСАТЬ). Когда возникает условие ошибки ключа, оператор ввода-вывода, вызвавший эту ситуацию, является неуспешным и файл не изменяется (пп. 4.3, 4.5—4.7, 4.9 настоящей части).
Если условие ошибки ключа возникает после выполнения операции ввода-вывода, определенной в операторе ввода-вывода, то происходят следующие действия в указанном порядке:
(1) состояние ввода-вывода определителя файла, связанного с оператором, устанавливается в значение, определяющее условие ошибки ключа (см. п. 1.3.4 настоящей части);
1 (2) если в операторе ввода-вывода указана фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА), то никакая процедура USE AFTER EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ ПРОЦЕДУРЫ ОШИБКИ), связанная с определителем файла, не выполняется, и управление передается повелительному оператору, указанному во фразе INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА). Выполнение продолжается в соответствии с правилами для каждого оператора, указанного в этом повелительном операторе. Если выполняется оператор ветвления процедуры или условный оператор, который вызывает явную передачу управления, то управление передается в соответствии с правилами для этого оператора; в противном случае после завершения выполнения повелительного оператора, указанного во фразе INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА), управление передается в конец оператора ввода-вывода, а фраза NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА), если она указана, игнорируется;
(3) если в операторе ввода-вывода фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) не указана, то с определителем файла должна быть связана процедура USE AFTER EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ ПРОЦЕДУРЫ ОШИБКИ), и эта процедура выполняется, а управление передается в соответствии ,с правилами оператора USE (ИСПОЛЬЗОВАТЬ). Если указана фраза NOT NIVALID KEY (БЕЗ ОШИБКИ КЛЮЧА), то она игнорируется (п. 4.8 настоящей части).
Если после выполнения операции ввода-вывода, указанной в операторе ввода-вывода, условия ошибки ключа нет, то фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА), если она указана, игнорируется. Состояние ввода-вывода определителя файла, связанного с оператором, обновляется, и выполняются следующие действия:
если возникает условие ошибки, которое не является условием ошибки ключа, то управление передается в соответствии с правилами оператора USE (ИСПОЛЬЗОВАТЬ), а затем выполняется процедура USE AFTER EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ ПРОЦЕДУРЫ ОШИБКИ), связанная с определителем файла (п. 4.8 настоящей части);
если условие ошибки не возникает, то управление передается в конец оператора ввода-вывода или повелительному оператору, указанному во фразе NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА). В последнем случае выполнение продолжается в соответствии с правилами для каждого оператора, указанного в повелительном операторе. Если это оператор ветвления процедуры или условный оператор, который вызывает явную передачу управления, то управление передается в соответствии с правилами для этого оператора; в противном случае, после завершения выполнения повелительного оператора, указанного во фразе NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА), управление передается в конец оператора ввода-вывода.
Условие «в конце»
Условие «в конце» может возникнуть в результате выполнения оператора READ (ЧИТАТЬ) (п. 4.5 настоящей части).
У с л о в и е противоречия свойств файла
Условие противоречия свойств файла может возникнуть в результате выполнения операторов OPEN (ОТКРЫТЬ), REWRITE (ОБНОВИТЬ) или WRITE (ПИСАТЬ). При возникновении условия ппотиворечия свойств файла выполнение оператора ввода-вы
вода, который обнаружил это условие, считается неуспешным и файл не изменяется (пп. 4.4, 4.6, 4.9 настоящей части).
При обнаружении условия противоречия свойств файла выполняются следующие действия в указанном ниже порядке:
в состояние ввода-вывода, связанное с именем-файла, помещается значение, указывающее на условие противоречия свойств файла (см. п. 1.3.4 настоящей части);
если для данного имени файла задана процедура USE AFTER EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ ПРОЦЕДУРЫ ОШИБКИ), выполняется указанная процедура.
2. РАЗДЕЛ ОБОРУДОВАНИЯ В МОДУЛЕ ИНДЕКСНОГО ВВОДА-ВЫВОДА
Секция ввода-вывода
Информация, относящаяся к секции ввода-вывода, находится в ч. 7, п. 2.1.
Параграф FILE-CONTROL (УПРАВЛ ЕНИЕ-ФАЙЛАМИ)
Информация о параграфе FILE-CONTROL (УПРАВЛЕНИЕ- ФАИ Л АМИ) находится в ч. 7, п. 2.2.
Статья управления файлом
Назначение
Статья управления файлом объявляет существенные физические свойства индексного файла.
Общий формат
SELECT і [OPTIONAL]" имя-файла-1
ASSIGN ТО ( имя-реализации-1 1
(литерал-1 J
[RESERVE целое і ]
гх 1 -С/х О
[
INDEXED
SEQUENTIAL RANDOM
DYNAMIC
ACCESS MODE IS
RECORD KEY IS имя-данного-1
[ALTERNATE RECORD KEY IS имя-данного-2 [WITH DUPLICATES]] ...
[FILE STATUS IS имїьданного-3].
ДЛЯ [НЕОБЯЗАТЕЛЬНОГО] имя-файла-1
НАЗНАЧИТЬ І имя-реализации-1 1
[ литер ал-1 J
[РЕЗЕРВИРОВАТЬ целое-1 ОБЛАСТЕЙ]
[ОРГАНИЗАЦИЯ] ИНДЕКСНАЯ
ПОСЛЕДОВАТЕЛЬНЫЙ
П
[ДОСТУП
РОИЗВОЛЬНЫЙДИНАМИЧЕСКИЙ I
КЛЮЧ ЗАПИСИ имя-данного-1
[ДОПОЛНИТЕЛЬНЫЙ КЛЮЧ ЗАПИСИ имя-данного-2
[С ДУБЛИРОВАНИЕМ]] ...
, [СОСТОЯНИЕ ФАЙЛА имя-данного-3].
Синтаксические правила
В статье управления файлом фраза SELECT (ДЛЯ) должна указываться первой. Фразы, которые следуют за фразой SELECT (ДЛЯ), могут появляться в любом порядке.
Каждое имя-файла из раздела данных должно быть определено в параграфе FILE-CONTROL (УПРАВЛЕНИЕ-ФАЙЛА- МИ) только один раз. Каждое имя-файла, указанное в фразе SELECT (ДЛЯ), должно иметь статью описания файла в разделе данных той же самой программы.
Литерал-1 должен быть нечисловым литералом и не должен быть стандартной константой. Значение и правила для допустимого содержимого имени-реализации-1 и значения литерала-1 определяются реализацией.
2.3.4.0 6 щ и е правила
Если определитель файла, на который ссылается имя-файла-1, является внешним определителем файла (ч. 10, п. 4.5), все статьи управления файлом в единице исполнения, которые ссылаются на этот определитель файла, должны иметь:
одну и ту же спецификацию фразы OPTIONAL (НЕОБЯЗАТЕЛЬНОГО);
корректную спецификацию для имени-реализации-1 или литерала-1 во фразе ASSIGN (НАЗНАЧИТЬ). Правила корректности имени-реализации-1 и литер ала-1 определяются реализацией;
одно и то же значение целого-1 во фразе RESERVE (РЕЗЕРВИРОВАТЬ)^
одну и ту же организацию;
один и тот же метод доступа.
ту же статью описания данных для имени-данного-1 с тем же относительным размещением в соответствующей записи;
ту же статью описания данных для имени-данного-2, то же относительное размещение в соответствующей записи, то же число дополнительных ключей записи и ту же фразу DUPLICATES (С -ДУБЛИРОВАНИЕМ).
Для данных внешней среды принимается внутренний набор литер.
Для индексного файла предполагается программный алфавит, связанный с внутренним набором литер. Он определяет последовательность значений заданного ключа ссылки, используемого для последовательной обработки файла.
Фраза OPTIONAL (НЕОБЯЗАТЕЛЬНОГО) применима только к файлам, открытым в режиме ввода, ввода-вывода или дополнения. Ее указание требуется для файлов, которые могут отсутствовать во время выполнения объектной программы.
Фраза ASSIGN (НАЗНАЧИТЬ) задает связь между файлом, на который ссылается имя-файла-1, и запоминающей средой, на которую ссылается имя-реализации-1 или литер ал-1.
Фраза RESERVE (РЕЗЕРВИРОВАТЬ) для модуля индексного ввода-вывода та же, что и для модуля последовательного ввода-вывода. Описание фразы RESERVE (РЕЗЕРВИРОВАТЬ) находится в ч. 7, п. 2.9).
Фраза FILE STATUS (СОСТОЯНИЕ ФАЙЛА) для модуля индексного ввода-вывода та же, что и для модуля последовательного ввода-вывода. Описание фразы FILE STATUS (СОСТОЯНИЕ ФАЙЛА) находится в ч. 7, п. 2.5. Содержимое данного, связанного с фразой FILE STATUS .(СОСТОЯНИЕ ФАЙЛА) индексного файла, определяется в п. 1.3.4 настоящей части.
Далее представлены фразы ACCESS MODE (ДОСТУП), [Al7iWJXTE^E^dTDl<ETTA~0lT0nHHTEnbHbIH’K^ra4'3A-| [ПИСИ),I ORGANIZATION IS INDEXED (ОРГАНИЗАЦИЯ ИНДЕКСНАЯ), RECORD KEY (КЛЮЧ ЗАПИСИ),
Фраза ACCESS MODE (ДОСТУП)
Назначение
Фраза ACCESS MODE (ДОСТУП) задает порядок, в котором осуществляется доступ к записям в файле.
Общий формат
S
ACCESS MODE IS
EQUENTIAL RANDOMDYNAMIC
П
ДОСТУП
ОСЛЕДОВАТЕЛЬНЫЙ ПРОИЗВОЛЬНЫЙ [динамическийСинтаксические правила
Фраза ACCESS MODE IS RANDOM (ДОСТУП ПРОИЗВОЛЬНЫЙ) не должна употребляться для имен-файлов, указан- •ных во фразах USING (ИСПОЛЬЗУЯ) или GIVING (ПОЛУЧАЯ) операторов SORT (СОРТИРОВАТЬ) и MERGE (СЛИТЬ).
Общие правила
Если фраза ACCESS MODE (ДОСТУП) не задана, предполагается последовательный доступ.
Если доступ последовательный, записи становятся доступными в последовательности, диктуемой организацией файла. Для индексного файла эта последовательность является возрастающей по заданному ключу ссылки соответственно алфавитной упорядоченности файла.
Если доступ произвольный, значение ключа записи для индексного файла указывает требуемую запись.
Если доступ динамический, доступ к записям файла может быть последовательным и (или) произвольным.
Если соответствующий определитель файла является внешним определителем файла, то каждая статья управления файлом в единице исполнения, связанная с этим определителем файла, должна указывать один и тот же метод доступа.
Фраза ALTERNATE RECORD KEY (ДОПОЛНИТЕЛЬНЫЙ КЛЮЧ ЗАПИСИ)
Назначение
Фраза ALTERNATE RECORD KEY (ДОПОЛНИТЕЛЬНЫЙ КЛЮЧ ЗАПИСИ) указывает путь доступа к записям индексного файла по дополнительному ключу записи.
Общий формат
ALTERNATE RECORD KEY IS имя-данного-1 [WITH DUPLICATES]ДОПОЛНИТЕЛЬНЫЙ КЛЮЧ ЗАПИСИ имя-данного-1 ТСЦУБЛИРОВАНИЕМТ
Синтаксические правила
Имя-данного-1 может уточняться.
Имя-данного-1 должно определяться как буквенноцифровое данное в статье описание записи, соответствующей имени-файла, которой подчинена фраза ALTERNATE RECORD KEY (ДОПОЛНИТЕЛЬНЫЙ КЛЮЧ ЗАПИСИ).
Имя-данного-1 не должно относиться к групповому данному, содержащему переменно повторяющееся данное.
Имя-данного-1 не должно относиться к данному, самая левая позиция литеры которого соответствует самой левой позиции литеры основного ключа записи или других дополнительных ключей записи, связанных с этим файлом.
Если индексный файл содержит записи переменной длины, каждый дополнительный ключ записи должен содержаться в первых х позициях литер записи, где х равно минимальному размеру записи, определенному для файла (см. ч. 7, п. 3.8).
Общие правила
Фраза ALTERNATE RECORD KEY (ДОПОЛНИТЕЛЬНЫЙ КЛЮЧ ЗАПИСИ) указывает дополнительный ключ записи для файла, к которому относится эта фраза.
Описания данных имя-данного-1, а также их относительное размещение внутри записи должны быть такими же, как и при создании файла. Число дополнительных ключей для файла должно быть таким же, как и при создании файла.
Фраза WITH DUPLICATES (С ДУБЛИРОВАНИЕМ) указывает, что значение дополнительного ключа записи может дублироваться в некоторых записях файла. Если фраза WITH DUPLICATES (С ДУБЛИРОВАНИЕМ) не указана, значение дополнительного ключа записи не может дублироваться в записях файла.
Если файл имеет несколько статей описания записи, достаточно описать имя-данного-1 в одной из этих статей описания записи. На идентичные позиции литер, представленные именем- данного-1 в какой-либо статье описания записи, неявно ссылаются ключи для остальных статей описания записи этого файла.
Если соответствующий определитель файла является внешним определителем файла, каждая статья управления файлом в единице исполнения, соответствующая этому определителю файла, должна определять ту же статью описания данных для имени-данного-1, то же относительное размещение внутри соответствующей записи, то же количество дополнительных ключей записи и ту же фразу WITH DUPLICATES (С ДУБЛИРОВАНИЕМ).