![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Файл прямого доступа состоит из записей, доступ к которым возможен в произвольном порядке по номеру записи.
Создание файла прямого доступа включает следующие шаги: открытие файла (оператор 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 # номер файла, n1 AS имя1 [,n2 AS имя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
Дата публикования: 2014-12-28; Прочитано: 200 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!