User manual - DT-900 高速ファイルサーチライブラリver.1.00(2006年9月29日)
Hash Library User’s Manual 15
変数 W, V, L, Iの初期値は以下のとおりです。
l = キー長 = 8
L = レコード長 = 10
V = 総レコード数 = 40
W = 総インデックス数 = Vの1.2倍 = 48
int iI; /* To hold result of HashFunctins.*/
char *pszBuff, /* Key input to Hash Functions. */
*pszReadBuf; /* To hold read/write data. */
/* ap_init(); */ /* Removed on info from CASIO 28-NOV-1997 */
/*--------------------- HASH ASIGN START ----------------------------------*/
fpData = fopen("a:\\sample.dat","r");
fpIndex = fopen("b:\\sample.idx","w+");
pszBuff = malloc((size_t)(40));
iDisplayMessage ("HASH asign started : ");
iI = iHashAssign (fpData, fpIndex, ll, lV, lL, lW1);
if (iI != 0)
{
iDisplayMessage ("** ERROR: HashAssign **");
sprintf (pszBuff, "%d",iI);
iDisplayMessage (pszBuff);
}
SAMPLEディレクトリにある SAMPLE.DATのデータは、以下のとおりです。
00000000ab
00000001ab
00000002ab
00000003ab
00000004ab
00000005ab
00000006ab
00000007ab
00000008ab
00000009ab
iHashAssign() 関数は上記すべてのレコード(10レコード)をアサインした後にリターンします。
iHashAssign() 関数終了時にインデックスファイル(SAMPLE.IDX)が生成されます。
インデックスファイルの内容は以下のとおりです。
00000030 indicates W = 48
indicates W = 48indicates W = 48
indicates W = 48 }
00000028 indicates V = 40
indicates V = 40indicates V = 40
indicates V = 40 } ヘッダ
0000000A indicates L = 10
indicates L = 10indicates L = 10
indicates L = 10 }
00000008 indicates l = 8
indicates l = 8indicates l = 8
indicates l = 8 }
0000000A indicates N = 10
indicates N = 10indicates N = 10
indicates N = 10 }
00000001 ここからインデックスのエントリが開始されます。
00000000
00000005
00000000
上記例では、 V=40
V=40V=40
V=40となっています。これは、インデックスファイルがトータル40
4040
40レコード
レコードレコード
レコード確保されている
ことを意味します。 N=10
N=10N=10
N=10は、インデックスファイル容量40レコード中10レコードが使用されていることを意
味します。
iDisplayMessage ("HASH asign over\n");
fclose (fpData);
fclose (fpIndex);
/*------------------------ HASH ASIGN END ---------------------------------*/