/* */
/* 固定長レコード固定長キーの入出力ファイルインタフェース */
/* サンプルプログラム */
/* */
/* 入力ファイル : 実行時にファイル名とレコード長指定 */
/* 出力ファイル : 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;
}