В файле, присоединенном для прямого доступа, все записи имеют одинаковую длину, которая задается в операторе open, спецификатором recl.
В операторе open для неформатного файла прямого доступа обязательно должны быть спецификаторы:
open (<номер устройства>, file='<имя файла>', access= 'direct',
recl = <размер записи>)
Для определения размера записи можно использовать функцию:
Sizeof ( <имя переменной> (recl = Sizeof (<имя переменной>)
Спецификатор form=' unformatted ' в случае прямого доступа задается по умолчанию и может быть опущен.
В случае форматного файла прямого доступа, он обязателен form=' formatte '.
Каждая запись в файле прямого доступа имеет свой уникальный номер. Читать и записывать данные в файл прямого доступа можно необязательно по порядку их номеров. Можно в него занести запись с любым порядковым номером (например, сначала запись №5, а затем запись №2). Если в файле не было записей с №1 и 2, все равно под них будет зарезервировано место (при просмотре их значения равны нулю).
В неформатном файле прямого доступа можно позиционировать (установить указатель) непосредственно на запись с № n:
|
|
В CVF для этих целей можно использовать оператор find.
Find (< номер устройства>, rec=№ n)
Этот оператор только устанавливает указатель на нужную запись.
Или использовать оператор Read ( <номер устройства>, rec=№ n), если хотим прочитать запись и ее анализировать.
При использовании оператора write будет заменена та запись, номер которой задан спецификатором rec=№ n.
Write (<номер устройства>, rec=№ n)<новая запись>
Пример
Запись в неформатный файл прямого доступа может производиться в любом порядке.