
* Данный текст распознан в автоматическом режиме, поэтому может содержать ошибки
Глава X. Ф а й л ы д а н н ы х 89 PUT [#]номер файла%[,[номер где записи&][,переменная]] номер_файла% номер файла, указанного в операторе OPEN. номер_записи&для файлов прямого доступа — номер записи. Целочисленное значение номера записи может находиться в диапазоне от 1 до 32 767. П о д этим номером запись будет помещена в файл и в дальнейшем считана. Если номер записи опущен, то записи присваивается следующий по порядку номер по отношению к последнему оператору PUT. Если оператор P U T первый после оператора OPEN, то записи присваивается номер один. Лю¬ бая попытка при записи или чтении выйти за границы буфера вызывает сообщение об ошибке. Для двоичных файлов — позиция байта, где начинается чте¬ ние или запись. переменная переменная, содержащая вывод для записи в файл. Перемен¬ ной обычно является переменная определенного пользовате¬ лем типа данных. Используя оператор PUT, необходимо иметь ввиду, что система не проверяет, существуют ли в файле записи с номером, меньшим, чем у записи, которая за¬ писывается в текущий момент. То есть, если программа создает и записывает первой запись с номером 100, то эта запись помещается в файл на 100-м месте, формируется длина файла, равная длине записи умноженная на номер послед¬ ней записи. И если возникнет необходимость хранить только 50 записей, уда¬ лить ненужные записи невозможно иначе, чем реорганизуя файл, то есть пере¬ писав его в другое место с нужными записями. Реорганизация файла прямого доступа целиком лежит на прикладном программисте. Пример 10.13.1: 'создание файла произвольного доступа c использованием буфера обмена CLS OPEN "FINAL.DAT" FOR RANDOM AS # 1 'ОТКРЫВАЕМ ФАЙЛ 'ПРЯМОГО ДОСТУПА 'создаем буфер FIELD # 1 , 12 AS c h i s l o $ , 16 AS d e n n e d $ , 19 AS c o l t i m e $ , 20 AS fio$ nom% = 1 'начальное значение номера записи a 1 : INPUT "Ввести число (дд):"; c$ INPUT "Ввести день недели (нн):", d$ INPUT "Ввести кол-во часов (чч):", c l o c k % INPUT "Ввести ФИО преподавателя:", f $ 'пересылка в буфер LSET c h i s l o $ = c$ LSET denned$ = d$ LSET c o l t i m e $ = M K I $ ( c l o c k % ) LSET f i o $ = f $ PUT # 1 , nom% 'помещаем запись на диск nom% = nom% + 1 'увеличиваем номер записи