|
|||
Файлы прямого доступа ⇐ ПредыдущаяСтр 2 из 2 3.2. Файлы прямого доступа Файл прямого доступа состоит из записей, доступ к которым возможен в произвольном порядке по номеру записи. Создание файла прямого доступа включает следующие шаги: открытие файла (оператор 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 4. ДВИЖУЩИЕСЯ ИЗОБРАЖЕНИЯ, ЗВУКОВЫЕ ЭФФЕКТЫ И НЕСТАНДАРТНЫЙ ВВОД С КЛАВИАТУРЫ https://www.kazedu.kz/referat/81006/4
|
|||
|