успешное завершение. Оператор ввода-вывода выполнился успешно;
в конце. Оператор последовательного чтения был выполнен неуспешно из-за того, что возникло условие конца файла;
ошибка ключа. Оператор ввода-вывода выполнен неуспешно из-за того, что возникло условие ошибки ключа;
постоянная ошибка. Оператор ввода-вывода выполнен неуспешно в результате ошибки, которая исключает дальнейшую обработку файла. Выполняются все заданные процедуры обработки ошибочных ситуаций. Условие постоянной ошибки остается действующим на вес последующие операции ввода-вывода файла до тех пор, пока не будут вызваны определенные реализацией средства для устранения условия постоянной ошибки;
логическая ошибка. Оператор ввода-вывода выполнен неуспешно из-за недопустимой последовательности операций ввода- вывода, выполняемых над файлом, или в результате нарушения ограничений, заданных пользователем.
ошибка, определяемая реализацией. Оператор ввода-вывода выполнен неуспешно в результате возникновения условия, определенного реализацией.
Ниже приводится список значений, помещаемых в состояние ввода-вывода для перечисленных выше условий, возникающих в результате выполнения операций ввода-вывода для относительного файла. Если применимо более одного значения, значение, которое помещается в состояние ввода-вывода, определяется реализацией.
Успешное завершение
Состояние ввода-вывода = 00. Оператор ввода-вывода выполнился успешно и нет никакой другой доступной информации об операции ввода-вывода.
Состояние ввода-вывода=04. Оператор READ (ЧИТАТЬ) выполнился успешно, но длина обрабатываемой записи не соответствует фиксированным свойствам этого файла.
Состояние ввода-вывода = 05. Оператор OPEN (ОТКРЫТЬ) успешно выполнился, но указанный в нем необязатель- [ ный файл во время выполнения оператора OPEN (ОТКРЫТЬ) ; отсутствует. Если режим открытия 1-0 (ВХОДНОИ-ВЫХОД- | НОЙ) или EXTEND (ДОПОЛНЯЕМЫЙ), файл будет созда- і ваться.
Условие «в конце» с неуспешным завершением
Состояние ввода-вывода=10. Делается попытка выполнить последовательный оператор READ (ЧИТАТЬ), а в файле не существует следующей логической записи из-за того, что:
достигнут конец файла;
делается попытка выполнить последовательный оператор READ (ЧИТАТЬ) в первый раз для отсутствующего необязательного входного файла. і
Состояние ввода-вывода= 14.
Делается попытка выполнить последовательный оператор READ (ЧИТАТЬ) для относительного файла, и число значащих цифр в относительном номере записи больше, чем размер относительного ключа, описанного для файла.
Условие ошибки ключа с неуспешным завершением
Состояние ввода-вывода=22. Сделана попытка записать запись, в результате которой был бы создан дублирующий ключ в относительном файле.
Состояние ввода-вывода = 23. Это условие возникает, если:
сделана попытка произвольного доступа к записи, которой нет в файле, или
сделана попытка выполнить оператор START (ПОДВЕС- ТИ) или READ (ЧИТАТЬ) с произвольным доступом для необязательного входного файла, который отсутствует.
Состояние ввода-вывода=24. Сделана попытка занесения записей в относительный файл вне его границ, определенных внешним образом. Способ определения границ описывается реализацией. Возможно, был применен оператор последовательной запи- 45
6си в относительный файл и число значащих цифр в относительном номере записи больше, чем размер данного относительный ключ, определенного для файла.
Условие постоянной ошибки с неуспешным завершением
Состояние ввода-вывода = 30. Возникла постоянная ошибка и нет никакой другой доступной информации об операции ввода- вывода.
Состояние ввода-вывода = 35. Постоянная ошибка возникла из-за того, что делается попытка выполнить оператор OPEN (ОТКРЫТЬ) с фразой INPUT (ВХОДНОЙ), 1-0 (ВХОДНОЙ- ВЫХОДНОЙ) или EXTEND (ДОПОЛНЯЕМЫЙ) для файла, который обязательно должен присутствовать, но не присутствует.
Состояние ввода-вывода 37. Постоянная ошибка возникла из-за того, что оператор OPEN (ОТКРЫТЬ) выдан для файла, который не поддерживает режим, заданный в операторе OPEN (ОТКРЫТЬ). Возможны следующие нарушения:
задана фраза I EXTEND (ДОПОЛНЯЕМЫЙ) или / OUTPUT (ВЫХОДНОЙ), а файл не допускает операции записи;
задана фраза 1-0 (ВХОДНОЙ-ВЫХОДНОЙ), а файл не допускает операции ввода и вывода, которые разрешены для относительного файла, открываемого в режиме ввода-вывода;
задана фраза INPUT (ВХОДНОЙ), а файл не допускает операции чтения.
Состояние ввода-вывода = 38. Постоянная ошибка возникла из-за того, что выдан оператор OPEN (ОТКРЫТЬ) для файла, ранее закрытого с замком.
Состояние ввода-вывода = 39. Оператор OPEN (ОТКРЫТЬ) завершился неуспешно из-за обнаруженного для -лого файла несоответствия фиксированных свойств файла и свойств, заданных в программе.
Условие логической ошибки с неуспешным завершением
Состояние ввода-вывода = 41, Оператор OPEN (ОТКРЫТЬ) выдан для открытого файла.
Состояние ввода-вывода = 42. Оператор CLOSE (ЗАКРЫТЬ) выдан для неоткрытого файла.
Состояние ввода-вывода = 43. При последовательном методе доступа последний оператор ввода-вывода, выполненный для файла до выполнения оператора DELETE (УДАЛИТЬ) или REWRITE (ОБНОВИТЬ), не является успешно выполненным оператором READ (ЧИТАТЬ).
Состояние ввода-вывода = 44. Нарушение границ возникает по следующим причинам:
совершена попытка записать или обновить запись, которая длиннее максимально допустимой или короче минимально допустимой в соответствии с фразой RECORD IS VARYING (В ЗАПИСИ ПЕРЕМЕННОЕ ЧИСЛО), связанной с именем- файла;
на уровне 1 сделана попытка обновить запись относительного файла, а размер заменяющей записи отличен от размера заменяемой записи.
Состояние ввода-вывода = 46. Выдан оператор последовательного чтения для файла, открытого в режиме ввода или ввода-вывода, и не была установлена правильная следующая запись по одной из следующих причин:
предыдущий оператор START (ПОДВЕСТИ) закончился | неуспешно, или I ' ’ " ’ '
предыдущий оператор READ (ЧИТАТЬ) закончился неуспешно, но не вызвал условие «в конце», или
предыдущий оператор READ (ЧИТАТЬ) вызвал условие «в конце».
Состояние ввода-вывода = 47. Выл выдач оператор READ (ЧИТАТЬ) или START (ПОДВЕСТИ) | для файла, не открытого в режиме ввода или ввода-вывода.
Состояние ввода-вывода = 48. Был выдан оператор WRITE (ПИСАТЬ) для файла, не открытого в режиме ввода-вывода, вывода I или дополнения .
Состояние ввода-вывода = 49. Был выдан оператор DELETE (УДАЛИТЬ) или REWRITE (ОБНОВИТЬ) для файла, не открытого в режиме ввода-вывода.
Определяемое реализацией условие с неуспешным завершением
а) Состояние ввода-вывода = 9х. Существуют определяемые реализацией условия. Эти условия не должны дублировать никакие условия, определенные для значений от 00 до 49 состояния ввода-вывода. Значения х определяются реализацией.
1.3.5. У с л о в и е ошибки ключа
Условие ошибки ключа может возникнуть в результате выполнения операторов DELETE (УДАЛИТЬ), READ (ЧИТАТЬ), REWRITE (ОБНОВИТЬ), [START (ПОДВЕСТИ) j или WRITE (ПИСАТЬ). Когда возникает условие ошибки ключа, оператор ввода-вывода, вызвавший эту ситуацию, является неуспешным и файл не изменяется (пп. 4.3, 4.5-—4.7, 4.9 настоящей части).
Если условие ошибки ключа возникает после выполнения операции ввода-вывода, определенной в операторе ввода-вывода, то происходит следующие действия в указанном порядке:
состояние ввода-вывода определителя файла, связанного с оператором, устанавливается в значение, определяющее условие ошибки ключа (см. и. 1.3.4 настоящей части);
если в операторе ввода-вывода указана фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА), то никакая процедура USE AFTER EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ ПРОЦЕДУРЫ ОШИБКИ), связанная с определителем файла, не выполняется, и управление передается повелительному оператору, указанному во фразе INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА). Выполнение продолжается в соответствии с правилами для каждого оператора, указанного в этом повелительном операторе. Едзи выполняется оператор ветвления процедуры или условный оператор, который вызывает явную передачу управления, то управление передается в соответствии с правилами для этого оператора; в противном случае после завершения выполнения повелительного оператора, указанного во фразе INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА), управление передается в конец оператора ввода-вывода, а фраза NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА), если она указана, игнорируется (п. 4.8 настоящей части);
если в операторе ввода-вывода фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) не указана, то с определителем файла должна быть связана процедура USE AFTER EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ ПРОЦЕДУРЫ ОШИБКИ), и эта процедура выполняется, а управление передастся в соответствии с правилами оператора USE (ИСПОЛЬЗОВАТЬ). Если указана фраза NOT INVALID 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.7, 4.9 настоящей части).
При обнаружении условия противоречия свойств файла выполняются следующие действия в указанном ниже порядке:
в состояние ввода-вывода, связанное с именем файла, помещается значение, указывающее на условие противоречия свойств файла (см. п. 1.3.5 настоящей части);
если для данного имени-файла задана процедура USE AFTER EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ ПРОЦЕДУРЫ ОШИБКИ), выполняется указанная процедура.
РАЗДЕЛ ОБОРУДОВАНИЯ В МОДУЛЕ ОТНОСИТЕЛЬНОГО
ВВОДА-ВЫВОДА
Секция ввода-вывода
Информация, относящаяся к секции ввода-вывода, находится в ч. 7, п. 2.1.
Параграф FILE-CONTROL (УПРАВЛЕНИЕ-ФАЙЛАМИ)
Информация о параграфе FILE-CONTROL (УПРАВЛЕНИЕ- ФАЙЛАМИ) находится в ч. 7, п. 2.2.
Статья управления файлом
Назначение
Статья управления файлом объявляет существенные физические свойства относительного файла.
Общий формат
SELECT ^OPTIONAL] | имя-файла-1
ASSIGN ТО имя-реализации-1
I литерал-1
[RESERVE целое-1 |
AREA AREAS |
|
|
[ORGANIZATION IS] RELATIVE
SEQUENTIAL [RELATIVE KEY IS
имя-данного-1]
R
RELATIVE KEY IS
ACCESS MODE IS ]
ANDOM 1Н I DYNAMIC I і имя-данного-1
[FILE STATUS IS имя-данного-2]
ДЛЯI [НЕ~дБЯЗАТЕЛыГогд]j имя-файла-1
НАЗНАЧИТЬ ’ имя’Реализации-1 ]
I литерал-1 I
[РЕЗЕРВИРОВАТЬ целое-1 ОБЛАСТЕЙ]
[
I ||даНАМИЧЕСКИЙ|
ОТНОСИТЕЛЬНЫЙ
ДОСТУП ’
[ОТНОСИТЕЛЬНЫЙ КЛЮЧ имя-данного-1] ПРОИЗВОЛЬНЫЙ ]
I КЛЮЧ имя-данного-1 [СОСТОЯНИЕ ФАЙЛА имя-данного-2].
Синтаксические правила
В статье управления файлом фраза SELECT (ДЛЯ) должна указываться первой. Фразы, которые следуют за фразой SELECT (ДЛЯ), могут появляться в любом порядке.
Каждое имя-файла из раздела данных должно быть определено в параграфе FILE-CONTROL (УПРАВЛЕНИЕ-ФАЙЛА- МИ) только один раз. Каждое имя-файла, указанное в фразе SELECT (ДЛЯ), должно иметь статью описания файла в разделе данных той же самой программы.
Литерал-1 должен быть нечисловым литералом и не должен быть стандартной константой. Значение и правила для допустимого содержимого имени-реализации-1 и значения литерала-1 опоеделяются реализацией.Общие правила
Если определитель файла, на который ссылается имя-фай- ла-1, является внешним определителем файла (ч. 10, п. 4.5), все статьи управления файлом в единице исполнения, которые ссылаются на этот определитель файла, должны иметь:
одну и ту же спецификацию фразы OPTIONAL (НЕОБЯЗАТЕЛЬНОГО);
корректную спецификацию для имени-реализации-1 или литерала-1 во фразе ASSIGN (НАЗНАЧИТЬ). Правила корректности пмени-реализации-1 и литерала-1 определяются реализацией;
одно и то же значение целого-1 во фразе RESERVE (РЕЗЕРВИРОВАТЬ);
одну и ту же организацию;
один и тот же метод доступа;