9.2.9 ETtrans2Exec(変換実行)

形式

#include  "ETtrans.h"

int ETtrans2Exec (
 char *pTC,
 char *pMdlInfo,
 ETTRANSADRSLIST *pAdrsList,
 ETTRANSERRLIST *pErrList,
 void *pPtrToUsrFunc)

 

引数
引数種別内容
pTC入力スレッド固有情報を指定します。
pMdlInfo入力変換に使用するMDL情報を指定します。
pAdrsList入出力変換するフォーマットの入出力データ差し替え情報のリストを指定します。
pErrList出力エラー情報リストを取得します。
pPtrToUsrFunc入力出口関数に渡すポインタを指定します。
説明
引数pMdlInfoで指定されたMDL情報に従ってデータ変換をします。ETtrans2Exec関数を呼び出しているときのログは,引数pTCで渡されるスレッド固有情報を生成したときに指定されたログファイルに出力されます。
引数pTCには,ETtrans2CreateThreadContext関数で取得したスレッド固有情報を指定します。複数のスレッドから同じスレッド固有情報を指定して,ETtrans2Exec関数を呼び出さないでください。
引数pMdlInfoには,ETtrans2CreateMdlInfo関数で生成されたMDL情報を指定します。
引数pAdrsListは,MDLファイル内に定義した入出力ファイルを,別ファイル又はメモリデータに差し替える場合に指定します。この引数でデータを差し替えるフォーマット名と,対応するデータのファイル名,又はメモリアドレスを指定します。データを差し替えるフォーマット名は複数指定できます。また,差し替えるフォーマットの終了を示すために,ETTRANSADRSLIST配列の最後の要素のFormatNameメンバはNULLを指定する必要があります。
データ差し替えを指定されたフォーマットに対しては,MDLファイル内で定義された入出力データファイル名は無視されます。入力データと出力データのファイルは,同じファイル名を指定するとエラーとなります。また,MDLファイル内で定義された入出力データファイル名と同じファイル名を指定した場合もエラーとなります。
構造体ETTRANSADRSLISTは,ヘッダファイル「ETtrans.h」内で定義されています。
 

typedef struct {
 char  *FormatName; /* 差し替え対象となるフォーマット名 */
 int  DataKind;  /* データ種別 (ET_DK_*) */
 char  *DataAddress; /* 入出力データファイル名(ファイル指定) */
                     /* 入出力データの開始アドレス(メモリ指定) */
 char  *EndAddress; /* 入出力データの終了アドレス(メモリ指定) */
 int  MemoryInitSize; /* 出力データエリア初期サイズ
                                            (メモリ指定) */
 int  MemoryIncrementSize; /* 出力データエリア増分サイズ
                                            (メモリ指定) */
} ETTRANSADRSLIST;

 
データ種別DataKindには,ヘッダファイル「ETtrans.h」内で定義されている次の値のどれかを指定します。
  • ET_DK_FILE:データ種別がファイルの場合
  • ET_DK_MEMORY:データ種別がメモリの場合
ET_DK_MEMORYを指定した場合は,入出力データの開始アドレスDataAddressと終了アドレスEndAddressを指定してください。ただし,出力フォーマットの場合は,開始アドレスとしてNULLアドレスを指定できます。この場合,トランスレータが必要なデータエリアを確保し,その先頭アドレスを入出力データの開始アドレスDataAddressへ設定して返します。トランスレータが確保したエリアは,次のETtrans2Exec関数の実行,又はETtrans2ReleaseThreadContext関数の実行前まで有効です。確保するデータエリアサイズは,pAdrsListのMemoryInitSize,又はMemoryIncrementSizeで指定します。pAdrsListの該当する値に0が指定された場合は,システム情報ファイル「ettrans.ini」内の[MemoryData]セクションで定義された値を用います。pAdrsList,システム情報ファイルの両方に定義がない場合は,初期割り当てサイズと割り当て増分サイズの両方に1,024(バイト)を仮定します。
出力フォーマットに対しては,入出力データの終了アドレスEndAddressにデータの最終アドレスを返します。ただし,出力データが指定されたアドレスを超えてエラーのために出力されない場合は,ヘッダファイル「ETtrans.h」で定義されている次の値を設定して返します。
  • ET_AD_OVER :メモリアドレスオーバ
  • ET_AD_NOTOUT :未出力
引数pErrListへは変換実行時のエラー情報を出力します。エラー情報がない場合には,エラー情報リストpErrListのデータ数に0を返します。取り出した内容は次のETtrans2Exec関数の実行,又はETtrans2ReleaseThreadContext関数の実行前まで有効です。構造体ETTRANSERRLISTは,ヘッダファイル「ETtrans.h」内で定義されています。
 

typedef struct {
 int  Size;   /* エラー情報データ数 */
 ETTRANSERRDATA  *ErrData; /* エラー情報データ(配列) */
} ETTRANSERRLIST;

typedef struct {
 int  MessageNo; /* メッセージ番号 */
 int  ErrorLevel; /* エラーレベル */
 int  NumericData; /* 数値情報 */
 char  *Information; /* 文字列情報 */
} ETTRANSERRDATA;

 
各エラー情報のデータには,変換処理で発生したワーニングレベル以上のエラー情報が発生順に設定されます。エラーレベルは,トランスレータの戻り値と同じ意味を持ちます。数値情報と文字列情報は,ログファイルへ出力する付加情報で,次の内容を出力します。付加情報がない場合は,数値情報は0,文字列情報はNULLが設定されます。

表9-2 ログファイルに出力される数値情報,文字情報の内容

メッセージ番号数値情報文字列情報備考
9出力済みのグループ数なしグループ単位の出力指定がある場合のエラー
55,56出口関数の戻り値,例外中のエラーコード(Java言語の出口関数の場合)ユーザ組み込み関数名出口関数のエラー
70,71,720ユーザ組み込み関数名Java言語の出口関数のエラー
7,8,23~36,50,57,67,78コンポーネントのアドレスコンポーネント名コンポーネントに対するエラー
210オプションオプション不正エラー
1フォーマット名
2なし(メモリアドレス不正の場合)
メッセージ番号の内容については,「付録B.3 メッセージ」を参照してください。
引数pPtrToUsrFuncには,出口関数に渡す任意のアドレスを指定します。トランスレータは,システム情報ファイルの[Userfunc_Option]セクションで,USE02IFオプションを指定された出口関数を呼び出すときに,ETtrans2Exec関数で指定された任意のアドレスを出口関数のポインタ型として入力引数へ追加して渡します。ポインタ型の引数については,「11.3.2 [Userfunc_Mapfunc]セクション」の「表11-2 ユーザ組み込み関数で使用する型」を参照してください。
トランスレータは指定されたアドレスの更新及びチェックはしません。USE02IFオプションを指定されていない出口関数は,引数pPtrToUsrFuncの指定は無視されます。
戻り値
トランスレータでのデータ変換の戻り値を同じです。ettransコマンドの戻り値については,「5.4.2 ettransコマンドの戻り値」を参照してください。