Некоторые классы значений состояния ввода-вывода задают критические условия ошибки. Условия, которые определены в реализации как критические, должны начинаться с цифр 3, 4 и 9. Если значение состояния ввода-вывода для операции ввода-вывода задает такое условие ошибки, реализацией определяются действия, которые предпринимаются после выполнения любой применимой по оператору USE AFTER STANDARD EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ) процедуры или, если ни одна такая процедура не применима, после завершения стандартной системной обработки ошибок ввода-вывода. Состояние ввода-вывода задает одно из следующих условий, возникающих после завершения операции ввода-вывода.
Успешное завершение. Оператор ввода-вывода выполнился успешно.
В конце. Оператор последовательного чтения был выпол-( нен неуспешно из-за того, что возникло условие конца файла.
Постоянная ошибка. Оператор ввода-вывода выполнен неуспешно в результате ошибки, которая исключает дальнейшую обработку файла. Выполняются все заданные процедуры обработки ошибочных ситуаций. Условие постоянной ошибки остается! действующим на все последующие операции ввода-вывода файла до тех пор, пока не будут вызваны определенные реализацией средства для устранения условия постоянной ошибки.
Логическая ошибка. Оператор ввода-вывода выполнен неуспешно из-за недопустимой последовательности операций ввода- вывода, выполняемых над файлом, или в результате нарушения ■ограничений, заданных пользователем.
Ошибка, определяемая реализацией. Оператор ввода- вывода выполнен неуспешно в результате возникновения условия, ■определенного реализацией.
Ниже приводится список значений, помещаемых в состояние ввода-вывода для перечисленных выше условий, возникающих в результате выполнения операций ввода-вывода для последовательного файла. Если применимо более одного значения, значение, которое помещается в состояние ввода-вывода, определяется реализацией.
Успешное завершение
Состояние ввода-вывода = 00. Оператор выполнился успешно и нет никакой другой доступной информации об операции ввода-вывода. 1314
Состояние ввода-вывода = 04. Оператор READ (ЧИТАТЬ) выполнился успешно, но длина обрабатываемой записи не соответ- ствует фиксированным свойствам этого файла.
Состояние ввода-вывода = 05. Оператор OPEN (ОТКРЫТЬ) успешно выполнился, но указанный в нем необязательный файл во время выполнения оператора OPEN (ОТКРЫТЬ) отсутствует. Если режим открытия 1-0 (ВХОДНОЙ-ВЫХОД- НОЙ) или EXTEND (ДОПОЛНЯЕМЫЙ), файл будет создава- ться.
Состояние ввода-вывода = 07. Оператор ввода-вывода успешно выполнился. Однако для оператора CLOSE (ЗАКРЫТЬ) с фразами | NO РЕШХО“СБЕ1Г"ПЁРЕМОТКИ)Г| REEL/UNIT (КАТУШКУ/ТОМ)J или FOR REMOVAL (С УДАЛЕНИЕМ), или для оператора OPEN (ОТКРЫТЬ) с фразой NO REWIND (БЕЗ ПЕРЕМОТКИ) | заданный файл расположен в среде, к которой неприменимо понятие катушки (тома).
Условие в конце с неуспешным завершением
а) Состояние ввода-вывода=10. Встретился последовательный оператор READ (ЧИТАТЬ), а в файле не существует следующей логической записи из-за того, что:
встретился конец файла;
оператор READ (ЧИТАТЬ) применяется первый раз для | отсутствующего необязательного входного файла. |
Состояние ввода-вывода = 34. Возникла постоянная ошибка из-за нарушения границ; была совершена попытка записать запись за внешне определенные границы файла. Способ, которым задаются эти границы, определяется реализацией.
Состояние ввода-вывода = 35. Постоянная ошибка возникла из-за того, что оператор OPEN (ОТКРЫТЬ) с фразой INPUT (ВХОДНОЙ), 1-0 (ВХОДНОЙ-ВЫХОДНОИ) I или EXTEND (ДОПОЛНЯЕМЫЙ) выдан для отсутствующего | обязательного J файла.
Состояние ввода-вывода = 37. Постоянная ошибка возникла из-за того, что оператор OPEN (ОТКРЫТЬ) выдан для файла, который не поддерживает режим, заданный в операторе OPEN (ОТКРЫТЬ). Возможны следующие нарушения:
задана фраза [EXTEND (ДОПОЛНЯЕМЫЙ) или / OUTPUT (ВЫХОДНОЙ), а файл не допускает операции записи;
задана фраза 1-0 (ВХОДНОЙ-ВЫХОДНОЙ), а файл не допускает операции ввода и вывода, которые разрешены для последовательного файла, открываемого в режиме 1-0 (ВХОДНОЙ- ВЫХОДНОЙ);
задана фраза INPUT (ВХОДНОЙ), а файл не допускает операции чтения.
Состояние ввода-вывода = 38. Постоянная ошибка возникла из-за того, что выдан оператор OPEN (ОТКРЫТЬ) для файла, ранее закрытого с замком.
Состояние ввода-вывода = 39. Оператор OPEN (ОТКРЫТЬ) завершился неуспешно из-за обнаруженного для этого файла несоответствия фиксированных свойств файла и свойств, заданных в программе.
Условие логической ошибки с неуспешным завершением
Состояние ввода-вывода = 41. Оператор OPEN (ОТКРЫТЬ) выдан для открытого файла.
Состояние ввода-вывода=42. Оператор CLOSE (ЗАКРЫТЬ) выдан для неоткрытого файла.
Состояние ввода-вывода = 43. В случае файла массовой памяти в режиме последовательного доступа последним оператором ввода-вывода, выполненным для соответствующего файла перед выполнением оператора REWRITE (ОБНОВИТЬ), не был успешно выполненный оператор READ (ЧИТАТЬ).
Состояние ввода-вывода = 44. Нарушение границ возникает по следующим причинам:
сделана попытка записать или обновить запись, длиннее максимально допустимой или короче минимально допустимой в соответствии с фразой RECORD IS VARYING (В ЗАПИСИ ПЕРЕМЕННОЕ ЧИСЛО) для данного имени файла;
сделана попытка обновить запись последовательного файла, а размер записи отличен от размера заменяемой записи.
Состояние ввода-вывода = 46. Выдан оператор последовательного чтения для файла, открытого в режиме ввода или ввода- вывода, и не была установлена следующая запись по одной из следующих причин:
предыдущий оператор READ (ЧИТАТЬ) закончился неуспешно, но не вызвал условие <в конце»;
предыдущий оператор READ (ЧИТАТЬ) вызвал условие «в конце».
Состояние ввода-вывода = 47. Был выдан оператор READ (ЧИТАТЬ) для файла, не открытого в режиме ввода или ввода- вывода.
Состояние ввода-вывода = 48. Был выдан оператор WRITE (ПИСАТЬ) для файла, не открытого в режиме вывода или дополнения.
Состояние ввода-вывода = 49. Был выдан оператор REWRITE (ОБНОВИТЬ) для файла, не открытого в режиме ввода- вывода.
Условие неуспешного завершения, определяемое реализацией
а) Состояние ввода-вывода = 9х. Существуют определяемые реализацией условия. Эти условия не должны дублировать никакие условия, определенные для значений от 00 до 49 состояния ввода-вывода. Значение х определяется реализацией.
У с л о в и е «в конце»
Условие «в конце» может возникнуть в результате выполнения оператора READ (ЧИТАТЬ) (п. 4.4 настоящей части).
У с л о в и е противоречия свойств файла
Условие противоречия свойств файла может возникнуть в результате выполнения операторов OPEN (ОТКРЫТЬ), REWRITE (ОБНОВИТЬ) и WRITE (ПИСАТЬ). При возникновении условия противоречия свойств файла выполнение оператора ввода-вывода, который обнаружил это условие, считается неуспешным и файл не подвергается воздействию (пп. 4.3, 4.5, 4.7 настоящей части).
При обнаружении условия противоречия свойств файла выполняются следующие действия в указанном ниже порядке:
в состояние ввода-вывода данного файла помещается значение, указывающее на условие противоречия свойств файла (см. п. 1.3.5 настоящей части);если для данного имени файла задан оператор USE AFTER EXCEPTION/ERROR (ИСПОЛЬЗОВАТЬ ПОСЛЕ ПРОЦЕДУРЫ ОШИБКИ), выполняется указанная в нем процедура.
1.3.8. Специальный регистр LINAGE-COUNTER (С Ч Е Т Ч И К - В Е Р СТ К И)
Зарезервированное слово LINAGE-COUNTER (СЧЕТЧИК- ВЕРСТКИ) является именем для счетчика строк, порождаемого, если в статье описания файла задана фраза LINAGE (ВЕРСТКА) (п. 3.7 настоящей части). Этот счетчик неявно описан как целое без знака, размер которого равен размеру целого-1 или данного, заданного именем-данного-1 во фразе LINAGE (ВЕРСТКА). LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) мо- i жет использоваться только в операторах раздела процедур, однако его значение может изменить только система управления ; вводом-выводом.
РАЗДЕЛ ОБОРУДОВАНИЯ В МОДУЛЕ ПОСЛЕДОВАТЕЛЬНОГО
ВВОДА ВЫВОДА
Секция ввода-вывода
Секция ввода-вывода располагается в разделе оборудования исходной программы. Секция ввода-вывода содержит информацию, необходимую для управления передачей и обработкой данных между внешней памятью и объектной программой. Секция ввода-вывода в разделе оборудования исходной Кобол-программы необязательна.
Общий формат секции ввода-вывода показан ниже. INPUT-OUTPUT SECTION.
FILE-CONTROL, {статья-управления-файлом} ...
[I-O-CONTROL. [статья-управления-вводом-выводом] ]
СЕКЦИЯ ВВОДА-ВЫВОДА.
УПРАВЛЕНИЕ-ФАЙЛАМИ. {статья-управления-файлом}. . .
УПРАВ ЛЕНИЕ-ВВОДОМ-ВЫВОДОМ. [статья-управления- вводом-выводом] ]
Параграф FILE-CONTROL (УПРАВЛЕНИЕ-ФАЙЛАМИ)
Назначение
Параграф FILE-CONTROL (УПРАВЛЕНИЕ-ФАЙЛАМИ) позволяет задать относящуюся к файлу информацию.
О б щ и й формат
FILE-CONTROL, {статья-управления-файлом} ...
УПРАВЛЕНИЕ-ФАЙЛАМИ. {статья-управления-файлом} ...
Статья управления файлом
Назначение
Статья управления файлом объявляет существенные физиче* ские свойства последовательного файла.
О б щ и й формат
ASSIGN ТО
RESERVE целое-1 |
' AREA ]] . AREAS |
имя-реализации-1 литерал-1
SELECT |
OPTIONAL |
имя-файла-1 |
[[ORGANIZATION IS] SEQUENTIAL]
|
PADDING CHARACTER IS f имя'Данног°-1 1 [ литерал-2 J RECORD DELIMITER IS ( S-ANDA^-—1 [ имя-реализации-2 |
1 -I |
[ACCESS MODE IS SEQUENTIAL] |
[FILE STATUS IS имя-данного-2].
для |
[НЕОБЯЗАТЕЛЬНОГО] |
имя-файла-1 |
„ . ^T.. ( имя-реализации-1 1
НАЗНАЧИТЬ ] , ...
[литерал-1 I
[РЕЗЕРВИРОВАТЬ целое-1 ОБЛАСТЕЙ]
[[ОРГАНИЗАЦИЯ] ПОСЛЕДОВАТЕЛЬНАЯ]
|
ЛИТЕРА ЗАПОЛНИТЕЛЬ { |
имя-данного-1 1 |
|
|
литерал-2 J ] |
|
ОГРАНИЧИТЕЛЬ ЗАПИСИ |
[ СТАНДАРТ-А 1 1 |
|
|
1 имя-реализации-2 [ |
[ДОСТУП ПОСЛЕДОВАТЕЛЬНЫЙ]
[СОСТОЯНИЕ ФАЙЛА имя-данного-2].Синтаксические правила
В статье управления файлом фраза SELECT (ДЛЯ) Должна указываться первой. Фразы, которые следуют за фразой SELECT (ДЛЯ), могут появляться в любом порядке.
Каждое имя-файла из раздела данных должно быть определено в параграфе FILE-CONTROL (УПРАВЛЕНИЕ-ФАЙЛА- МИ) только один раз. Каждое имя-файла, указанное во фразе SELECT (ДЛЯ), должно иметь статью описания файла в разделе данных той же самой программы.
Литерал-1 должен быть нечисловым литералом и не должен быть стандартной константой. Значение и правила для допустимого содержимого имени-реализации-I и значения литерала-1 определяются реализацией.
О б щ и е правила
Если определитель файла, на который ссылается имя-файла-1, является внешним определителем файла (ч. 10, п. 4.5), все статьи управления файлом в единице исполнения, которые ссылаются на этот определитель файла, должны иметь:
одну и ту же спецификацию фразы OPTIONAL (НЕОБЯЗАТЕЛЬНОГО);
корректную спецификацию для имени-реализации-1 или литерала-1 во фразе ASSIGN (НАЗНАЧИТЬ). Правила корректности имени-реализации-1 и литерала-1 определяются реализацией;
корректную спецификацию для имени-реализации-2 во фразе RECORD DELIMITER (ОГРАНИЧИТЕЛЬ ЗАПИСИ). Правила корректности имени-реализации-2 определяются реализацией;
одно и то же значение целого-1 во фразе RESERVE (РЕ- ЗЕРВИРОВАТЬ);
одну и ту же организацию;
один и тот же метод доступа;
одну и ту же спецификацию фразы PADDING CHARACTER (ЛИТЕРА ЗАПОЛНИТЕЛЬ).
Фраза OPTIONAL (НЕОБЯЗАТЕЛЬНОГО) применима только к файлам, открытым в режиме ввода, ввода-вывода или дополнения. Ее указание требуется для файлов, которые могут отсутствовать во время выполнения объектной програм- м ы.
Фраза SELECT (ДЛЯ) задает связь между файлом, на который ссылается имя-файла-1, и средой памяти, на которую ссылается имя-реализации-1 или литерал-1.
Фразы ACCESS MODE (ДОСТУП), FILE STATUS (СОСТОЯНИЕ ФАЙЛА), ORGANIZATION IS SEQUENTIAL (ОРГАНИЗАЦИЯ ПОСЛЕДОВАТЕЛЬНАЯ),! PADDING CHARACTER
(ЛИТЕРА ЗАПОЛНИТЕЛЬ), RECORD DELIMITER (ОГРАНИЧИТЕЛЬ ЗАПИСИ) и RESERVE (РЕЗЕРВИРОВАТЬ)
сываются на следующих страницах.
Фраза ACCESS MODE (ДОСТУП)
Назначение
Фраза ACCESS MODE (ДОСТУП) задает порядок, в котором осуществляется доступ к записям в файле.
Общий формат
ACCESS MODE IS SEQUENTIAL
ДОСТУП ПОСЛЕДОВАТЕЛЬНЫЙ
Общие правила
Если фраза ACCESS MODE (ДОСТУП) не задана, предполагается последовательный доступ.
Доступ к записям в файле осуществляется в последовательности, диктуемой организацией файла. Для последовательных файлов эта последовательность задается отношением предшественник—преемник, устанавливаемым выполнением операторов WRITE (ПИСАТЬ) при создании или дополнении файла.
Если соответствующий определитель файла является внешним определителем файла, каждая статья управления файлом в единице исполнения, соответствующая этому определителю файла, должна задавать один и тот же метод доступа.