1.3.1. Организация
Файл с относительной организацией является файлом массовой памяти, любая запись которого может быть запомнена или извлечена по значению относительного номера записи.
Концептуально файл с относительной организацией состоит из последовательной цепочки областей, каждая из которых может содержать логическую запись. Каждой из этих областей назначается относительный номер записи. Каждая логическая запись относительного файла идентифицируется относительным номером записи ее области памяти. Например, десятая запись - это запись, адресуемая относительным номером записи 10 и находящаяся в десятой области записи, независимо от того, были заполнены первые девять областей или нет.
Для получения более эффективного доступа к записям в относительном файле число позиций литер, резервируемое в запоминающей среде для хранения логической записи, может отличаться от числа позиций литер в описании этой записи в программе.
1.3.2. Методы доступа
При произвольном доступе к файлу операторы ввода-вывода применяются для доступа к записям в порядке, указанном программистом. В случае файла с относительной организацией программист указывает требуемую запись, помещая ее относительный номер в данное, определенное как относительный ключ.
При динамическом доступе программист может произвольно переходить от последовательного доступа к произвольному и наоборот, применяя соответствующие формы операторов ввода-вывода. |
1.3.3. Указатель позиции файла
Указатель позиции файла - это логическое понятие, используемое в этом документе для облегчения точной спецификации следующей записи, к которой должен осуществляться доступ при выполнении заданных операций ввода-вывода. На установку указателя позиции файла влияют только операторы CLOSE (3AКРЫТЬ), OPEN (ОТКРЫТЬ), READ (ЧИТАТЬ) Понятие указателя позиции файла не имеет смысла для файла, открытого для вывода .
1.3.4. Состояние ввода-вывода
Состояние ввода-вывода - это логическое понятие, характеризующееся двухсимвольным значением, которое устанавливается для указания состояния операции ввода-вывода во время выполнения операторов CLOSE (ЗАКРЫТЬ), DELETE (УДАЛИТЬ), OPEN (ОТКРЫТЬ), READ (ЧИТАТЬ), REWRITE (ОБНОВИТЬ), или WRITE (ПИСАТЬ) перед выполнением любого повелительного оператора, связанного с этим оператором ввода-вывода, и перед выполнением любой применимой процедуры USE AFTER EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ). Значение состояния ввода-вывода доступно Кобол-программе посредством фразы FILE STATUS (СОСТОЯНИЕ ФАЙЛА) в статье управления файлом.
Состояние ввода-вывода определяет также, будет ли выполняться процедура USE AFTER STANDARD EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ). Если возникает любое условие, отличное от тех, которые определены ниже как "успешное завершение", может выполняться указанная процедура по правилам, заданным для оператора USE (ИСПОЛЬЗОВАТЬ). Если возникает одно из условий "успешное завершение", никакая процедура такого типа не будет выполняться (п.4.8 настоящей части).
Некоторые классы значений состояния ввода-вывода задают критические условия ошибки. К таким значениям относятся значения, которые начинаются с цифры 3 или 4, а также значения, начинающиеся с цифры 9, которые определяются реализацией как критические. Если значение состояния ввода-вывода для операции ввода-вывода задает такое условие ошибки, реализацией определяются действия, которые предпринимаются после выполнения применимой процедуры USE AFTER STANDARD EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ), или, если ни одна такая процедура не применима, после завершения стандартной системной процедуры обработки ошибок ввода-вывода. Состояние ввода-вывода задает одно из следующих условий, возникающих после завершения операции ввода-вывода:
(1) успешное завершение. Оператор ввода-вывода выполнился успешно;
(2) в конце. Оператор последовательного чтения был выполнен неуспешно из-за того, что возникло условие конца файла;
(3) ошибка ключа. Оператор ввода-вывода выполнен неуспешно из-за того, что возникло условие ошибки ключа;
(4) постоянная ошибка. Оператор ввода-вывода выполнен неуспешно в результате ошибки, которая исключает дальнейшую обработку файла. Выполняются все заданные процедуры обработки ошибочных ситуаций. Условие постоянной ошибки остается действующим на все последующие операции ввода-вывода файла до тех пор, пока не будут вызваны определенные реализацией средства для устранения условия постоянной ошибки;
(5) логическая ошибка. Оператор ввода-вывода выполнен неуспешно из-за недопустимой последовательности операций ввода-вывода, выполняемых над файлом, или в результате нарушения ограничений, заданных пользователем.
(6) ошибка, определяемая реализацией. Оператор ввода-вывода выполнен неуспешно в результате возникновения условия, определенного реализацией.
Ниже приводится список значений, помещаемых в состояние ввода-вывода для перечисленных выше условий, возникающих в результате выполнения операций ввода-вывода для относительного файла. Если применимо более одного значения, значение, которое помещается в состояние ввода-вывода, определяется реализацией.
(1) Успешное завершение
а) Состояние ввода-вывода=00. Оператор ввода-вывода выполнился успешно и нет никакой другой доступной информации об операции ввода-вывода.
б) Состояние ввода-вывода=04. Оператор READ (ЧИТАТЬ) выполнился успешно, но длина обрабатываемой записи не соответствует фиксированным свойствам этого файла.