uCosminexus Interschema ユーザーズガイド

[目次][用語][索引][前へ][次へ]

付録D.9 互換APIの使用例

互換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");
      }
    }
  }
}