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

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

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

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

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

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

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

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

  1. Состояние ввода-вывода = 00. Оператор ввода-вывода выпол­нился успешно и нет никакой другой доступной информации об операции ввода-вывода.

  2. Состояние ввода-вывода=04. Оператор READ (ЧИТАТЬ) выполнился успешно, но длина обрабатываемой записи не соот­ветствует фиксированным свойствам этого файла.

  3. Состояние ввода-вывода = 05. Оператор OPEN (ОТК­РЫТЬ) успешно выполнился, но указанный в нем необязатель- [ ный файл во время выполнения оператора OPEN (ОТКРЫТЬ) ; отсутствует. Если режим открытия 1-0 (ВХОДНОИ-ВЫХОД- | НОЙ) или EXTEND (ДОПОЛНЯЕМЫЙ), файл будет созда- і ваться.

  1. Условие «в конце» с неуспешным завершением

  1. Состояние ввода-вывода=10. Делается попытка выполнить последовательный оператор READ (ЧИТАТЬ), а в файле не су­ществует следующей логической записи из-за того, что:

  1. достигнут конец файла;

  2. делается попытка выполнить последовательный оператор READ (ЧИТАТЬ) в первый раз для отсутствующего необяза­тельного входного файла. і

  1. Состояние ввода-вывода= 14.

Делается попытка выполнить последовательный оператор READ (ЧИТАТЬ) для относительного файла, и число значащих цифр в относительном номере записи больше, чем размер относи­тельного ключа, описанного для файла.

  1. Условие ошибки ключа с неуспешным завершением

  1. Состояние ввода-вывода=22. Сделана попытка записать запись, в результате которой был бы создан дублирующий ключ в относительном файле.

  2. Состояние ввода-вывода = 23. Это условие возникает, если:

  1. сделана попытка произвольного доступа к записи, которой нет в файле, или

  2. сделана попытка выполнить оператор START (ПОДВЕС- ТИ) или READ (ЧИТАТЬ) с произвольным доступом для не­обязательного входного файла, который отсутствует.

Состояние ввода-вывода=24. Сделана попытка занесения записей в относительный файл вне его границ, определенных внеш­ним образом. Способ определения границ описывается реализа­цией. Возможно, был применен оператор последовательной запи- 45

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

  1. Условие постоянной ошибки с неуспешным завершением

  1. Состояние ввода-вывода = 30. Возникла постоянная ошибка и нет никакой другой доступной информации об операции ввода- вывода.

  2. Состояние ввода-вывода = 35. Постоянная ошибка возник­ла из-за того, что делается попытка выполнить оператор OPEN (ОТКРЫТЬ) с фразой INPUT (ВХОДНОЙ), 1-0 (ВХОДНОЙ- ВЫХОДНОЙ) или EXTEND (ДОПОЛНЯЕМЫЙ) для файла, ко­торый обязательно должен присутствовать, но не присутствует.

  3. Состояние ввода-вывода 37. Постоянная ошибка возникла из-за того, что оператор OPEN (ОТКРЫТЬ) выдан для файла, ко­торый не поддерживает режим, заданный в операторе OPEN (ОТ­КРЫТЬ). Возможны следующие нарушения:

  4. задана фраза I EXTEND (ДОПОЛНЯЕМЫЙ) или / OUT­PUT (ВЫХОДНОЙ), а файл не допускает операции записи;

  5. задана фраза 1-0 (ВХОДНОЙ-ВЫХОДНОЙ), а файл не допускает операции ввода и вывода, которые разрешены для от­носительного файла, открываемого в режиме ввода-вывода;

  1. задана фраза INPUT (ВХОДНОЙ), а файл не допускает операции чтения.

  2. Состояние ввода-вывода = 38. Постоянная ошибка возникла из-за того, что выдан оператор OPEN (ОТКРЫТЬ) для файла, ра­нее закрытого с замком.

  3. Состояние ввода-вывода = 39. Оператор OPEN (ОТКРЫТЬ) завершился неуспешно из-за обнаруженного для -лого файла не­соответствия фиксированных свойств файла и свойств, заданных в программе.

  1. Условие логической ошибки с неуспешным завершением

  1. Состояние ввода-вывода = 41, Оператор OPEN (ОТКРЫТЬ) выдан для открытого файла.

  2. Состояние ввода-вывода = 42. Оператор CLOSE (ЗАК­РЫТЬ) выдан для неоткрытого файла.

  3. Состояние ввода-вывода = 43. При последовательном ме­тоде доступа последний оператор ввода-вывода, выполненный для файла до выполнения оператора DELETE (УДАЛИТЬ) или REWRITE (ОБНОВИТЬ), не является успешно выполненным опе­ратором READ (ЧИТАТЬ).

  4. Состояние ввода-вывода = 44. Нарушение границ возникает по следующим причинам:

  1. совершена попытка записать или обновить запись, кото­рая длиннее максимально допустимой или короче минимально допустимой в соответствии с фразой RECORD IS VARYING (В ЗАПИСИ ПЕРЕМЕННОЕ ЧИСЛО), связанной с именем- файла;

  2. на уровне 1 сделана попытка обновить запись относительно­го файла, а размер заменяющей записи отличен от размера заме­няемой записи.

  1. Состояние ввода-вывода = 46. Выдан оператор последова­тельного чтения для файла, открытого в режиме ввода или вво­да-вывода, и не была установлена правильная следующая запись по одной из следующих причин:

  1. предыдущий оператор START (ПОДВЕСТИ) закончился | неуспешно, или I ' ’ " ’ '

  2. предыдущий оператор READ (ЧИТАТЬ) закончился не­успешно, но не вызвал условие «в конце», или

  3. предыдущий оператор READ (ЧИТАТЬ) вызвал условие «в конце».

  1. Состояние ввода-вывода = 47. Выл выдач оператор READ (ЧИТАТЬ) или START (ПОДВЕСТИ) | для файла, не открыто­го в режиме ввода или ввода-вывода.

  2. Состояние ввода-вывода = 48. Был выдан оператор WRITE (ПИСАТЬ) для файла, не открытого в режиме ввода-вывода, вы­вода I или дополнения .

  3. Состояние ввода-вывода = 49. Был выдан оператор DELETE (УДАЛИТЬ) или REWRITE (ОБНОВИТЬ) для файла, не откры­того в режиме ввода-вывода.

  1. Определяемое реализацией условие с неуспешным завер­шением

а) Состояние ввода-вывода = 9х. Существуют определяемые реализацией условия. Эти условия не должны дублировать ника­кие условия, определенные для значений от 00 до 49 состояния ввода-вывода. Значения х определяются реализацией.

1.3.5. У с л о в и е ошибки ключа

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

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

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

  2. если в операторе ввода-вывода указана фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА), то никакая процедура USE AF­TER EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ ПРОЦЕДУРЫ ОШИБКИ), связанная с определителем файла, не выполняется, и управление передается повелительному оператору, указанному во фразе INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА). Выполнение продолжается в соответствии с правилами для каждого оператора, указанного в этом повелительном операторе. Едзи выполняется оператор ветвления процедуры или условный оператор, который вызывает явную передачу управления, то управление передается в соответствии с правилами для этого оператора; в противном слу­чае после завершения выполнения повелительного оператора, ука­занного во фразе INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА), уп­равление передается в конец оператора ввода-вывода, а фраза NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА), если она указана, игнорируется (п. 4.8 настоящей части);

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

Если после выполнения операции ввода-вывода, указанной в операторе ввода-вывода, условия ошибки ключа нет, то фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА), если она указана, иг­норируется. Состояние ввода-вывода определителя файла, свя­занного с оператором, обновляется, и выполняются следующие действия:

  1. если возникает условие ошибки, которое не является усло­вием ошибки ключа, то управление передается в соответствии с правилами оператора USE (ИСПОЛЬЗОВАТЬ), а затем выпол­няется процедура USE AFTER EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ ПРОЦЕДУРЫ ОШИБКИ), связанная с определителем файла (п. 4.8 настоящей части);

если условие ошибки не возникает, то управление передает­ся в конец оператора ввода-вывода или повелительному оператору, указанному во фразе NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮ­ЧА). В последнем случае выполнение продолжается в соответствии с правилами для каждого оператора, указанного в повелительном операторе. Если выполняется оператор ветвления процедуры или условный оператор, который вызывает явную передачу управле­ния, то управление передается в соответствии с правилами для этого оператора; в противном случае, после завершения выполне­ния повелительного оператора, указанного во фразе NOT INVA­LID KEY (БЕЗ ОШИБКИ КЛЮЧА), управление передается в ко­нец оператора ввода-вывода.

  1. У с л о в и е «в конце»

Условие «в конце» может возникнуть в результате выполнения оператора READ (ЧИТАТЬ) (и. 4.5 настоящей части).

  1. Условие противоречия свойств файла

Условие противоречия свойств файла может возникнуть в ре­зультате выполнения операторов OPEN (ОТКРЫТЬ), REWRITE (ОБНОВИТЬ) и WRITE (ПИСАТЬ). При возникновении условия противоречия свойств файла выполнение оператора ввода-вывода, который обнаружил это условие, считается неуспешным и файл не изменяется (пп. 4.4, 4.7, 4.9 настоящей части).

При обнаружении условия противоречия свойств файла вы­полняются следующие действия в указанном ниже порядке:

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

  2. если для данного имени-файла задана процедура USE AFTER EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ ПРОЦЕДУРЫ ОШИБКИ), выполняется указанная процедура.

  1. РАЗДЕЛ ОБОРУДОВАНИЯ В МОДУЛЕ ОТНОСИТЕЛЬНОГО
    ВВОДА-ВЫВОДА

    1. Секция ввода-вывода

Информация, относящаяся к секции ввода-вывода, находится в ч. 7, п. 2.1.

  1. Параграф FILE-CONTROL (УПРАВЛЕНИЕ-ФАЙЛАМИ)

Информация о параграфе FILE-CONTROL (УПРАВЛЕНИЕ- ФАЙЛАМИ) находится в ч. 7, п. 2.2.

  1. Статья управления файлом

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

Статья управления файлом объявляет существенные физические свойства относительного файла.

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

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].

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

  1. В статье управления файлом фраза SELECT (ДЛЯ) долж­на указываться первой. Фразы, которые следуют за фразой SE­LECT (ДЛЯ), могут появляться в любом порядке.

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

  1. Литерал-1 должен быть нечисловым литералом и не дол­жен быть стандартной константой. Значение и правила для допус­тимого содержимого имени-реализации-1 и значения литерала-1 опоеделяются реализацией.Общие правила

  1. Если определитель файла, на который ссылается имя-фай- ла-1, является внешним определителем файла (ч. 10, п. 4.5), все статьи управления файлом в единице исполнения, которые ссыла­ются на этот определитель файла, должны иметь:

  1. одну и ту же спецификацию фразы OPTIONAL (НЕОБЯ­ЗАТЕЛЬНОГО);

  2. корректную спецификацию для имени-реализации-1 или литерала-1 во фразе ASSIGN (НАЗНАЧИТЬ). Правила коррект­ности пмени-реализации-1 и литерала-1 определяются реализацией;

  3. одно и то же значение целого-1 во фразе RESERVE (РЕЗЕРВИРОВАТЬ);

  4. одну и ту же организацию;

  5. один и тот же метод доступа;