レコードを読むんだってば

前回はレコードの大きさなどの情報を取得しただけでした。今回は実際にメモリに読み込みましょう。

#include <sample.h>

VOID main(W argc, TC ** argv)
{
  LINK SrcLink;
  WERR WErr, SrcFD, Type;
  W SearchMode = F_FWD, Number, Size;
  UH Subtype;
  B * Record;

  WErr = get_lnk(L"test", &SrcLink, F_NORM);
  SrcFD = opn_fil(&SrcLink, F_READ, NULL);
  while( 0 <= (Type = fnd_rec(SrcFD, SearchMode, 0xffff, 0, &Number)) ) {
    if ( SearchMode == F_FWD ) SearchMode = F_NFWD;
    WErr = rea_rec(SrcFD, 0, NULL, 0, &Size, &Subtype);
    printf("number: %d, type: %d, size: %d, subtype: %d\n",
	   Number, Type, Size, Subtype);
    Record = malloc( sizeof( B ) * Size );
    WErr = rea_rec(SrcFD, 0, Record, Size, NULL, NULL);
    free( Record );
  }
  cls_fil( SrcFD );
}

プログラムを置いておきます

プログラムの解説

読み込むべきレコードの大きさが分かったら、その分の領域をmallocして再びrea_recするだけです。もちろんfreeするのを忘れずに。ただ、このままでは本当に実身から主記憶に読み込んだのかどうか分かりません。そこで今度は別の実身に書き戻すことで確認してみましょう。


Tamakoshi Hiroki
Last modified: Wed Nov 27 00:34:28 JST 2002