ジャーナルデータとマスタデータを連結条件に合わせて結合編集し、連結結果をファイルに出力します。
入力ジャーナルファイル (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を使用したプログラミング例を示します
#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 = "{join (Journal, Master1, $Kbn == $Kcode, ¥"LEFT¥")," "join (Journal, Master2, $Number == $Ncode, ¥"LEFT¥")}"; 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; } |
"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" |