互換APIの使用例を,次に示します。
#include <stdio.h>
#include "ETtrans.h"
static void print_message(int iCode, char *msg,
ETTRANSERRLIST *ErrList);
int main()
{
int iRet = 0;
ETTRANSADRSLIST AdrsList[3];
ETTRANSERRLIST ErrList;
char *c;
/* アドレスリストの設定 */
AdrsList[0].FormatName = "IN";
AdrsList[0].DataKind = ET_DK_FILE;
AdrsList[0].DataAddress = "input.txt";
AdrsList[1].FormatName = "OUT";
AdrsList[1].DataKind = ET_DK_FILE;
AdrsList[1].DataAddress = "output.txt";
AdrsList[2].FormatName = NULL;
/* トランスレータ初期化 */
iRet = ETtransInit(&c, NULL);
if (iRet) {
print_message(iRet, "ETtransInit", NULL);
goto EXIT;
}
/* MDLローディング */
iRet = ETtransLoadMap(c, "SAMPLE.mdl");
if (iRet) {
print_message(iRet, "ETtransLoadMap", NULL);
goto END;
}
/* 変換実行 */
iRet = ETtransExec(c, AdrsList, NULL, "-IERR",
ET_FA_UPDATE, ET_OP_FNOFF, &ErrList);
if (iRet) {
print_message(iRet, "ETtransExec", &ErrList);
goto END;
}
/* MDLアンロード */
iRet = ETtransUnLoadMap(c);
if (iRet) {
print_message(iRet, "ETtransUnLoadMap", NULL);
goto END;
}
END: /* 終了処理 */
iRet = ETtransEnd(c);
if (iRet) {
print_message(iRet, "ETtransEnd", NULL);
}
EXIT:
printf("--> Return Code = 0x%08x¥n", iRet);
return iRet;
}
/*
* エラー情報出力関数
*/
static void print_message(int iCode, char *msg,
ETTRANSERRLIST *ErrList)
{
int i;
ETTRANSERRDATA *edata;
printf("### ERROR %s %d ###¥n", msg, iCode);
if (ErrList) {
printf(" Error Size = %d¥n", ErrList->Size);
for (i = 0; i < ErrList->Size; i++) {
edata = &ErrList->ErrData[i];
printf("¥t%02d (0x%08x) num=%d",
edata->MessageNo, edata->ErrorLevel, edata->NumericData);
if (edata->Information) {
printf(" info=%s¥n", edata->Information);
} else {
printf("¥n");
}
}
}
}