db_create(СелекторБД,ИмяФайла,Место)
(db_selector,string,place) — (i,i,i)
Предикат создает новый файл ИмяФайла и связанную с ним базу данных (БД):
1) на диске, если Место=in_file;
2) в памяти, если Место=in_memory;
3) в расширенной памяти, если Место=in_ems.
БД становится доступной для чтения и записи. Логическое имя БД задается параметром СелекторБД.Таким образом, в результате выполнения этого предиката с логическим именем БД будет связано конкретное физическое устройство и место на нем.
db_open(СелекторБД,ИмяФайла,Место)
(db_selector,string,place) — (i,i,i)
Предикат связывает логическое имя БД (СелекторБД) с уже существующей БД, расположенной в файле ИмяФайла на диске (Место=in_file),в памяти (Место=in_memory) или в расширенной памяти (Место=in_ems). БД становится доступной для чтения и записи.
db_openinvalid(СелекторБД,ИмяФайла,Место)
(db_selector,string,place) — (i,i,i)
Предикат связывает логическое имя БД (СелекторБД) с уже существующей БД, расположенной в файле ИмяФайла на диске (Место=in_file),в памяти (Место=in_memory) или в расширенной памяти (Место=in_ems). БД становится доступной только для чтения.
db_close(СелекторБД)
(db_selector) — (i)
Предикат закрывает доступ к БД с логическим именем СелекторБД.Одновременно закрывается связанный с этой БД файл.
db_delete(ИмяФайла,Место)
(string,place) — (i,i)
Предикат удаляет файл ИмяФайла, связанный с некоторой БД и расположенный на диске (Место=in_file),в памяти (Место=in_memory) или в расширенной памяти (Место=in_ems).
db_flush(СелекторБД)
(db_selector) — (i)
Предикат очищает буферы DOS путем переноса информации из буферов в файл, связанный с БД, имеющей логическое имя СелекторБД. Кроме того, этот предикат следует использовать перед закрытием БД (db_close) с целью сохранения всей информации в файле БД.
db_garbagecollect(СелекторБД)
(db_selector) — (i)
Предикат очищает файл, связанный с БД,имеющей логическое имя СелекторБД, от удаленной информации (записей, цепей, деревьев), а также сжимает его.
db_copy(СелекторБД,ИмяФайла,Место)
(db_selector,string,place) — (i,i,i)
Предикат копирует БД, имеющую логическое имя СелекторБД, из файла, связанного с этой БД в файл ИмяФайла, который будет расположен на диске (Место=in_file),в памяти (Место=in_memory) или в расширенной памяти (Место=in_ems).
%============================================================
% Пример:
domains
db_selector = бд1;бд2 % описываем два логичес-
% ких имени БД:бд1 и бд2
goal
db_create(бд1,»mydb1″,in_ems), % создаем в расширенной
% памяти файл MYDB1,
% бд1 <—> MYDB1
……. % работа с БД бд1
db_flush(бд1), % информация буферов DOS
% => MYDB1
db_garbagecollect(бд1), % очищаем MYDB1 от»мусора»
db_copy(бд1,»a:\\my.dba»,in_file),%бд1(MYDB1)=> A:\MY.DBA
db_close(бд1), % закрываем доступ к бд1
db_delete(«mydb1″,in_ems), % удаляем MYDBA из расши-
% ренной памяти
…….
db_openinvalid(бд1,»a:\\my.dba»,in_file),%бд1<—A:\MY.DBA
db_copy(бд1,»mydb2″,in_ems), % бд1(A:\MY.DBA) => MYDB2
db_open(бд2,»mydb2″,in_ems), % бд2 <—> MYDB2
…….
%============================================================
nondeterm db_chains(СелекторБД,Цепь)
(db_selector,string) — (i,o)
Неопределенный предикат, позволяющий получить имена всех цепей БД, имеющей логическое имя СелекторБД.
%============================================================
% Пример1 (напечатать имена всех цепей БД):
domains
db_selector = бд
goal
db_openinvalid(бд,»my.dba»,in_file),
db_chains(бд,Цепь),
write(Цепь),nl,
fail
;
db_close(бд).
% Пример2 (проверить, есть ли в БД цепь с именем «Цепь1″):
domains
db_selector = бд
goal
db_openinvalid(бд,»my.dba»,in_file),
db_chains(бд,»Цепь1″),
write(«есть»),
db_close(бд)
;
write(«нет»),
db_close(бд).
% Пример3 (получить список имен всех цепей в БД):
domains
db_selector = бд
stringlist = string*
goal
db_openinvalid(бд,»my.dba»,in_file),
findall(Цепь,db_chains(бд,Цепь),Список),
write(«список имен всех цепей = «,Список),
db_close(бд).
%============================================================
db_statistics(СелекторБД,ЧислоЗаписей,РазмерПамяти,
РазмерБазыДанных,СвободноеМесто)
(db_selector,real,real,real,real) — (i,o,o,o,o)
Этот предикат позволяет получить статистику по числу записей в БД, ее размерам в байтах, а также узнать о наличии свободного места для добавления информации в БД. Статистика выдается для БД с логическим именем СелекторБД.
chain_inserta(СелекторБД,Цепь,Объект,Запись,Ссылка)
(db_selector,string,symbol,<Domain>,ref)
— (i,i,i,i,o)
Предикат вставляет Запись, относящуюся к типу данных Объект в начало цепи с именем Цепь. Выходным параметром является Ссылка, которую можно использовать для дальнейшей работы с этой записью. Операция выполняется в БД с логическим именем СелекторБД.
chain_insertz(СелекторБД,Цепь,Объект,Запись,Ссылка)
(db_selector,string,symbol,<Domain>,ref)
— (i,i,i,i,o)
Предикат вставляет Запись, относящуюся к типу данных Объект в конец цепи с именем Цепь. Выходным параметром является Ссылка, которую можно использовать для дальнейшей работы с этой записью. Операция выполняется в БД с логическим именем СелекторБД.
chain_insertafter(СелекторБД,Объект,Ссылка,Запись,НоваяСсылка)
(db_selector,symbol,ref,<Domain>,ref)
— (i,i,i,i,o)
Предикат вставляет Запись, относящуюся к типу данных Объект в цепь после записи, имеющей ссылку Ссылка. Выходным параметром является НоваяСсылка, принадлежащая вставленной записи, которую можно использовать для дальнейшей работы с этой записью. Операция выполняется в БД с логическим именем СелекторБД.
%===============================================================
% Пример
domains
db_selector = бд
объект = о(integer,integer)
goal
db_create(бд,»my.dba»,in_file),
chain_inserta(бд,»цепь1″,integer,1,Ссылка1),
% цепь1: 1
chain_inserta(бд,»цепь1″,integer,2,Ссылка2),
% цепь1: 2 1
chain_insertz(бд,»цепь1″,integer,3,_),
% цепь1: 2 1 3
chain_insertafter(бд,integer,Ссылка2,4,_),
% цепь1: 2 4 1 3
chain_insertz(бд,»цепь2″,объект,о(2,1),Ссылка21),
% цепь1: 2 4 1 3
% цепь2: о(2,1)
chain_insertz(бд,»цепь2″,объект,о(2,2),_),
% цепь1: 2 4 1 3
% цепь2: о(2,1) о(2,2)
chain_insertafter(бд,объект,Ссылка1,о(1,5),_),
% цепь1: 2 4 1 о(1,5) 3
% цепь2: о(2,1) о(2,2)
chain_insertafter(бд,integer,Ссылка21,5,_),
% цепь1: 2 4 1 о(1,5) 3
% цепь2: о(2,1) 5 о(2,2)
db_close(бд).
%============================================================
chain_delete(СелекторБД,Цепь)
(db_selector,string) — (i,i)
Предикат удаляет из БД с логическим именем СелекторБД цепь с именем Цепь.
nondeterm chain_terms(СелекторБД,Цепь,Объект,Запись,Ссылка)
(db_selector,string,symbol,<Domain>,ref)
— (i,i,i,_,o)
Неопределенный предикат, позволяющий просмотреть все записи (а также их ссылки), относящиеся к типу данных Объект, в цепи с именем Цепь. Операция производится в БД с логическим именем СелекторБД.
%============================================================
% цепь: д_р(фио(«Иванов»,»Иван»,»Иванович»),12,10,1951)
д_р(фио(«Петров»,»Петр»,»Петрович»),2,10,1960)
д_р(фио(«Сидоров»,»Иван»,»Петрович»),1,1,1949)
% Пример (напечатать фамилии людей, родившихся в октябре до
% 1955 года, и удалить запись о них из цепи):
domains
db_selector = бд
день_рождения = д_р(человек,день,месяц,год)
человек = фио(фамилия,имя,отчество)
день,месяц,год = integer
фамилия,имя,отчесво = string
goal
db_open(бд,»my.dba»,in_file),
chain_terms(бд,»цепь»,день_рождения,
д_р(фио(Фамилия,_,_),_,10,Год), Ссылка),
Год < 1955,
write(Фамилия),nl,
term_delete(бд,»цепь»,Ссылка),
fail;
db_close(бд),
write(«работа завершена.\n»).
%============================================================
chain_first(СелекторБД,Цепь,ПерваяСсылка)
(db_selector,string,ref) — (i,i,o)
Предикат находит ссылку на первую запись цепи Цепь в БД с логическим именем СелекторБД.
chain_last(СелекторБД,Цепь,ПоследняяСсылка)
(db_selector,string,ref) — (i,i,o)
Предикат находит ссылку на последнюю запись цепи Цепь в БД с логическим именем СелекторБД.
chain_next(СелекторБД,Ссылка,СледующаяСсылка)
(db_selector,ref,ref) — (i,i,o)
Предикат находит ссылку (СледующаяСсылка) на запись, расположенную следом за записью, имеющей ссылку Ссылка. Операция выполняется в БД с логическим именем СелекторБД.
chain_prev(СелекторБД,Ссылка,ПредыдущаяСсылка)
(db_selector,ref,ref) — (i,i,o)
Предикат находит ссылку (СледующаяСсылка) на запись, расположенную перед записью, имеющей ссылку Ссылка. Операция выполняется в БД с логическим именем СелекторБД.
term_delete(СелекторБД,Цепь,Ссылка)
(db_selector,string,ref) — (i,i,i)
В БД с логическим именем СелекторБД предикат удаляет из цепи с именем Цепь запись, имеющую ссылку Ссылка.
term_replace(СелекторБД,Объект,Ссылка,НоваяЗапись)
(db_selector,symbol,ref,<Domain>) — (i,i,i,i)
В БД с логическим именем СелекторБД предикат заменяет запись, имеющую ссылку Ссылка на запись НоваяЗапись типа данных Объект.
ref_term(СелекторБД,Объект,Ссылка,Запись)
(db_selector,symbol,ref,<Domain>) — (i,i,i,_)
В БД с логическим именем СелекторБД предикат определяет Запись типа данных Объект, имеющую ссылку Ссылка.
