не ім'я файлу>, <імя_DOS_файла>).
Приклад (datafile1, "file4.dat")
Предикат успішний тільки в тому випадку, якщо файл вже присутній на диску.
Вміст файлу можна розглядати як потік символів. Позиція кожного символу визначається його віддаленістю від першого символу файлу. Таким чином, перший символ у файлі займає нульову позицію, другий - першу і т. д. Позицію, з якої буде прочитаний або в яку буде записаний черговий символ, визначає покажчик. p align="justify"> Покажчик файлу може бути поміщений в будь-яку позицію. Файли з такою організацією доступу до зберігається в ній називаються файлами прямого доступу, а операції вибірки з такого файлу - введенням-виведенням з файлу прямого доступу. p align="justify"> Коли файл відкривається для запису або модифікації, покажчик поміщається в початок файлу. Однак Турбо-Пролог дозволяє зміщувати покажчик за допомогою предиката filepos. p align="justify"> filepos (<сімволіческое_імя_файла>, <позіція_указателя>, <тіп_смещенія>).
Параметру <позіція_указателя> тут має бути присвоєно дійсне число, що означає позицію у файлі, з яких вважатиме або на якому буде записаний знак (дрібна частина числа відкидається).
Параметру <тіп_смещенія> може бути присвоєно одне з трьох значень: 0, 1 або 2. Ці значення визначають те, як буде інтерпретовано значення <позіція_указателя>. У табл. 1 пояснено вживання кожного допустимого значення параметра <тіп_смещенія>. p align="justify"> база дані файл диск
Таблиця 1
Режими роботи предиката filepos
Тип смещеніяДействія сістеми0Смещеніе береться щодо початку файла1Смещеніе береться щодо поточній позіціі2Смещеніе береться щодо кінця файлу
Розглянемо, для прикладу, таке вживання предиката filepos: (datafile1, 100,0).
У цьому виразі datafile1 є ім'я логічного файлу. Параметр <позіція_указателя> має значення 100, що вказує на те, що буде прочитаний символ, що стоїть в 100-й позиції (101-й символ). Значення 0 параметра <тіп_смещенія> свідчить про те, що сота позиція відлічуватиметься від початку файлу. p align="justify"> Якщо в цьому записі 0 замінити на 1,
filepos (datafile1, 100,1),
то відлік буде вестися вже відносно поточної позиції покажчика. Якщо даний предикат буде успішний, то покажчик зрушиться ще на 100 позицій вперед. br/>
Закриття файлу
Цій меті служить предикат
closefile (<символічне ім'я файлу>).
Наприклад, (datafile1).
Коли файл закрито, операції читання або запису для нього неприпустимі. Закриття файлу також захищає вміст файлу від яких би то не було маніпуляцій, так як тепер можливі лише операції з файлом у цілому. p align="justify"> Ще одним наслідком закриття файлу є переклад покажчика файлу в початок. Це може знадобитися при повторному відкритті файлу. br/>
Переадресація введення-виведення
Вбудований предикат Турбо-Прологу readdevice дозволяє переадресувати логічне пристрій введення. Аналогічно вбудований предикат writedevice здійснює переадресацію пристрої виведення інформації. p align="justify"> То предикат (myfile)
налаштовує пристрій введення на файл myfile, а предикат (yourfile)
налаштовує вихідний на файл yourfile.
Для налаштування введення і виведення на стандартні пристрої в Турбо-Пролозі використовуються стандартні імена screen, keyboard, printer. Наприклад, правіло_lines: - writedevice (screen), write ("Перший рядок"),, writedevice (printer), ("Перший рядок"), nl,
flush (printer), writedevice (screen).
виводить рядок "Перший рядок" на екран монітора, а потім цю ж рядок виводить на принтер. Стандартний предикат flush тут використовується для того, щоб рядок було виведено з буфера відразу на принтер. br/>
Інші корисні предикати
Предикат eof робить перевірку на досягнення кінця файлу
eof (<сімволіческое_імя_файла>)
Для автоматизації процесу відкриття різних файлів буває корисно використання операцій конкатенації строкових змінних, для чого в Турбо-Пролозі використовують стандартний предикат concat:
concat (<рядок1>, <рядок2>, <новая_строка>).
Особливості роботи з БД, що зберігають дані у файлах на диску
СУБД, що зберігають дані на диску (нерезидентні), є більш життєздатними. Так як обсяг зовнішньої пам'яті істотно більше обсягу пам'яті оперативної, системи такого класу придатні для більшості практичних завдань. p ali...