Please note that JavaScript and style sheet are used in this website,
Due to unadaptability of the style sheet with the browser used in your computer, pages may not look as original.
Even in such a case, however, the contents can be used safely.

Empowered by Innovation NEC

SORTKIT(UNIX版、Linux版) Cプログラミング例

/*                              */
/* 固定長レコード固定長キーの入出力ファイルインタフェース  */
/* サンプルプログラム                    */
/*                              */
/* 入力ファイル : 実行時にファイル名とレコード長指定   */
/* 出力ファイル : nsort-out           */
/* ソートキー  : 先頭5バイト(1バイト文字)      */
/*                              */

#include <stdio.h>
#include <nsort.h>

/* パラメータテーブル領域 */
struct intftbl    p_intftbl;
struct fieldtbl_f p_fieldtbl_f;
struct fieldinf_f p_fieldinf_f;
struct optiontbl  p_optiontbl;
struct reporttbl  p_exerep;
struct infiletbl  p_infiletbl;
struct filespec_i p_filespec_i;
struct filespec_o p_filespec_o;
struct otfiletbl  p_otfiletbl;

int main()
{
  char     s[50];
  char     w_fname[101];
  int      w_recsz;

  /* 入力ファイル名・レコード長セット */
  fprintf(stderr,"固定長レコード/固定長キーのテスト¥n");
  fprintf(stderr,"入力ファイル名:");
  fgets(w_fname, 100, stdin);
  w_fname[strlen(w_fname)-1] = '¥0'; /* 改行コード削除 */
  fprintf(stderr,"レコード長:");
  w_recsz = atoi(gets(s));

  /* テーブル初期値セット */
  /* インタフェーステーブル */
  memset(&p_intftbl, 0, sizeof(p_intftbl));
	p_intftbl.recform = FRFF; /* 固定長レコード/固定長キー */
	p_intftbl.maxrecsiz = w_recsz; /* レコード長 */

  /* フィールドテーブル */
  memset(&p_fieldtbl_f, 0, sizeof(p_fieldtbl_f));
	p_fieldtbl_f.fieldinf_num = 1;
	p_fieldtbl_f.fieldinf_f[0] = &p_fieldinf_f;
  memset(&p_fieldinf_f, 0, sizeof(p_fieldinf_f));
	p_fieldinf_f.fieldsize = 5; /* 5バイト */
	p_fieldinf_f.fieldtype = CH; /* 1バイト文字 */

  /* オプションテーブル */
  memset(&p_optiontbl, 0, sizeof(p_optiontbl));
	p_optiontbl.exerep = &p_exerep;
  memset(&p_exerep, 0, sizeof(p_exerep));
	p_exerep.stdiof = 1;
	p_exerep.title = "===== サンプルプログラム =====";

  /* 入力ファイルテーブル */
  memset(&p_infiletbl, 0, sizeof(p_infiletbl));
	p_infiletbl.filespec_i_num = 1;
	p_infiletbl.filespec_i[0] = &p_filespec_i;
  memset(&p_filespec_i, 0, sizeof(p_filespec_i));
	p_filespec_i.pathname = w_fname; /* 入力ファイル名 */
	p_filespec_i.filetype = SEQ;

  /* 出力ファイルテーブル */
  memset(&p_otfiletbl, 0, sizeof(p_otfiletbl));
	p_otfiletbl.filespec_o_num = 1;
	p_otfiletbl.filespec_o[0] = &p_filespec_o;
  memset(&p_filespec_o, 0, sizeof(p_filespec_o));
	p_filespec_o.pathname = "nsort-out"; /* 出力ファイル名 */
	p_filespec_o.altfile = "alt";
	p_filespec_o.filetype = SEQ;

  /* ソート実行 */
  nsort_init(&p_intftbl,(void *)&p_fieldtbl_f,&p_optiontbl,&p_infiletbl,&p_otfiletbl);
  if (p_intftbl.errinfo.status != 0)
  {
	fprintf(stderr,"error status = %d¥n",p_intftbl.errinfo.status);
	return 1;
  }
  return 0;
}