Interstage Data Effector ユーザーズガイド
目次 索引 前ページ次ページ

付録F サンプルプログラム

F.1 データの抽出

入力データの中で検索条件に一致するデータを検索し、抽出結果をファイルに出力します。

■ドキュメントサンプ

スキーマ情報ファイル (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つの検索条件に対する抽出処理を同時に実行します。

■APIの使用

以下に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; }

目次 索引 前ページ次ページ

Copyright 2007 FUJITSU LIMITED