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

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

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

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

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

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

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

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

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

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

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

  4. Состояние ввода-вывода = 07. Оператор ввода-вывода ус­пешно выполнился. Однако для оператора CLOSE (ЗАКРЫТЬ) с фразами | NO РЕШХО“СБЕ1Г"ПЁРЕМОТКИ)Г| REEL/UNIT (КАТУШКУ/ТОМ)J или FOR REMOVAL (С УДАЛЕНИЕМ), или для оператора OPEN (ОТКРЫТЬ) с фразой NO REWIND (БЕЗ ПЕРЕМОТКИ) | заданный файл расположен в среде, к ко­торой неприменимо понятие катушки (тома).

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

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

  1. встретился конец файла;

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

  1. Состояние ввода-вывода = 34. Возникла постоянная ошибка из-за нарушения границ; была совершена попытка записать запись за внешне определенные границы файла. Способ, которым зада­ются эти границы, определяется реализацией.

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

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

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

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

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

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

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

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

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

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

  3. Состояние ввода-вывода = 43. В случае файла массовой па­мяти в режиме последовательного доступа последним оператором ввода-вывода, выполненным для соответствующего файла перед выполнением оператора REWRITE (ОБНОВИТЬ), не был успешно выполненный оператор READ (ЧИТАТЬ).

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

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

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

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

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

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

  1. Состояние ввода-вывода = 47. Был выдан оператор READ (ЧИТАТЬ) для файла, не открытого в режиме ввода или ввода- вывода.

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

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

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

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

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

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

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

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

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

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

1.3.8. Специальный регистр LINAGE-COUN­TER (С Ч Е Т Ч И К - В Е Р СТ К И)

Зарезервированное слово LINAGE-COUNTER (СЧЕТЧИК- ВЕРСТКИ) является именем для счетчика строк, порождаемо­го, если в статье описания файла задана фраза LINAGE (ВЕР­СТКА) (п. 3.7 настоящей части). Этот счетчик неявно описан как целое без знака, размер которого равен размеру целого-1 или данного, заданного именем-данного-1 во фразе LINAGE (ВЕРСТКА). LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) мо- i жет использоваться только в операторах раздела процедур, од­нако его значение может изменить только система управления ; вводом-выводом.

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

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

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

Общий формат секции ввода-вывода показан ниже. INPUT-OUTPUT SECTION.

FILE-CONTROL, {статья-управления-файлом} ...

[I-O-CONTROL. [статья-управления-вводом-выводом] ]

СЕКЦИЯ ВВОДА-ВЫВОДА.

УПРАВЛЕНИЕ-ФАЙЛАМИ. {статья-управления-файлом}. . .

УПРАВ ЛЕНИЕ-ВВОДОМ-ВЫВОДОМ. [статья-управления- вводом-выводом] ]

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

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

Параграф FILE-CONTROL (УПРАВЛЕНИЕ-ФАЙЛАМИ) поз­воляет задать относящуюся к файлу информацию.

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

FILE-CONTROL, {статья-управления-файлом} ...



УПРАВЛЕНИЕ-ФАЙЛАМИ. {статья-управления-файлом} ...

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

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

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

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

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 [

[ДОСТУП ПОСЛЕДОВАТЕЛЬНЫЙ]

  1. [СОСТОЯНИЕ ФАЙЛА имя-данного-2].Синтаксические правила

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

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

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

  1. О б щ и е правила

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

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

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

  3. корректную спецификацию для имени-реализации-2 во фразе RECORD DELIMITER (ОГРАНИЧИТЕЛЬ ЗАПИСИ). Правила корректности имени-реализации-2 определяются реа­лизацией;

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

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

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

  7. одну и ту же спецификацию фразы PADDING CHARAC­TER (ЛИТЕРА ЗАПОЛНИТЕЛЬ).

  1. Фраза OPTIONAL (НЕОБЯЗАТЕЛЬНОГО) примени­ма только к файлам, открытым в режиме ввода, ввода-вывода или дополнения. Ее указание требуется для файлов, которые могут отсутствовать во время выполнения объектной програм- м ы.

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

  3. Фразы ACCESS MODE (ДОСТУП), FILE STATUS (СОС­ТОЯНИЕ ФАЙЛА), ORGANIZATION IS SEQUENTIAL (ОРГА­НИЗАЦИЯ ПОСЛЕДОВАТЕЛЬНАЯ),! PADDING CHARACTER

(ЛИТЕРА ЗАПОЛНИТЕЛЬ), RECORD DELIMITER (ОГРА­НИЧИТЕЛЬ ЗАПИСИ) и RESERVE (РЕЗЕРВИРОВАТЬ)

сываются на следующих страницах.

  1. Фраза ACCESS MODE (ДОСТУП)

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

Фраза ACCESS MODE (ДОСТУП) задает порядок, в котором осуществляется доступ к записям в файле.

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

ACCESS MODE IS SEQUENTIAL

ДОСТУП ПОСЛЕДОВАТЕЛЬНЫЙ

  1. Общие правила

  1. Если фраза ACCESS MODE (ДОСТУП) не задана, пред­полагается последовательный доступ.

  2. Доступ к записям в файле осуществляется в последователь­ности, диктуемой организацией файла. Для последовательных файлов эта последовательность задается отношением предшествен­ник—преемник, устанавливаемым выполнением операторов WRITE (ПИСАТЬ) при создании или дополнении файла.

  3. Если соответствующий определитель файла является внеш­ним определителем файла, каждая статья управления файлом в единице исполнения, соответствующая этому определителю фай­ла, должна задавать один и тот же метод доступа.