Оператор OPEN

Перед выполнением операций с файлом он должен быть присоединен (связан) с логическим устройством. Иными словами файл должен быть открыт. Этот оператор открывает файл и файловый указатель устанавливается на первую запись.

OPEN ([unit=]<номер устройства>,

[,accsess=<способ доступа>]

[,form=<способ представления данных>]

[,err=<метка>]

[,file=<имя файла>]

[,iostat=<целочисленная переменная>]

[,recl=<целочисленное выражение>]

[,status=<символьное выражение>])

и т.д.

Спецификаторы могут указываться в любом порядке. Если unit стоит первым, то можно указать только номер, опустив unit. Способ доступа может принимать значения: access =’ sequential’ - последовательный доступ, access = ‘direct’ - прямой доступ access =’ append’ – применяется для работы с файлами последовательного доступа, открытыми для добавления. Form='formatted’ или unformatted’ определяет способ представления данных.

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

При прямом методе доступа по умолчанию файл считается неформатным.

Open (20, file = ‘text.dat’) – файл форматный последовательного доступа.

Open (30, file = ‘text1.dat’, accsess = ‘direct’, recl = 4, status = ‘old’) – файл прямого доступа несформатный, уже имеющийся, длина записи=4.

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

Iostat целочисленная переменная, которая = 0, если ошибки нет, и имеет положительное значение, если во время выполнения данного оператора произошла ошибка, и отрицательное число в случае, если возникла ошибка.

err – метка оператора, которому передается управление, если во время выполнения оператора произошла ошибка.

Recl используется только для файлов прямого доступа ( указывается размер записи в байтах).

Status указывает состояние: новый (new), существующий (old), временный (scratch), сохранять (keep или save), удалить (delete).

Для файлов временных файлов всегда действует статус delete, а для остальных save ( после закрытия файла, он сохраняется ).

При создании файла указывают Status =’ new’, хотя по умолчанию, если файла нет, он открывается с этим значением.

Операторы ввода/вывода

Все операторы ввода/вывода, кроме операторов ввода/вывода со стандартных системных устройств (*, 5, 6) могут содержать управляющую информацию, представляющую собой список спецификаторов.

Оператор Read

Этот оператор используется для чтения данных из файла, подсоединенного к устройству unit=<номер устройства> в указанные в списке ввода переменные. Общий вид оператора:

Read ( [unit=]<номер устройства>,

[,fmt=<способ представления данных>]

[,end=<метка>]

[,err=<метка>]

[,iostat=<целочисленная переменная>]

[,rec=<целочисленное выражение>] ) <список ввода>

Спецификаторы unit=<номер устройства>, file=<имя файла> были рассмотрены ранее.

Fmt спецификатор формата, который может быть задан, либо меткой формата, либо символьным выражением, определяющим формат. Если вместо формата стоит *, то это означает ввод под управлением списка (только для текстовых файлов последовательного доступа). Этот спецификатор указывается только для форматных записей. Для неформатых файлов этот спецификатор должен быть опущен.

End метка оператора, которому передается управление при достижении записи «конец файла».

Err - метка оператора, которому передается управление, если произошла ошибка ввода/вывода.

Iostat целочисленная переменная, которая = 0, если ошибки нет, и имеет положительное значение, если во время выполнения данного оператора произошла ошибка, и отрицательное число в случае, если возникла ситуация коней файла.

Rec – целочисленное выражение, используется только для файлов прямого доступа и определяет номер считываемой записи.

Read(20, *) x - считывает в свободном формате (под управлением списка) данное из файла, который связан по каналу 20, в переменную x.

Оператор Write

Этот оператор используется для передачи данных из элементов списка вывода в файл, присоединенный к заданному устройству.

Write( [unit=]<номер устройства>,

[,fmt=<способ представления данных>]

[,end=<метка>]

[,err=<метка>]

[,iostat=<целочисленная переменная>]

[,rec=<целочисленное выражение>] ) <список вывода>

Все спецификаторы имеют тот же смысл, что и в операторе read.

Спецификатор rec используется толькодля файлов прямого доступа. Этот параметр указывает на номер записи, в которую будет записана передаваемая переменная.

Write(40, ’(f4.2)’) x – записывает значение x в форматный последовательный файл присоединенный к устройству 40

Это равнозначные операторы:

Write(6,’(f4.2)’) x = write(*,’(f4.2)’) x = print (’(f4.2)’) x

Пусть необходимо записать в последовательный форматный файл число 100.

Open(10, file=’res1.txt’)

Write(10, ’(i4)’) 100

!записывается число 100 в файл res.txt, связанный по каналу 10

Запись в файл происходит следующим образом:

· Открывают файл (open);

· Записывают данные (write)

· Закрывают (close)

Оператор Close

При завершении работы с файлом его закрывают оператором Close(n). Этот оператор отсоединяет файл от устройства.

Close ([ unit=]<номер устройства>,

[,err=<метка>]

[,iostat=<целочисленная переменная>]

[,status=<символьное выражение>])


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow