入力データを指定した項目でソートし、結果をファイルに出力します。
入力データファイル (in.csv)
"Rcode","Rname","Scode","Sname","Sales","Location","Size" "001","東京","1002","渋谷店","3000","繁華街","150" "004","神奈川","4001","川崎店","5000","駅ビル","120" "002","千葉","2002","浦安店","2000","駅ビル","137" "002","千葉","2001","船橋店","1500","モール","215" "001","東京","1006","品川店","5000","駅中","90" "003","埼玉","3001","大宮店","3000","専門店","200" "001","東京","1004","新宿店","9000","百貨店","120" "004","神奈川","4002","横浜店","8000","繁華街","170" "001","東京","1001","東京店","12000","駅中","100" "003","埼玉","3002","浦和店","2000","専門店","95" "002","千葉","2003","千葉店","6000","専門店","250" |
Rcodeについて昇順に並び替え、Rcodeが同じレコードについてはSalseで降順で並び替えて、各レコードのRcode、Rname、Sales、Snameを取り出します。
以下にAPIを使用したプログラミング例を示します。
#include <stdio.h> #include "libAsis.h" /* ソート機能 サンプルプログラム */ int main() { /* ハンドル変数群 */ ASISHANDLE handle; /* 作業用変数群 */ int status; /* 入力パラメタ群 */ char *logFile; char *envName; char *envValue; char *WorkFolder; int MemorySize; char *CharacterCode; char *inFileType; char *inFile; char *outFile; char *Ocondition; char *Rcondition; /* エラー用変数群 */ int errorLevel; const char *Message; /* 変数の初期化 */ handle = NULL; /* ソートハンドルの割当て */ logFile = "C:¥¥shunAsis¥¥sample¥¥Sort.log"; status = AsisAllocHandleSort( &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; } /* ソート機能の実行環境の設定 */ WorkFolder = "C:¥¥shunAsis¥¥sample¥¥tmp"; MemorySize = 500; status = AsisSetEnvSort( handle, WorkFolder, MemorySize, NULL, NULL ); if ( status != ASIS_SUCCESS ) { goto ErrorEnd; } /* ソートの実行 */ CharacterCode = "SHIFT-JIS"; inFileType = "CSV"; inFile = "C:¥¥shunAsis¥¥sample¥¥in.csv"; outFile = "C:¥¥shunAsis¥¥sample¥¥out.csv"; Ocondition = "$Rcode, val($Sales) DESC"; Rcondition = "$Rcode, $Rname, $Sales, $Sname"; status = AsisExecuteSort( handle, CharacterCode, inFileType, inFile, outFile, Ocondition, Rcondition, NULL, NULL ); if ( status != ASIS_SUCCESS ) { goto ErrorEnd; } /* ソートハンドルの解放 */ status = AsisFreeHandleSort( 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 = AsisFreeHandleSort( handle ); if ( status != ASIS_SUCCESS ) { printf( "ハンドル解放エラー : %d¥n", status ); } } return 1; } |
"Rcode","Rname","Sales","Sname" "001","東京","12000","東京店" "001","東京","9000","新宿店" "001","東京","5000","品川店" "001","東京","3000","渋谷店" "002","千葉","6000","千葉店" "002","千葉","2000","浦安店" "002","千葉","1500","船橋店" "003","埼玉","3000","大宮店" "003","埼玉","2000","浦和店" "004","神奈川","8000","横浜店" "004","神奈川","5000","川崎店 |