Последовательный ввод-вывода 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Последовательный ввод-вывода



В этом разделе описаны операции для последовательного ввода и вывода. В случае применения любой из этих операций к закрытому файлу возбуждается исключение STATUS_ERROR.

procedure READ(FILE: in FlLE_TYPE; ITEM: out ELEMENT_TYPE);

Оперирует над файлом вида IN_FILE. Читает элемент данного файла и возвращает значение этого элемента через параметр ITEM.

Если вид файла не IN_FILE, то возбуждает исключение MODE_ERROR. Если из файла нельзя больше читать ни одного элемента, то возбуждает исключение END_ERROR. Если прочитанный элемент не может быть интерпретирован как значение типа ELEMENT_TYPE, то возбуждается исключение DATA_ERROR; однако для реализации допустимо опускать такую проверку в случае, если она слишком сложна.

procedure WRITE_FILE: in FILE_TYPE; ITEM: in ELEMENT_TYPE);

Оперирует над файлом вида OUT_FILE. Записывает в данный файл значение параметра ITEM.

Если вид файла не OUT_FILE, то возбуждается исключение MODE_ERROR. Если внешний файл уже заполнен до конца, то возбуждается исключение USE_ERROR.

function END_OF_FILE(FILE: in FILE_TYPE) return BOOLEAN;

Оперирует над файлом вида IN_FILE. Если из файла больше нельзя читать ни одного элемента, то возвращает значение TRUE, в противном случае — FALSE.

Если вид файла не IN_FILE, то возбуждается исключение MODE_ERROR. Ссылки: вид IN_FILE 14.1, вид OUT_FILE 14.1, вид файла 14.1, внешний файл 14.1, исключение DATA_ERROR 14.4, исключение END_ERROR 14.4, исключение MODE_ERROR 14.1, ис-. ключение STATUS_ERROR 14.4, исключение USE_ERROR 14.4, тип ELEMENT_TYPE 14.1, фай/i; 14.1, файловый тип 14.1, элемент 14.1.

СПЕЦИФИКАЦИЯ ПАКЕТА ПОСЛЕДОВАТЕЛЬНОГО ВВОДА-ВЫВОДА

with IO_EXCEPTIONS;generic type ELEMENT_TYPE is private;package SEQUENTIAL_IO is type FILE_TYPE is limited private; type FILE_MODE is (IN_FILE, OUT_FILE); -- управление файлами procedure CREATE(FILE: in out FILE_TYPE; MODE: in FILE_MODE:= OUT_FILE; NAME: in STRING:= ""; FORM: in STRING:= ""); procedure OPEN (FILE: in out FILE_TYPE; MODE: in FILE_MODE; NAME: in STRING; FORM: in STRING:= ""); procedure CLOSE (FILE: in out FILE_TYPE); procedure DELETE(FILE: in out FILE_TYPE); procedure RESET (FILE: in out FILE_TYPE; MODE: in FILE_MODE); procedure RESET (FILE: in out FILE_TYPE); function MODE (FILE: in FILE_TYPE) return FILE_MODE; function NAME (FILE: in FILE_TYPE) return STRING; function FORM (FILE: in FILE_TYPE) return STRING; function IS_OPEN(FILE: in FILE_TYPE) return BOOLEAN; -- операции ввода и вывода procedure READ (FILE: in FILE_TYPE; ITEM: out ELEMENT_TYPE); procedure WRITE (FILE: in FILE_TYPE; ITEM: in ELEMENT_TYPE); function END_OF_FILE(FILE: in FILE_TYPE) return BOOLEAN; -- исключения STATUS_ERROR: exception renames IO_EXCEPTIONS.STATUS_ERROR; MODE_ERROR: exception renames IO_EXCEPTIONS.MODE_ERROR; NAME_ERROR: exception renames IO_EXCEPTIONS.NAME_ERROR; USE_ERROR: exception renames IO_EXCEPTIONS.USE_ERROR; DEVICE_ERROR: exception renames IO_EXCEPTIONS.DEVICE_ERROR; END_ERROR: exception renames IO_EXCEPTIONS.END_ERROR; DATA_ERROR: exception renames IO_EXCEPTIONS.DATA_ERROR; private -- зависит от реализацииend SEQUENTIAL_IO;

Ссылки: вид IN_FILE 14.1, вид OUT_FILE 14.1, исключение DATA_ERROR 14.4, исключение DEVICE_ERROR 14.4, исключение END_ERROR 14.4, исключение MODE_ERROR 14.4, исключение NAME_ERROR 14.4, исключение STATUS_ERROR 14.4, исключение USE_ERROR 14.4, пакет исключений Ю-EXCEPTIONS 14.4, пакет SEQUENTIAL_IO 14.2, 14.2.2, процедура CLOSE 14.2.1, процедура CREATE 14.2.1, процедура DELETE 14.2.1, процедура OPEN 14.2.1, процедура READ 14.2.2, процедура RESET 14.2.1, процедура WRITE 14.2.2, тип FILE_MODE 14.1, тип FILE_TYPE 14.1, функция END-OF_FILE 14.2.2, функция FORM 14.2.1, функция IS-OPEN 14.2.1, функция MODE 14.2.1, функция NAME 14.2.1.

ПРЯМОЙ ВВОД-ВЫВОД

В этом разделе описаны операции для прямого ввода и вывода. При применении любой из этих операций к файлу, который не открыт, возбуждается исключение STATUS_ERROR.

procedure READ(FILE: in FILE_TYPE; ITEM out ELEMENT_TYPE; FROM: in POSITIVE_COUNT);procedure READ(FILE: in FILE_TYPE; ITEM out ELEMENT_TYPE);

Оперируют над файлами вида IN_FILE или INOUT_FILE. Первая из операций предварительно устанавливает текущий индекс данного файла равным значению параметра FROM. Затем (для обеих подпрограмм) через параметр ITEM возвращает значение элемента файла, позиция которого задана текущим индексом файла; наконец, увеличивает текущий индекс на единицу.

Если вид данного файла — OUT_FILE, то возбуждается исключение MODE_ERROR. Если используемое при чтении значение индекса оказалось больше размера внешнего файла, то возбуждается исключение END_ERROR. Если прочитанный элемент нельзя интерпретировать как значение типа ELEMENT_TYPE, то возбуждается исключение DATA_ERROR; однако для реализации допустимо опускать такую проверку в случае, если она слишком сложна.

procedure WRITE(FILE: in FILE_TYPE; ITEM: in ELEMENT_TYPE; TO: in POSITIVE_COUNT);procedure WRITE(FILE: in FILE_TYPE; ITEM: in ELEMENT_TYPE);

Оперируют над файлами вида INOUT_FILE или OUT_FILE. Первая из операций предварительно устанавливает индекс данного файла равным значению параметра ТО. Затем (для обеих подпрограмм) элементу данного файла, позиция которого указана текущим индексом, присваивается значение параметра ITEM; наконец, увеличивается текущий индекс на единицу.

Если вид данного файла — IN_FILE, то возбуждается исключение MODE_ERROR. Если внешний файл заполнен до конца, то возбуждается исключение USE_ERROR.

procedure SET_INDEX(FILE: in FILE_TYPE; TO: in POSITIVE_COUNT);

Оперирует над файлом любого вида. Устанавливает текущий индекс данного файла равным значению параметра ТО (которое может превышать текущий размер файла).

function INDEX(FILE: in FILE_TYPE) return POSITIVE_COUNT;



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 122; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.59.36.203 (0.005 с.)