Студопедия
rus | ua | other

Home Random lecture






Файлы прямого доступа


Date: 2015-10-07; view: 437.


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

Создание файла прямого доступа включает следующие шаги: открытие файла (оператор OPEN); задание структуры записи файла, или разметка буфера (оператор FIELD); передача записи в буфер (операторы LSETили RSET); пересылка содержимого буфера в файл (оператор PUT), при этом если номер записи в операторе PUTне указан явно, буфер помещается на место текущей записи, при откры­тии файла указатель текущей записи равен 1, после каждой операции ввода или вывода указатель сдвигается на следующую запись; закры­тие файла (оператор CLOSE).

Записи передаются в виде строк символов. Поэтому необходимо использовать соответствующие функции преобразования данных в строку символов и обратно.

Ниже перечислены функции и осуществляемые ими преобразова­ния.

MKI$ (MKL$) - целое (длинное целое) в 2-х (4-х) байтовую строку;

MKS$ (MKD$) - вещественное (вещественное двойной точности) в 4-х (8-ми) байтовую строку.

CVI(CVL) - 2-х (4-х) байтовую строку в целое (длинное целое);

CVS(CVD) - 4-x (8-ми) байтовую строку в вещественное (ве­щественное двойной точности).

Считывание из файла прямого доступа включает также пять ша­гов: открытие файла; разметка буфера; передача записи из файла в буфер (оператор GET); обработка данных буфера (переменные буфера доступны из программы); закрытие файла.

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

Оператор OPENимеет вид

OPENимя файлаAS #номер файлаLEN= длина записи (отсутствие указания режима ввода или вывода означает, что файл прямого доступа).

Оператор FIELDимеет вид

FIELD #номер файла,n1ASимя1 [,n2ASимя2,...],

где n1, n2, ... - длина поля в байтах под переменные имя1, имя2,

... (имя1, имя2, - символьные переменные ).

Операторы LSET, RSETимеют вид

LSETимя=символьное выражение

RSETимя=символьное выражение

Оператор LSET (RSET) заполняет одно поле записи в буфере (оператор LSET - с начала, RSET - с конца, оставшиеся позиции за­полняются пробелами).

Оператор PUT имеет вид

PUT#номер файла[,номер записи]

Этот оператор передает содержимое буфера в файл на место за­писи с указанным номером (или текущей, если номер не указан).

Оператор GETимеет вид

GET#номер файла[,номер записи]

Этот оператор передает содержимое записи с указанным но­мером в буфер (если номера нет, передается текущая запись).

В качестве примера приводится программа, которая формирует файл прямого доступа из записей следующей структуры:

N п/п Фамилия Год рождения

В программе переменные обозначены n%, nam$, dat%; для соответс­твующих полей буфера используются обозначения np$ (2 байта), nm$ (10 байт), dt$ (6 байт).

OPEN "GSR.DAT" AS #1 LEN = 18

FIELD #1, 2 AS np$, 10 AS nm$, 6 AS dt$

FOR i%=1 to 3

INPUT n%, nam$, dat%

LSET np$ = MKI$ (n%)

LSET nm$ = nam$

LSET dt$ = MKI$ (dat%)

PUT #1,i%

NEXT i%

CLOSE #1

END

Следующая программа осуществляет ввод данных из файла GSR.DAT и их печать в обратном порядке.

OPEN "GSR.DAT" AS #1 LEN = 18

FIELD #1, 2 AS np$, 10 AS nm$, 6 AS dt$

FOR i% = 3 to 1 STEP -1

GET #1, i%

n% = CVI (np$)

dat%=CVI (dt$)

PRINT n%, nm$, dat%

NEXT i%

CLOSE #1

END


<== previous lecture | next lecture ==>
Файлы последовательного доступа | Список команд, операторов, функций.
lektsiopedia.org - 2013 год. | Page generation: 0.112 s.