入力データの中で検索条件に一致するデータを検索し、抽出結果をファイルに出力します。
スキーマ情報ファイル (schema.csv)
"Kbn","Kname","Number","Nname","Code","Name","Val"
入力データファイル (indata.csv)
"01","設備","1000","第一開発部","AAA","ブロックA","1000" "01","設備","1000","第一開発部","BBB","ブロックB","1200" "01","設備","1000","第一開発部","CCC","ブロックC","800" "02","事務","1000","第一開発部","AAA","ブロックA","500" "02","事務","1000","第一開発部","BBB","ブロックB","200" "01","設備","1001","第二開発部","AAA","ブロックA","100" "01","設備","1001","第二開発部","BBB","ブロックB","500" "02","事務","1001","第二開発部","AAA","ブロックA","5000" "02","事務","1001","第二開発部","BBB","ブロックB","3200" "01","設備","1002","第三開発部","AAA","ブロックA","1500" "01","設備","1002","第三開発部","BBB","ブロックB","1000" "02","事務","1002","第三開発部","AAA","ブロックA","1520" |
3つの検索条件に対する抽出処理を同時に実行します。
抽出条件1
Kbnが"01"のデータを抽出します。
抽出条件2
抽出条件1に一致するデータから、Codeが"AAA"のデータを抽出します。
抽出条件3
抽出条件2に一致しないデータから、Codeが"AAA"のデータを抽出します。
以下にAPIを使用したプログラミング例を示します。
#include <stdio.h> #include "libAsis.h" /* 抽出機能 サンプルプログラム */ int main() { /* ハンドル変数群 */ ASISHANDLE handle; /* 作業用変数群 */ int status; /* 入力パラメタ群 */ char *logFile; char *CharacterCode; char *inFileType; char *query1, *query2, *query3; char *outFile1, *outFile2, *outFile3; char *queryId1, *queryId2, *queryId3; char *schemaFile; int inFileCnt; char *inFile; /* エラー用変数群 */ int errorLevel; const char *Message; /* 変数の初期化 */ handle = NULL; /* 抽出ハンドルの割当て */ logFile = "C:¥¥shunAsis¥¥sample¥¥Select.log"; status = AsisAllocHandleSelect( &handle, logFile ); if ( status != ASIS_SUCCESS ) { goto ErrorEnd; } /* 動作環境パラメタの指定 */ CharacterCode = "SHIFT-JIS"; inFileType = "CSV"; status = AsisInitSelect( handle, CharacterCode, inFileType, NULL, NULL, 0, 0, NULL, NULL, NULL ); if ( status != ASIS_SUCCESS ) { goto ErrorEnd; } /* 抽出条件1の登録 */ query1 = "$Kbn==¥'01¥'"; outFile1 = "C:¥¥shunAsis¥¥sample¥¥out1.csv"; queryId1 = "1"; status = AsisAddQuerySelect( handle, query1, 0, outFile1, queryId1, NULL, NULL ); if ( status == ASIS_ERROR ) { goto ErrorEnd; } /* 抽出条件2の登録 */ query2 = "%1 AND $Code==¥'AAA¥'"; outFile2 = "C:¥¥shunAsis¥¥sample¥¥out2.csv"; queryId2 = "2"; status = AsisAddQuerySelect( handle, query2, 0, outFile2, queryId2, NULL, NULL ); if ( status == ASIS_ERROR ) { goto ErrorEnd; } /* 抽出条件3の登録 */ query3 = "~(%1) AND $Code==¥'AAA¥'"; outFile3 = "C:¥¥shunAsis¥¥sample¥¥out3.csv"; queryId3 = "3"; status = AsisAddQuerySelect( handle, query3, 0, outFile3, queryId3, NULL, NULL ); if ( status == ASIS_ERROR ) { goto ErrorEnd; } /* スキーマ情報の指定 */ schemaFile = "C:¥¥shunAsis¥¥sample¥¥schema.csv"; status = AsisSetSchemaSelect( handle, 1, schemaFile ); if ( status != ASIS_SUCCESS ) { goto ErrorEnd; } /* 入力ファイルの指定 */ inFileCnt = 1; inFile = "C:¥¥shunAsis¥¥sample¥¥indata.csv"; status = AsisSetDataSelect( handle, inFileCnt, &inFile ); if ( status != ASIS_SUCCESS ) { goto ErrorEnd; } /* 抽出の実行 */ status = AsisExecuteSelect( handle ); if ( status != ASIS_SUCCESS ) { goto ErrorEnd; } /* 抽出ハンドルの解放 */ status = AsisFreeHandleSelect( handle ); if ( status != ASIS_SUCCESS ) { goto ErrorEnd; } return 0; ErrorEnd: /* エラーが発生した際のエラー処理 */ /* エラー情報の取得 */ status = AsisGetErrorLevel( handle, &errorLevel ); if ( status == ASIS_SUCCESS ) { switch( errorLevel ) { case ASIS_EL_WARNING: printf( "エラーレベル : 警告¥n"); break; case ASIS_EL_ERR_DATA: printf( "エラーレベル : データのエラー¥n"); break; case ASIS_EL_ERR_PARAMETER: printf( "エラーレベル : パラメタのエラーまたは使用方法のエラー¥n"); break; case ASIS_EL_ERR_ENVIRONMENT: printf( "エラーレベル : 実行環境のエラー¥n"); break; default: printf( "エラーレベル取得エラー¥n"); break; } } else { printf( "エラーレベル取得エラー : %d¥n", status ); } status = AsisGetMessageText( handle, &Message ); if ( status == ASIS_SUCCESS ) { printf( "メッセージ : %s¥n", Message ); } else { printf( "メッセージ取得エラー : %d¥n", status ); } /* 抽出ハンドルの解放 */ if ( handle != NULL ) { status = AsisFreeHandleSelect( handle ); if ( status != ASIS_SUCCESS ) { printf( "ハンドル解放エラー : %d¥n", status ); } } return 1; } |
・抽出条件1の実行結果(out1.csv)
"Kbn","Kname","Number","Nname","Code","Name","Val" "01","設備","1000","第一開発部","AAA","ブロックA","1000" "01","設備","1000","第一開発部","BBB","ブロックB","1200" "01","設備","1000","第一開発部","CCC","ブロックC","800" "01","設備","1001","第二開発部","AAA","ブロックA","100" "01","設備","1001","第二開発部","BBB","ブロックB","500" "01","設備","1002","第三開発部","AAA","ブロックA","1500" "01","設備","1002","第三開発部","BBB","ブロックB","1000" |
・抽出条件2の実行結果(out2.csv)
"Kbn","Kname","Number","Nname","Code","Name","Val" "01","設備","1000","第一開発部","AAA","ブロックA","1000" "01","設備","1001","第二開発部","AAA","ブロックA","100" "01","設備","1002","第三開発部","AAA","ブロックA","1500" |
・抽出条件3の実行結果(out3.csv)
"Kbn","Kname","Number","Nname","Code","Name","Val" "02","事務","1000","第一開発部","AAA","ブロックA","500" "02","事務","1001","第二開発部","AAA","ブロックA","5000" "02","事務","1002","第三開発部","AAA","ブロックA","1520" |
AsisDeleteQuerySelect関数に、抽出ハンドルと検索番号を指定して検索式を削除します。
検索番号に0を指定した場合はすべての検索式を削除します。
int queryNo; /* 抽出条件の登録 */ queryNo = AsisAddQuerySelect( handle, query, 0, outFile, NULL, NULL, NULL ); if ( queryNo == ASIS_ERROR ) { goto ErrorEnd; } /* 抽出条件の削除 */ status = AsisDeleteQuerySelect( handle, queryNo ); if ( status != ASIS_SUCCESS ) { goto ErrorEnd; } |