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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

­

вода, который обнаружил это условие, считается неуспешным и файл не изменяется (пп. 4.4, 4.6, 4.9 настоящей части).

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

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

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

2. РАЗДЕЛ ОБОРУДОВАНИЯ В МОДУЛЕ ИНДЕКСНОГО ВВОДА-ВЫВОДА

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

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

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

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

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

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

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

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

SELECT і [OPTIONAL]" имя-файла-1

ASSIGN ТО ( имя-реализации-1 1

(литерал-1 J

[RESERVE целое і ]

гх 1 -С/х О

[

INDEXED

SEQUENTIAL RANDOM

DYNAMIC


ORGANIZATION IS]

ACCESS MODE IS

RECORD KEY IS имя-данного-1

[ALTERNATE RECORD KEY IS имя-данного-2 [WITH DUPLICATES]] ...

[FILE STATUS IS имїьданного-3].



ДЛЯ [НЕОБЯЗАТЕЛЬНОГО] имя-файла-1

НАЗНАЧИТЬ І имя-реализации-1 1

[ литер ал-1 J

[РЕЗЕРВИРОВАТЬ целое-1 ОБЛАСТЕЙ]

[ОРГАНИЗАЦИЯ] ИНДЕКСНАЯ

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

П

[ДОСТУП

РОИЗВОЛЬНЫЙ

ДИНАМИЧЕСКИЙ I

КЛЮЧ ЗАПИСИ имя-данного-1

[ДОПОЛНИТЕЛЬНЫЙ КЛЮЧ ЗАПИСИ имя-данного-2

[С ДУБЛИРОВАНИЕМ]] ...

, [СОСТОЯНИЕ ФАЙЛА имя-данного-3].

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

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

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

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

2.3.4.0 6 щ и е правила

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

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

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

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

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

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

  6. ту же статью описания данных для имени-данного-1 с тем же относительным размещением в соответствующей записи;

  7. ту же статью описания данных для имени-данного-2, то же относительное размещение в соответствующей записи, то же число дополнительных ключей записи и ту же фразу DUPLICATES (С -ДУБЛИРОВАНИЕМ).

  1. Для данных внешней среды принимается внутренний набор литер.

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

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

  4. Фраза ASSIGN (НАЗНАЧИТЬ) задает связь между фай­лом, на который ссылается имя-файла-1, и запоминающей средой, на которую ссылается имя-реализации-1 или литер ал-1.

  5. Фраза RESERVE (РЕЗЕРВИРОВАТЬ) для модуля ин­дексного ввода-вывода та же, что и для модуля последователь­ного ввода-вывода. Описание фразы RESERVE (РЕЗЕРВИРО­ВАТЬ) находится в ч. 7, п. 2.9).

  6. Фраза FILE STATUS (СОСТОЯНИЕ ФАЙЛА) для модуля индексного ввода-вывода та же, что и для модуля последователь­ного ввода-вывода. Описание фразы FILE STATUS (СОСТОЯ­НИЕ ФАЙЛА) находится в ч. 7, п. 2.5. Содержимое данного, свя­занного с фразой FILE STATUS .(СОСТОЯНИЕ ФАЙЛА) индекс­ного файла, определяется в п. 1.3.4 настоящей части.

  7. Далее представлены фразы ACCESS MODE (ДОСТУП), [Al7iWJXTE^E^dTDl<ETTA~0lT0nHHTEnbHbIH’K^ra4'3A-| [ПИСИ),I ORGANIZATION IS INDEXED (ОРГАНИЗАЦИЯ ИН­ДЕКСНАЯ), RECORD KEY (КЛЮЧ ЗАПИСИ),

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

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

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



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

S

ACCESS MODE IS

EQUENTIAL RANDOM

DYNAMIC

П

ДОСТУП

ОСЛЕДОВАТЕЛЬНЫЙ ПРОИЗВОЛЬНЫЙ [динамический
  1. Синтаксические правила

  1. Фраза ACCESS MODE IS RANDOM (ДОСТУП ПРОИЗ­ВОЛЬНЫЙ) не должна употребляться для имен-файлов, указан- •ных во фразах USING (ИСПОЛЬЗУЯ) или GIVING (ПОЛУЧАЯ) операторов SORT (СОРТИРОВАТЬ) и MERGE (СЛИТЬ).

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

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

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

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

  4. Если доступ динамический, доступ к записям файла мо­жет быть последовательным и (или) произвольным.

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

  1. Фраза ALTERNATE RECORD KEY (ДОПОЛНИТЕЛЬ­НЫЙ КЛЮЧ ЗАПИСИ)

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

Фраза ALTERNATE RECORD KEY (ДОПОЛНИТЕЛЬ­НЫЙ КЛЮЧ ЗАПИСИ) указывает путь доступа к записям ин­дексного файла по дополнительному ключу записи.

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

ALTERNATE RECORD KEY IS имя-данного-1 [WITH DUPLICATES]ДОПОЛНИТЕЛЬНЫЙ КЛЮЧ ЗАПИСИ имя-данного-1 ТСЦУБЛИРОВАНИЕМТ

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

  1. Имя-данного-1 может уточняться.

  2. Имя-данного-1 должно определяться как буквенно­цифровое данное в статье описание записи, соответствующей имени-файла, которой подчинена фраза ALTERNATE RECORD KEY (ДОПОЛНИТЕЛЬНЫЙ КЛЮЧ ЗАПИСИ).

  3. Имя-данного-1 не должно относиться к групповому дан­ному, содержащему переменно повторяющееся данное.

  4. Имя-данного-1 не должно относиться к данному, самая левая позиция литеры которого соответствует самой левой пози­ции литеры основного ключа записи или других дополнительных ключей записи, связанных с этим файлом.

  5. Если индексный файл содержит записи переменной дли­ны, каждый дополнительный ключ записи должен содержаться в первых х позициях литер записи, где х равно минимальному размеру записи, определенному для файла (см. ч. 7, п. 3.8).

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

  1. Фраза ALTERNATE RECORD KEY (ДОПОЛНИТЕЛЬ­НЫЙ КЛЮЧ ЗАПИСИ) указывает дополнительный ключ запи­си для файла, к которому относится эта фраза.

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

  3. Фраза WITH DUPLICATES (С ДУБЛИРОВАНИЕМ) указывает, что значение дополнительного ключа записи может дублироваться в некоторых записях файла. Если фраза WITH DUPLICATES (С ДУБЛИРОВАНИЕМ) не указана, значение дополнительного ключа записи не может дублироваться в запи­сях файла.

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

  5. Если соответствующий определитель файла является внешним определителем файла, каждая статья управления фай­лом в единице исполнения, соответствующая этому определи­телю файла, должна определять ту же статью описания данных для имени-данного-1, то же относительное размещение внутри соответствующей записи, то же количество дополнительных клю­чей записи и ту же фразу WITH DUPLICATES (С ДУБЛИРО­ВАНИЕМ).