| Interstage Data Effector ユーザーズガイド |
目次
索引
![]()
|
| 付録F サンプルプログラム |
入力データを指定した項目でソートし、結果をファイルに出力します。
入力データファイル (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","川崎店 |
目次
索引
![]()
|