ページの先頭行へ戻る
Interstage Charset ManagerStandard Edition V9 システム構築ガイド コンバータ編
FUJITSU Software

4.1.3 charsetmanager_converter_convert

コード変換関数です。

呼び出し形式

void charsetmanager_converter_convert(
       charsetmanager_converter_property_ptr ccpp,
       const char * indata,
       int indatasize,
       int * indata_processed,
       char * outdata,
       int outdatasize,
       int * outdata_processed,
       charsetmanager_converter_stream_status_ptr cssp,
       charsetmanager_converter_error_status * error_status,
       int * error
);

機能説明

コード変換プロパティ情報に格納されたコード変換ポリシーに従って、コード変換を行います。

パラメタ

ccpp(IN)

コード変換プロパティ情報格納域のポインタを指定します。コード変換開始関数(“4.1.1 charsetmanager_converter_open”)の復帰値を指定します。

indata(IN)

変換元のデータの先頭を指すポインタを指定します。

indatasize(IN)

indataの長さ(バイト数)を指定します。

indata_processed(OUT)

処理済み変換元データの長さ(バイト数)を返却します。

outdata(OUT)

変換先データの格納先の先頭を指すポインタを指定します。

outdatasize(IN)

outdataの格納先のバッファサイズを指定します。

outdata_processed(OUT)

処理済み変換先データの長さ(バイト数)を返却します。

cssp(IN/OUT)

ストリーム情報格納域のポインタを指定します。ストリーム情報生成関数(“4.1.5 charsetmanager_converter_stream_open_status”)の復帰値を指定します。

error_status(OUT)

詳細エラー情報を返却する領域のポインタを指定します。

返却されるエラー詳細情報は以下のとおりです。

typedef struct {
    int     status;                             /* 結果ステータス */
    int     errorStringIndex;                   /* 不正コードの位置 */
    int     errorStringSize;                    /* 不正コードの文字コード長 */
} charsetmanager_converter_error_status;

statusに設定される値と意味、そして、各々の場合に設定されるerrorStringIndex、errorStringSizeは以下の通りです。

意味

CHARSETMANAGER_CONVERTER_STATUS_COMPLETE

(0)

変換処理が正常に終了しました。

CHARSETMANAGER_CONVERTER_STATUS_STOPPED_BY_ENCODINGERROR

(-1)

入力文字列中の不正エンコードにより、変換処理が中断されました。不正エンコードの位置、サイズはerrorStringIndex、errorStringSizeに設定されます。

CHARSETMANAGER_CONVERTER_STATUS_STOPPED_BY_INVALIDCHAR

(-2)

入力文字列中の無効文字により、変換処理が中断されました。無効文字の位置、サイズはerrorStringIndex、errorStringSizeに設定されます。

CHARSETMANAGER_CONVERTER_STATUS_STOPPED_BY_INCONVERTIBLECHAR

(-3)

入力文字列中の変換不能文字により、変換処理が中断されました。変換不能文字の位置、サイズはerrorStringIndex、errorStringSizeに設定されます。

CHARSETMANAGER_CONVERTER_STATUS_ABORTED_BY_ERROR

(-128)

何らかのエラーで処理が中断されました。原因についてはエラー番号を参照してください。

CHARSETMANAGER_CONVERTER_STATUS_OUTPUT_BUFFER_EXHAUSTED

(1)

出力文字列の領域不足により、変換処理が中断されました。

CHARSETMANAGER_CONVERTER_STATUS_UNDECODABLE_AT_END_OF_BUFFER

(2)

入力文字列の最後にデコードできない文字が残存しています。バッファリングしてコード変換をしている場合は、残存しているバイト列を次回変換時の先頭にまわしてください。

CHARSETMANAGER_CONVERTER_STATUS_UNSPECIFIED_AT_END_OF_BUFFER (3)

入力文字列の最後に特定できない文字が残存しています。バッファリングしてコード変換をしている場合は、残存しているバイト列を次回変換時の先頭にまわしてください。

error(OUT)

エラー番号を返却する領域のポインタを指定します。本ポインタがNULLの場合、処理を中断します。関数が正常終了した場合には0が返却され、エラー終了時には1以上の詳細エラー番号が返却されます。エラー番号については、“表4.1 エラー番号一覧”を参照してください。
不正エンコーディング、無効文字等が原因で変換処理が中断された場合には、その情報はerror_statusに出力され、errorとしては0が出力されます。

復帰値

ありません。