Server for Information Technologies óÅÒ×ÅÒ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ
ãÅÎÔÒÏÍ éÎÆÏÒÍÁÃÉÏÎÎÙÈ ôÅÈÎÏÌÏÇÉÊ
(095) 932-9212, 932-9213, 939-0783
E-mail: info@citforum.ru
óÅÒ×ÅÒ ÓÏÄÅÒÖÉÔ ÍÏÒÅ(!) ÁÎÁÌÉÔÉÞÅÓËÏÊ ÉÎÆÏÒÍÁÃÉÉ CIT Forum CD-ROM

DBM(3)
XENIX System V (21 ÉÀÎÑ 1987)

éíñ
dbminit, fetch, store, delete, firstkey, nextkey - yÐpa×ÌÑeÔ ÂaÚoÊ ÄaÎÎÙx

óéîôáëóéó

	typedef struct {char *dptr;int dsize;} datum;
	
	int dbminit (file)
	char *file;
	
	datum fetch (key)
	datum key;
	
	store (key, content)
	datum key, content;
	
	delete (key)
	datum key;
	
	datum firstkey ()
	
	datum nextkey (key)
	datum key;

ïðéóáîéå
üÔÉ ÆyÎËÃÉÉ yÐpa×ÌÑÀÔ paÂoÔoÊ ÂaÚÙ ÄaÎÎÙx, × ËoÔopoÊ ÄocÔyÐ Ë ËaÖÄoÍy ÜÌeÍeÎÔy ÂaÚÙ ocyÝecÔ×ÌÑeÔcÑ Ðo ËÌÀÞy. æyÎËÃÉÉ ÍoÇyÔ oÂcÌyÖÉ×aÔØ oÞeÎØ ÂoÌØÛÉe ÂaÚÙ ÄaÎÎÙx (Äo ÍÉÌÌÉapÄa ÂÌoËo×). äocÔyÐ Ðo ËÌÀÞy ÍoÖeÔ ÂÙÔØ ËaË ÐpÑÍÙÍ, ÔaË É ÐocÌeÄo×aÔeÌØÎÙÍ. ðpoÇpaÍÍÙ, ÉcÐoÌØÚyÀÝÉe ÜÔÉ ÆyÎËÃÉÉ, ÄoÌÖÎÙ ËoÍÐoÎo×aÔØcÑ c ÆÌaÇoÍ -ldbm.

ðoÌÑ key É content oÐÉcÙ×aÀÔcÑ c ÐoÍoÝØÀ ÉÍeÎÉ ÔÉÐa datum, ÚaÄaÀÝeÇo cÔpoËy ÉÚ dsize ÂaÊÔo×, Îa ËoÔopyÀ yËaÚÙ×aeÔ dptr. äoÐycÔÉÍÙ ÐpoÉÚ×oÌØÎÙe ÄaÎÎÙe × Ä×oÉÞÎoÊ cÉcÔeÍe cÞÉcÌeÎÉÑ É cÉÍ×oÌØÎÙe cÔpoËÉ. âaÚa ÄaÎÎÙx paÚÍeÝaeÔcÑ × Ä×yx ÆaÊÌax. ðep×ÙÊ ÆaÊÌ ÜÔo ËaÔaÌoÇ ÂaÚÙ, coÄepÖaÝÉÊ ËapÔy pacÐpeÄeÌeÎÉÑ ÐaÍÑÔÉ. BÔopoÊ ÆaÊÌ coÄepÖÉÔ coÂcÔ×eÎÎo ÄaÎÎÙe. éÍÑ Ðep×oÇo ÆaÊÌa ÉÍeeÔ cyÆÆÉËc .dir, ÉÍÑ ×ÔopoÇo - cyÆÆÉËc .pag.

äÌÑ ÐoÌyÞeÎÉÑ ÄocÔyÐa Ë ÂaÚe ee ÎyÖÎo oÔËpÙÔØ ×ÙÚo×oÍ dbminit. B ÍoÍeÎÔ oÔËpÙÔÉÑ ÆaÊÌÙ file.dir É file.pag (file - apÇyÍeÎÔ ÆyÎËÃÉÉ dbminit) ÄoÌÖÎÙ cyÝecÔ×o×aÔØ. ðycÔaÑ ÂaÚa coÚÄaeÔcÑ ÐyÔeÍ coÚÄaÎÉÑ ÜÔÉx ÆaÊÌo× c ÎyÌe×oÊ ÄÌÉÎoÊ.

ðocÌe oÔËpÙÔÉÑ ÂaÚÙ ÄaÎÎÙe ÉÚ Îee ×ÙÂÉpaÀÔcÑ c ÐoÍoÝØÀ ÆyÎËÃÉÉ fetch É ÚaÎocÑÔcÑ × Îee c ÐoÍoÝØÀ ÆyÎËÃÉÉ store. BÙÂopËa É ÚaÎeceÎÉe ÐpoÉÚ×oÄÑÔcÑ c ÐoÍoÝØÀ ËÌÀÞa - apÇyÍeÎÔa key. KÌÀÞ É c×ÑÚaÎÎÙe c ÎÉÍ ÄaÎÎÙe yÎÉÞÔoÖaÀÔcÑ c ÐoÍoÝØÀ ÆyÎËÃÉÉ delete. ðocÌeÄo×aÔeÌØÎÙÊ ÐpocÍoÔp ×cex ËÌÀÞeÊ × ÂaÚe ÍoÖeÔ ÂÙÔØ cÄeÌaÎ c ÐoÍoÝØÀ ÆyÎËÃÉÊ firstkey É nextkey. Firstkey ×oÚ×paÝaeÔ Ðep×ÙÊ ËÌÀÞ × ÂaÚe, nextkey ×oÚ×paÝaeÔ ËÌÀÞ, ËoÔopÙÊ cÌeÄyeÔ Úa ËÌÀÞoÍ, Ñ×ÌÑÀÝÉÍcÑ apÇyÍeÎÔoÍ ÆyÎËÃÉÉ. HÉÖecÌeÄyÀÝÉÊ ÃÉËÌ ÐoÚ×oÌÑeÔ ÐpocÍoÔpeÔØ ×cÀ ÂaÚy:

	for(key=firstkey();key.dptr!=NULL;key=nextkey(key))

BOú÷PAýAEíOE úîAþEîéE
æyÎËÃÉÉ, ×oÚ×paÝaÀÝÉe ÃeÌÙe ÚÎaÞeÎÉÑ, × cÌyÞae oÛÉÂËÉ ×oÚ×paÝaÀÔ oÔpÉÃaÔeÌØÎoe ÞÉcÌo. B cÌyÞae ycÐeÛÎoÇo Úa×epÛeÎÉÑ ×oÚ×paÝaeÔcÑ 0. æyÎËÃÉÉ, ×oÚ×paÝaÀÝÉe ÚÎaÞeÎÉe ÔÉÐa datum, × cÌyÞae oÛÉÂËÉ ycÔaÎa×ÌÉ×aÀÔ ÐoÌe dptr × NULL.

úAíEþAîéñ
æaÊÌ `.pag' ÍoÖeÔ coÄepÖaÔØ ÐycÔÙe oÂÌacÔÉ, ÔaË ÞÔo eÇo oÂßeÍ ÍoÖeÔ ÐpÉÍepÎo × 4 paÚa Ðpe×ÙÛaÔØ oÂßeÍ xpaÎÉÍÙx × ÂaÚe ÄaÎÎÙx. ðpeÖÎÉe ×epcÉÉ XENIX ÐpÉ oÂpaÝeÎÉÉ Ë ÐycÔÙÍ oÂÌacÔÑÍ ÆaÊÌa ÍoÇÌÉ ÚaÎÉÍaÔØ ÐoÄ ÎÉx peaÌØÎÙe ÂÌoËÉ ÄÉcËo×oÇo ÐpocÔpaÎcÔ×a. TaËÉe ÆaÊÌÙ Îe ÍoÇyÔ ÂÙÔØ cËoÐÉpo×aÎÙ oÂÙÞÎÙÍÉ cpeÄcÔ×aÍÉ (cp, cat, tp, tar, ar) ÂeÚ ÐpeÄ×apÉÔeÌØÎoÇo ÚaÐoÌÎeÎÉÑ ÐycÔÙx oÂÌacÔeÊ.

õËaÚaÔeÌØ dptr × cÔpyËÔypax ÔÉÐa datum, ×oÚ×paÝaeÍÙx ÎeËoÔopÙÍÉ ÆyÎËÃÉÑÍÉ, yËaÚÙ×aeÔ cÔaÔÉÞecËyÀ oÂÌacÔØ ÐaÍÑÔÉ, ËoÔopaÑ ÐepeÚaÐÉcÙ×aeÔcÑ oÞepeÄÎÙÍ ×ÙÚo×oÍ.

CyÍÍapÎaÑ ÄÌÉÎa ÐapÙ `ËÌÀÞ/ÄaÎÎÙe' Îe ÄoÌÖÎa Ðpe×ÙÛaÔØ paÚÍepa ÂÌoËa (512 ÂaÊÔa). âoÌee ÔoÇo, ×ce ÔaËÉe ÐapÙ, ÉÍeÀÝÉe ÐpÉ xeÛÉpo×aÎÉÉ oÄÎo ÚÎaÞeÎÉe, ÄoÌÖÎÙ paÚÍeÝaÔØcÑ × oÄÎoÍ ÂÌoËe. EcÌÉ ÜÔo Îe ÔaË, store ×oÚ×paÝaeÔ oÛÉÂËy.

Delete Îe ÉÚÍeÎÑeÔ oÂßeÍa ÆaÊÌa, Îo ÄeÌaeÔ yÄaÌeÎÎÙe ÚaÐÉcÉ ÄocÔyÐÎÙÍÉ ÄÌÑ Îo×oÇo ÉcÐoÌØÚo×aÎÉÑ.

ðopÑÄoË ËÌÀÞeÊ, ÚaÄa×aeÍÙÊ ÆyÎËÃÉÑÍÉ firstkey É nextkey, oÐpeÄeÌÑeÔcÑ xeÛÉpo×aÎÉeÍ.

üÔÉ ÐpoÇpaÍÍÙ ÎepeeÎÔepaÂeÌØÎÙ, ÐoÜÔoÍy Éx ÎeÌØÚÑ ÉcÐoÌØÚo×aÔØ ÄÌÑ paÂoÔÙ c ÎecËoÌØËÉÍÉ ÂaÚaÍÉ oÄÎo×peÍeÎÎo.
Comments: info@citmgu.ru
Designed by Andrey Novikov
Copyright © CIT