iconv_open() - コード変換記述子の割り振り

標準

標準/拡張機能 C/C++ 依存項目

XPG4
XPG4.2
Single UNIX Specification、バージョン 3

両方  

形式

#include <iconv.h>

iconv_t iconv_open(const char *tocode, const char *fromcode);

機能説明

fromcode 引数が指す配列内で指定されている エンコード文字セットから、tocode 引数が指す 配列内で指定されているエンコード文字セットへ文字を変換するために必要な 初期化すべてを実行します。

変換記述子は、2 つのエンコード文字セットを関連付けます。

状態に依存するエンコードの場合、変換記述子はエンコード文字セットに 依存する初期シフト状態になり、すぐに iconv() で使用できるように なります。変換記述子は、iconv_close() でクローズされるまで有効です。

fromcodetocode の設定、および可能な組み合わせは インプリメンテーションに依存します。

注: iconv() 関数ファミリーは、Unicode サービスが提供する文字変換サービスを使用するよう変更されました。iconv_open()、iconv()、および iconv_close() の 関数インターフェースについては、以下の段落で説明している 4 つの新しい errno 値と 2 つの新しい環境変数が追加されたことを 除いては、変更はありません。

iconv() 関数ファミリーと Unicode サービスには外部の違いがあります。しかし、それらの違いは、「z/OS XL C/C++ コンパイラーとランタイムアプリケーション・プログラマー用マイグレーション・ガイド」に記述されている点を除いて、iconv() 関数ファミリーによって管理されます。「z/OS XL C/C++ プログラミング・ガイド」の『提供されているコード・セット・コンバーター』のトピックにリストされているすべての変換は、_ICONV_TECHNIQUE が未定義のままになっている限り、Unicode Services の組み込み前と同様に機能します。アプリケーションが _ICONV_TECHNIQUE 環境変数を定義しない場合、iconv_open() は LMREC のデフォルト値を使用します。

Unicode Services は、「z/OS XL C/C++ プログラミング・ガイド」に記載されていない、多くの文字セット間の変換をサポートします。Unicode サービスがサポートする変換の完全なリストは、 「z/OS Unicode Services ユーザーズ・ガイドおよび解説書」の「表 25」および「表 26」を参照してください。 これらの表にリストされている文字セットに対する iconv_open() を使用した変換を セットアップするには、ユーザーは、fromcodetocode に、CCSID を表す 文字ストリングを使用する必要があります。例えば、変換技法 R を使用した CCSID 00256 から CCSID 00870 への変換を設定するためには、_ICONV_TECHNIQUE 環境変数を R に設定し、以下のように iconv_open() を呼び出します。

cd = iconv_open(“00870”, “00256”);

続いて、以前のリリース同様、iconv() と iconv_close() を使用します。

iconv() は以下の環境変数を使用します。
_ICONV_UCS2
iconv_open(Y, X) に、X から Y のような「直接」変換または X から UCS-2 を介して Y のような 「間接」変換が選べる場合に使用する変換方法を伝えます。
_ICONV_UCS2_PREFIX
UCS-2 テーブルが HFS 内で検出されない場合、それらのテーブルを探すために使用する z/OS® データ・セット名の接頭部を iconv_open() に伝えます。
_ICONV_MODE
iconv_open()、iconv() および iconv_close() の動作モードを選択します。
_ICONV_TECHNIQUE
これは、Unicode 変換サービスを使用するときに使う技法の値です。 Unicode 変換サービス技法の値の詳細については、「z/OS Unicode Services ユーザーズ・ガイドおよび解説書」のトピック『Unicode Services の環境の作成』を参照してください。

iconv_close() の使用例については、を参照してください。

双方向言語サポートに関する特殊考慮事項: iconv によって使用される双方向レイアウト変換をアクティブにするのに必要なすべての初期化を実行します。 双方向レイアウト変換を可能にするには、次の 3 つの条件が満たされる必要があります。
  1. _BIDION 環境変数を TRUE に設定する必要があります。
  2. iconv_open() の時点での現行ロケール環境は、アラビア語またはヘブライ語のロケール (例えば、Ar_AA または Iw_IL) でなければなりません。
  3. 変換コード・セットは、アラビア語またはヘブライ語コード・セットでなければなりません。
変換コード・セットは、次の 3 とおりの場合で異なります。
  1. fromCodeSet は UCS-2 で toCodeSet は単一バイト・コード・セットの場合。この場合、toCodeSet は、アラビア語またはヘブライ語コード・セットでなければなりません。
  2. fromCodeSet は単一バイト・コード・セットで toCodeSet は UCS-2 の場合。この場合、fromCodeSet は、アラビア語またはヘブライ語コード・セットでなければなりません。
  3. fromCodeSet と toCodeSet の両方が単一バイト・コード・セットの場合。この場合、toCodeSet は、アラビア語またはヘブライ語コード・セットでなければなりません。

iconv_open( ) は、双方向レイアウト変換属性を取得するための環境変数 _BIDIATTR が存在して いるかどうかについて検査します。_BIDIATTR が定義されていないか設定されていない場合、または _BIDIATTR 環境変数に誤った値 が入っている場合、この関数はデフォルト値を使用します。そのデフォルト値は、使用されるアラビア語またはヘブライ語コード・セットに応じて コード・セットに依存します。アラビア語 420 コード・セットの場合、デフォルト値は、方向 RTL、テキストの タイプ visual、shaping shaped、numerals、national、および swapping on になります。ヘブライ語 424 コード・セットの場合、デフォルト値は、方向 RTL、テキスト・ タイプ visual、および swapping on になります。他のアラビア語コード・セットの場合、デフォルト値は、方向 RTL、テキスト・ タイプ implicit、shaping nominal、numerals、national、および swapping on になります。

iconv_open() は以下の環境変数を使用します。
_BIDION
変換されるデータの双方向処理をアクティブにするかどうかを iconv_open() に 知らせます。_BIDION には、双方向レイアウト変換をオンにしたいときに TRUE の値を割り当てるか、または BiDi レイアウト変換をオフにしたいときに FALSE の値を割り当てることができます。variable_BIDION が環境に定義されていない場合、双方向レイアウト変換をオフにすることも できます。
_BIDIATTR
iconv によってあとで使用される双方向レイアウト変換属性を保持 します。_BIDIATTR は、iconv_open() の時点でだけ読み取られます。_BIDIATTR 環境変数は、コロンで区切られた入出力の対の形式で、属性リストの先頭を識別 する @ があるストリングの先頭にあり、この変数のあと には次の形式の属性が続きます。 <attribute_name1>=<input1>:<output1>, <attribute_name2>=<input2>:<output2> .....(eg. export _BIDIATTR="@ls typeoftext=visual:implicit,orientation=ltr:ltr, numerals=nominal:national").

戻り値

正常に実行された場合、iconv_open() は変換記述子を戻します。

正常に実行されなかった場合、iconv_open() は (iconv_t)-1 を戻して、errno を次のいずれかの 値に設定します。
エラー・コード
説明
EINVAL
指定されたエンコード文字セット間の変換は、サポートされていません。
ECUNNOENV

Unicode 変換サービスが CUN_RS_NO_UNI_ENV エラーを発行しました。

ユーザー処置については、「z/OS Unicode Services ユーザーズ・ガイドおよび解説書」を参照してください。

ECUNNOCONV

Unicode 変換サービスが CUN_RS_NO_CONVERSION エラーを発行しました。

ユーザー処置については、「z/OS Unicode Services ユーザーズ・ガイドおよび解説書」を参照してください。

ECUNNOTALIGNED

Unicode 変換サービスが CUN_RS_TABLE_NOT_ALIGNED エラーを発行しました。

ユーザー処置については、「z/OS Unicode Services ユーザーズ・ガイドおよび解説書」を参照してください。

ECUNERR

Unicode 変換サービスを使用中に、関数 iconv() で予期せぬエラーが起こりました。

追加情報については、メッセージ EDC6258 を参照してください。

関連情報