logo search
TurboProlog / Документация / TOM_1

Вывод содержания базы данных

Вы можете использовать предикат listdba, определенный ниже для выво-

да текущего состояния базы данных. Он имеет один аргумент: селектор прос-

матриваемой уже открытой базы данных. Все термы в базе данных должны быть

одного домена. В примере определен домен mydom; когда вы используете этот

предикат, необходимо заменить mydom на имя домена, используемого в вашей

программе.

/* Программа CH15EX04.PRO */

/* Эта программа нуждается в предыдущем фрагменте */

domains

db_selector = mydba

mydom = city(zipcode, cityname);

person(firstname, lastname, street, zipcode, code)

zipcode, cityname, firstname, lastname, streen, code = string

predicates

listdba(db_selector)

clauses

listdba(db_selector) :-

write("\n**************************************"),

write("\n DATABASE LISTING "),

write("\n**************************************"),

db_statistics(Db_selector, NoOfTerms, MenSize, FreeSize),

write("\n\nTotal number of records in the database:",

NoOfTerms),

write("\nNumber of bites used in main memory:",MemSize),

write("\nNumber of bites used by the database:",DbaSize),

write("\nNumber of bites free on disk:",FreeSize),

fail.

listdba(db_selector) :-

db_chains(Db_selector, Chain),

write("\n\n\n\n********Chain LISTING************"),

write("\n\nName=", Chain),

write("\n\nCONTENT OF: ", Chain),

write("\n---------------------------------\n"),

chain_terms(Db_selector, Chain, mydom, Term, Ref),

write("\n", Ref, ":", Term),

fail.

listdba(db_selector) :-

db_btrees(Db_selector,Btree),/* Returns each B+tree name */

bt_open(Db_selector, Btree, Bt_selector),

bt_statistics(Db_selector, Btree, Bt_selector,NoOfKeys,

NoOfPages, Dept, KeyLen, Order, PageSize),

write("\n\n\n********Index LISTING************"),

write("\n\nName= ", Btree),

write("\nNoOfKeys ", NoOfKeys),

write("\nNoOfPages=", NoOfPages),

write("\nDept= ", Dept),

write("\nOrder= ", Order),

write("\nKeyLen= ", KeyLen),

write("\nPageSize= ", PageSize), n1,

write("\n\nCONTENT OF: ", Btree),

write("\n---------------------------------\n"),

bt_keys(Db_selector, Bt_selector, Key, Ref),

write("\n", Key, "-", Ref),

fail.

listdba(_).

goal

db_open(Mydba, "register.bin", in_file),

listdba(Midba).