ГОСТ 22558-89 сторінка 59 з 116
Некоторые классы значений состояния ввода-вывода задают критические условия ошибки. К таким значениям относятся значения, которые начинаются с цифры 3 или 4, а также значения, начинающиеся с цифры 9, которые определяются реализацией как критические. Если значение состояния ввода—вывода для операции ввода—вывода задает такое условие ошибки, реализацией определяются действия, которые предпринимаются после выполнения применимой процедуры USE AFTER STANDARD EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ), или, если ни одна такая процедура не применима, после завершения стандартной системной процедуры обработки ошибок ввода-вывода. Состояние ввода-вывода задает одно из следующих условий, возникающих после завершения операции ввода-вывода:
успешное завершение. Оператор ввода-вывода выполнился успешно;
в конце. Оператор последовательного чтения был выполнен неуспешно из-за того, что возникло условие конца файла;
ошибка ключа. Оператор ввода-вывода выполнен неуспешно из-за того, что возникло условие ошибки ключа;
постоянная ошибка. Оператор ввода-вывода выполнен неуспешно в результате ошибки, которая исключает дальнейшую обработку файла. Выполняются все заданные процедуры обработки ошибочных ситуаций. Условие постоянной ошибки остается действующим на вес последующие операции ввода-вывода файла до тех пор, пока не будут вызваны определенные реализацией средства для устранения условия постоянной ошибки;
логическая ошибка. Оператор ввода-вывода выполнен неуспешно из-за недопустимой последовательности операций ввода- вывода, выполняемых над файлом, или в результате нарушения ограничений, заданных пользователем.
ошибка, определяемая реализацией. Оператор ввода-вывода выполнен неуспешно в результате возникновения условия, определенного реализацией.
Ниже приводится список значений, помещаемых в состояние ввода-вывода для перечисленных выше условий, возникающих в результате выполнения операций ввода-вывода для относительно
го файла. Если применимо более одного значения, значение, которое помещается в состояние ввода-вывода, определяется реализацией.
Успешное завершение
Состояние ввода-вывода = 00. Оператор ввода-вывода выполнился успешно и нет никакой другой доступной информации об операции ввода-вывода.
Состояние ввода-вывода=04. Оператор READ (ЧИТАТЬ) выполнился успешно, но длина обрабатываемой записи не соответствует фиксированным свойствам этого файла.
Состояние ввода-вывода = 05. Оператор OPEN (ОТКРЫТЬ) успешно выполнился, но указанный в нем необязатель- [ ный файл во время выполнения оператора OPEN (ОТКРЫТЬ) ; отсутствует. Если режим открытия 1-0 (ВХОДНОИ-ВЫХОД- | НОЙ) или EXTEND (ДОПОЛНЯЕМЫЙ), файл будет созда- і ваться.
Условие «в конце» с неуспешным завершением
Состояние ввода-вывода=10. Делается попытка выполнить последовательный оператор READ (ЧИТАТЬ), а в файле не существует следующей логической записи из-за того, что:
достигнут конец файла;
делается попытка выполнить последовательный оператор READ (ЧИТАТЬ) в первый раз для отсутствующего необязательного входного файла. і
Состояние ввода-вывода= 14.
Делается попытка выполнить последовательный оператор READ (ЧИТАТЬ) для относительного файла, и число значащих цифр в относительном номере записи больше, чем размер относительного ключа, описанного для файла.
Условие ошибки ключа с неуспешным завершением
Состояние ввода-вывода=22. Сделана попытка записать запись, в результате которой был бы создан дублирующий ключ в относительном файле.
Состояние ввода-вывода = 23. Это условие возникает, если:
сделана попытка произвольного доступа к записи, которой нет в файле, или
сделана попытка выполнить оператор START (ПОДВЕС- ТИ) или READ (ЧИТАТЬ) с произвольным доступом для необязательного входного файла, который отсутствует.
Состояние ввода-вывода=24. Сделана попытка занесения записей в относительный файл вне его границ, определенных внешним образом. Способ определения границ описывается реализацией. Возможно, был применен оператор последовательной запи- 456
си в относительный файл и число значащих цифр в относительном номере записи больше, чем размер данного относительный ключ, определенного для файла.
Условие постоянной ошибки с неуспешным завершением
Состояние ввода-вывода = 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 (РЕЗЕРВИРОВАТЬ);
одну и ту же организацию;
один и тот же метод доступа;
;>) одно и то же внешнее данное для имепи-даиного-1 во фразе RELATIVE key (ОТНОСИТЕЛЬНЫЙ КЛЮЧ).
Для данных внешней среды принимается внутренний набор литер.
Фраза OPTIONAL (НЕОБЯЗАТЕЛЬНОГО) примени” ма только к файлам, открытым в режиме ввода, ввода-вывода или дополнения. Ее указание требуется для файлов, которые могут отсутствовать во время выполнения объектной программы.
Фраза ASSIGN (НАЗНАЧИТЬ) задает связь между файлом, на который ссылается имя-файла-1, и запоминающей средой, ; на которую ссылается имя-реализации-1 или литерал-1.
Фраза RESERVE (РЕЗЕРВИРОВАТЬ) для модуля от- посителыюго ввода-вывода та же, что к для модуля последовательного ввода-вывода. Описание фразы RESERVE (РЕЗЕРВИРОВАТЬ) находится в ч. 7, и. 2.9.
Фраза FILE STATUS (СОСТОЯНИЕ ФАЙЛА) для модуля относительного ввода-вывода та же, что и для модуля пос- . ледователыюго ввода-вывода. Описание фразы FILE STATUS 1 (СОСТОЯНИЕ ФАЙЛА) находится в ч. 7, п. 2.5. Содержимое дан- ’ ного, связанного с фразой FILE STATUS (СОСТОЯНИЕ ФАЙЛА) ! относительного файла, определяется в п. 1.3.4 настоящей части. |
Фразы ACCESS MODE (ДОСТУП) и ORGANIZATION IS RELATIVE (ОРГАНИЗАЦИЯ ОТНОСИТЕЛЬНАЯ) описываются ниже.
Фраза ACCESS MODE (ДОСТУП)
Побачили розбіжність з офіційним текстом?