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

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

F.2 データの連結

ジャーナルデータとマスタデータを連結条件に合わせて結合編集し、連結結果をファイルに出力します。

■ドキュメントサンプ

入力ジャーナルファイル (journal.csv)

"Kbn","Number","Code","Name","Val"

"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"

入力マスタファイル1 (master1.csv)

"Kcode","Kname"

"01","設備"

"02","事務"

入力マスタファイル2 (master2.csv)

"Ncode","Nname"

"1000","第一開発部"

"1001","第二開発部"

"1002","第三開発部"

■連結条

KbnとKcode、NumberとNcodeを連結照合して、それぞれKname、Nnameを取り出します。

■APIの使用

以下にAPIを使用したプログラミング例を示します。

#include <stdio.h>

#include "libAsis.h"



/* 連結機能 サンプルプログラム */

int main()

{

  /* ハンドル変数群 */

  ASISHANDLE handle;



  /* 作業用変数群 */

  int status;



  /* 入力パラメタ群 */

  char *logFile;

  char *envName;

  char *envValue;

  char *CharacterCode;

  char *inFileType;

  char *jnlFile;

  char *mstFile;

  char *listDef;

  char *outFileType;

  char *outputDef;

  char *Jcondition;

  char *outFile;



  /* エラー用変数群 */

  int errorLevel;

  const char *Message;



  /* 変数の初期化 */

  handle = NULL;



  /* 連結ハンドルの割当て */

  logFile = "C:\\shunAsis\\sample\\Replace.log";

  status = AsisAllocHandleReplace( &handle, logFile );

  if ( status != ASIS_SUCCESS ) {

    goto ErrorEnd;

  }



  /* 数値演算式における空の扱いを指定 */

  envName = ASIS_ENV_SubstituteZeroForEmpty;

  envValue = "NO";

  status = AsisSetEnvironment( handle, envName, envValue );

  if ( status != ASIS_SUCCESS ) {

    goto ErrorEnd;

  }



  /* 連結条件などの指定 */

  CharacterCode = "SHIFT-JIS";

  inFileType = "CSV";

  jnlFile = "Journal \"C:\\shunAsis\\sample\\journal.csv\"";

  mstFile = "{Master1 \"C:\\shunAsis\\sample\\master1.csv\""

            ",Master2 \"C:\\shunAsis\\sample\\master2.csv\"}";

  listDef = "{document(Journal){$Kbn Kbn,$Number Number,$Code Code,$Name Name,$Val Val}"

            ",document(Master1){$Kcode Kcode,$Kname Kname}"

            ",document(Master2){$Ncode Ncode,$Nname Nname}}";

  outFileType = NULL;

  outputDef = "{$Kbn,$Kname,$Number,$Nname,$Code,$Name,$Val}";

  Jcondition = "{$Kbn==$Kcode,$Number==$Ncode}";

  outFile = "C:\\shunAsis\\sample\\out.csv";

  status = AsisInitReplace( handle, CharacterCode, inFileType,

                            jnlFile, mstFile, listDef,

                            outFileType, outputDef, NULL,

                            Jcondition, outFile, NULL, NULL, NULL );

  if ( status != ASIS_SUCCESS ) {

    goto ErrorEnd;

  }



  /* 連結の実行 */

  status = AsisExecuteReplace( handle );

  if ( status != ASIS_SUCCESS ) {

    goto ErrorEnd;

  }



  /* 連結ハンドルの解放 */

  status = AsisFreeHandleReplace( 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 = AsisFreeHandleReplace( handle );

    if ( status != ASIS_SUCCESS ) {

      printf( "ハンドル解放エラー : %d\n", status );

    }

  }



  return 1;

}

■実行結果 (out.csv)

"Kbn","Kname","Number","Nname","Code","Name","Val"

"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"

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

Copyright 2007 FUJITSU LIMITED