consult неуспешен, якщо файл з вказаним ім'ям відсутній на диску, або якщо цей файл містить помилки, як, наприклад, у разі невідповідності синтаксису предиката з файлу описам з розділу програми database, або якщо вміст файлу неможливо розмістити в пам'яті через відсутність місця.
Приклад роботи з базою даних, що розташовується в оперативній пам'яті
Будь-яка система системи управління базою даних (СКБД), орієнтована на діалог з користувачем повинна містити як мінімум такі можливості, як занесення в базу нових даних; видалення даних з бази; вибірка і висновок містяться в базі даних.
Хотілося б реалізувати досить логічним зручно для користувача способом. Такі вимоги передбачають наявність у системі меню. p align="justify"> Наведемо приклад найпростішої програми, що дозволяє виконувати основні дії над динамічної БД.
database
dstudent (symbol, symbol, symbol)/* Таблиця з інформацією про студентів */
dexam (symbol, symbol, integer)/* Таблиця з інформацією про здачу іспитів */
сесія ", 3, 10, 19, 60, 1, -1, p>
" 218 191 192 217 196 179"), menu.
clauses
/* Висновок меню на екран */
menu: - clearwindow, ("1 - створити"), nl, ("2 - завантажити"), nl,
write ("3 - додати запис"), nl,
write ("4 - знайти запис"), nl,
write ("5 - видалити запис"), nl,
write ("6 - зберегти"), nl, ("7 - вихід"), nl, readchar (N), reaction (N).
/* Реакція програми на вибір пункту меню */
reaction ('1 '):-deldb, menu. ('2'):-clearwindow, write ("Введіть ім'я файлу"), readln (Fname), (Fname), menu. ('3 '):-typerec (N), addquation3 (N), dely, menu. ('4'):-clearwindow, typerec (N), findquation4 (N), menu. ('5 '):-clearwindow , typerec (N), retquation4 (N), dely, menu. ('6 '):-write ("Enter filename"), readln (Fname), save (Fname), menu. ('7'). ( _):-write ("Введіть число 1-6"), dely, menu.
/* Видалення всієї інформації з бази */
deldb:-retract (dstudent (_, _, _)), fail.:-retract (dexam (_, _, _)), fail ..
/* Вибір типу запису (таблиці БД) */
typerec (N):-clearwindow, write ("1 - інформація про студентів"), nl,
write ("2 - результати складання іспитів"), nl, readchar (N).
/* Введення і додавання нового запису */
addquation3 ('1 '):-clearwindow, write ("Введіть шифр студента"), nl, readln (Code), ("Введіть ПІБ студента"), nl, readln (Name) , (В«Введіть факультет"), nl, readln (D), (dstudent (Code, Name, D)), write ("Запис добавлена"), nl. ('2 '):-clearwindow, write (" ; Введіть шифр студента "), nl, readln (Code), (" Enter course "), nl, readln (Course), (" Enter mark "), nl, readint (Mark), (dexam (Code, Course, Mark)), write ("Запис добавлена") .3 (_): - write ("Помилка!").
/* Уточнення завдання на пошук інформації */
findquation4 ('1 '):-clearwindow, write ("1 - шукати запис по шифру"), nl, ("2 - шукати запис на ім'я"), nl, readint (N ), find (N), dely.
findquation4 ('2 '):-clearwindow, write ("1 - шукати запис по шифру"), nl, ("2 - шукати запис за найменуванням дисципліни"), nl,
readint (N), N2 = N +2, find (N2), dely.
/* Уточнення завдання на пошук інформації */
find (1):-clearwindow, write ("Введіть шифр"), readln (Code), (Code, Name, D), write ("Студент"), write ( Name), nl, ("навчається на факультеті"), write (D).
find (1):-write ("Такий запису в базі немає").
find (2):-clearwindow, write ("Введіть ім'я студента"), readln (Name), (Name), findnameyes (Name). (2):-write (" Такий записи в базі немає "). (3):-clearwindow, write (" Введіть шифр студента "), readln (Code), (Code, Name, D), write (" Студент "), write (Name), nl, ("факультету"), write (D), nl, findexam (Code, _, _). (3):-write ("Такий запису в базі немає").
find (4):-clearwindow, write ("Введіть назву дисципліни"),
readln (Course), ("Введіть оцінку. Для пошуку за всіма оцінками введіть 0"),
readint (Mark), find4 (Course, Mark).
/* Пошук інформації про здачу іспитів */
find4 (Course, 0):-findexam (_, Course, _). (Course, Mark):-findexam (_, Course, Mark).
/* Пошук записів по іме...