Перейти до вмісту
ГОСТ 22558-89
/ 116

Некоторые классы значений состояния ввода-вывода задают критические условия ошибки. К таким значениям относятся зна­чения, которые начинаются с цифры 3 или 4, а также значения, на­чинающиеся с цифры 9, которые определяются реализацией как критические. Если значение состояния ввода—вывода для опера­ции ввода—вывода задает такое условие ошибки, реализацией оп­ределяются действия, которые предпринимаются после выполне­ния применимой процедуры USE AFTER STANDARD EXCEP­TION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУ­РЫ ОШИБКИ), или, если ни одна такая процедура не примени­ма, после завершения стандартной системной процедуры обработ­ки ошибок ввода-вывода. Состояние ввода-вывода задает одно из следующих условий, возникающих после завершения операции ввода-вывода:

успешное завершение. Оператор ввода-вывода выполнил­ся успешно;

в конце. Оператор последовательного чтения был выпол­нен неуспешно из-за того, что возникло условие конца файла;

ошибка ключа. Оператор ввода-вывода выполнен неуспеш­но из-за того, что возникло условие ошибки ключа;

постоянная ошибка. Оператор ввода-вывода выполнен не­успешно в результате ошибки, которая исключает дальнейшую об­работку файла. Выполняются все заданные процедуры обработ­ки ошибочных ситуаций. Условие постоянной ошибки остается действующим на вес последующие операции ввода-вывода файла до тех пор, пока не будут вызваны определенные реализацией средства для устранения условия постоянной ошибки;

логическая ошибка. Оператор ввода-вывода выполнен неус­пешно из-за недопустимой последовательности операций ввода- вывода, выполняемых над файлом, или в результате нарушения ог­раничений, заданных пользователем.

ошибка, определяемая реализацией. Оператор ввода-вы­вода выполнен неуспешно в результате возникновения условия, определенного реализацией.

Ниже приводится список значений, помещаемых в состояние ввода-вывода для перечисленных выше условий, возникающих в результате выполнения операций ввода-вывода для относительно­

го файла. Если применимо более одного значения, значение, кото­рое помещается в состояние ввода-вывода, определяется реализа­цией.

Успешное завершение

Состояние ввода-вывода = 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 (ДОПОЛНЯЕМЫЙ) или / OUT­PUT (ВЫХОДНОЙ), а файл не допускает операции записи;

задана фраза 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 (ЧИТАТЬ), RE­WRITE (ОБНОВИТЬ), [START (ПОДВЕСТИ) j или WRITE (ПИСАТЬ). Когда возникает условие ошибки ключа, оператор ввода-вывода, вызвавший эту ситуацию, является неуспешным и файл не изменяется (пп. 4.3, 4.5-—4.7, 4.9 настоящей части).

Если условие ошибки ключа возникает после выполнения операции ввода-вывода, определенной в операторе ввода-вывода, то происходит следующие действия в указанном порядке:

состояние ввода-вывода определителя файла, связанного с оператором, устанавливается в значение, определяющее усло­вие ошибки ключа (см. и. 1.3.4 настоящей части);

если в операторе ввода-вывода указана фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА), то никакая процедура USE AF­TER 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 INVA­LID 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 (ДЛЯ) долж­на указываться первой. Фразы, которые следуют за фразой SE­LECT (ДЛЯ), могут появляться в любом порядке.

Каждое имя-файла из раздела данных должно быть опре­делено в параграфе FILE-CONTROL (УПРАВЛЕНИЕ-ФАЙЛА- МИ) только один раз. Каждое имя-файла, указанное в фразе SE­LECT (ДЛЯ), должно иметь статью описания файла в разделе данных той же самой программы.

Литерал-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 (ДОСТУП)

Побачили розбіжність з офіційним текстом?

Повідомити про неточність

Напишіть, що саме розходиться з офіційною публікацією. Код документа вкажіть у повідомленні — так ми швидше знайдемо потрібне місце.

Перейти до форми зворотного зв'язку

Дивіться також

Весь розділ →