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(Windows版) Cプログラミング例

/* 可変長レコード可変長フィールドの入出力ファイルインタフェース */
/* サンプルプログラム                      */
/*                                */
/* 入力ファイル : exp1.in               */
/* 出力ファイル : exp1.out              */
/* フィールド分離文字 : ブランク               */
/* ソートキー  : その1 1フィールド目           */
/*          その2 3フィールド目           */
/* キー比較時オプション : ソートキー その2-数値比較    */

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

struct   intftbl      p_intftbl;          /* インタフェーステーブル */
struct   fieldtbl_v   p_fieldtbl_v;       /* フィールドテーブル(可変長キー) */
struct   fieldinf_v   p_fieldinf_v1;
struct   fieldinf_v   p_fieldinf_v2;
struct   optiontbl    p_optiontbl;        /* オプション指定テーブル */
struct   reporttbl    p_exerep;           /* 実行情報出力テーブル */
struct   infiletbl    p_infiletbl;        /* 入力ファイルテーブル */
struct   filespec_i   p_filespec_i;
struct   otfiletbl    p_otfiletbl;        /* 出力ファイルテーブル */
struct   filespec_o   p_filespec_o;

int main()
{

  /* * * * * * * * * * * * * * * */
  /*    テーブル初期値セット     */
  /* * * * * * * * * * * * * * * */

  /* インタフェーステーブル */
  memset(&p_intftbl,0,sizeof(p_intftbl)) ;
  p_intftbl.recform = VRVF;      /* レコード/キー形式:可変長 */
  p_intftbl.maxrecsiz = 0;
  p_intftbl.minmemsiz = 64;      /* 最小メモリサイズ */
  p_intftbl.maxmemsiz = 1024;    /* 最大メモリサイズ */

  /* フィールドテーブル */
  memset(&p_fieldtbl_v,0,sizeof(p_fieldtbl_v)) ;
  p_fieldtbl_v.csoption = 0;        /* キー比較時オプション(グローバル):無し */
  p_fieldtbl_v.fieldinf_num = 2;    /* キー数 */
  p_fieldtbl_v.delimit = NULL;      /* フィールド分離文字:指定なし(ブランク) */
  p_fieldtbl_v.code = 0;            /* 文字コード:ASCII */
  p_fieldtbl_v.fieldinf_v[0] = &p_fieldinf_v1;  /* キー その1 */
  p_fieldtbl_v.fieldinf_v[1] = &p_fieldinf_v2;  /* キー その2 */
	memset(&p_fieldinf_v1,0,sizeof(p_fieldinf_v1)) ;
	p_fieldinf_v1.fieldpos1 = 0;    /* ソートキー開始フィールド:0フィールド目 */
	p_fieldinf_v1.bytepos1 = 0;     /* ソートキー開始バイト位置:0バイト目 */
	p_fieldinf_v1.fieldpos2 = 1;    /* ソートキー終了フィールド:1フィールド目 */
	p_fieldinf_v1.bytepos2 = 0;     /* ソートキー終了バイト位置:0バイト目 */
	p_fieldinf_v1.csoption = 0;     /* キー比較時オプション:なし */

	memset(&p_fieldinf_v2,0,sizeof(p_fieldinf_v2)) ;
	p_fieldinf_v2.fieldpos1 = 2;     /* ソートキー開始フィールド:2フィールド目 */
	p_fieldinf_v2.bytepos1 = 0;      /* ソートキー開始バイト位置:0バイト目 */
	p_fieldinf_v2.fieldpos2 = 3;     /* ソートキー終了フィールド:3フィールド目 */
	p_fieldinf_v2.bytepos2 = 0;      /* ソートキー終了バイト位置:0バイト目 */
	p_fieldinf_v2.csoption = CS_NUM; /* キー比較時オプション:数値比較 */


  /* オプションテーブル */
  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.rpfile = NULL;
  p_exerep.title = "===== VRVF file interface sample program =====";

  /* 入力ファイルテーブル */
  memset(&p_infiletbl,0,sizeof(p_infiletbl)) ;
  p_infiletbl.filespec_i_num = 1;       /* 入力ファイル数 */
  p_infiletbl.filespec_i[0] = &p_filespec_i;
  p_filespec_i.pathname = "exp1.in";    /* 入力ファイル名 */
  p_filespec_i.filetype = STM;          /* ファイルタイプ */

  /* 出力ファイルテーブル */
  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 = "exp1.out";   /* 出力ファイル名 */
  p_filespec_o.altfile = NULL;
  p_filespec_o.filetype = STM;          /* ファイルタイプ */

  /*****************/
  /*    ソート処理開始    */
  /*****************/

  nsort_init(&p_intftbl,&p_fieldtbl_v,&p_optiontbl,&p_infiletbl,&p_otfiletbl);
  if(p_intftbl.errinfo.status != 0)
  {
	/* ソートエラー */
	fprintf(stderr,"error status = %d¥n",p_intftbl.errinfo.status);
	return 1;
  }
  fprintf(stderr,"nsort end¥n");
  return 0;
}