Перед выполнением операций с файлом он должен быть присоединен (связан) с логическим устройством. Иными словами файл должен быть открыт. Этот оператор открывает файл и файловый указатель устанавливается на первую запись.
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=<символьное выражение>])