日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
ICONV COMPILE |
変換ソース・ファイルから変換テーブル・ファイルを作成します。変換テーブル・ファイルは,ICONV CONVERTコマンドが,ファイル内の文字を,あるコードセットから別のコードセットに変換するのに使用されます。
ICONV COMPILE sourcefile tablefile
sourcefile
必須。変換ソース・ファイルの名前。デフォルトのファイル・タイプは .ISRC です。弊社は変換ソース・ファイルのファイル命名規則として,次の規則を使用します。
fromcodeset_tocodeset.isrc
tablefile
必須。作成する変換テーブル・ファイルの名前。デフォルトのファイル・タイプは .ICONV です。変換テーブル・ファイルのファイル命名規則は次のとおりです。
fromcodeset_tocodeset.iconv
公用変換テーブル・ファイルは,論理名SYS$I18N_ICONVで定義されるディレクトリにあります。新しく作成した変換テーブル・ファイルを,システム単位で使用できるようにするには,これを同じディレクトリに格納します。
/LISTING[=listfile]
ICONV COMPILEに対して,ソース・ファイル・リスト,およびコンパイル中に生じたエラー・メッセージを含む,リスト・ファイルの作成を指定します。ファイル名の指定が修飾子で省略された場合,デフォルトのリスト・ファイル名は, sourcefile.LISとなります。
ICONVコマンドは,状態独立の1〜4バイト・コードセットをサポートします。状態依存のコードセットはサポートしません。
注意
このインプリメンテーションにおけるtocodesetエンコードには,インプリメンテーションの制約があります。tocodeset内の文字は, 4番目のバイトに0XFFを使用してはなりません。
変換ソース・ファイルには,特定の変換についての文字変換規則が含まれます。
コードセット変換ソース・ファイルの形式は,次のように定義されます。
<fromcodeset_mb_cur_max> value <fromcodeset_mb_cur_min> value <tocodeset_mb_cur_max> value <tocodeset_mb_cur_min> value <fallback_code> value <escape_char> value <comment_char> value <fromcodeset_range> value...value;value...value;...;value...value ICONV_TABLE fromvalue tovalue fromvalue tovalue . . . . . . fromvalue tovalue END ICONV_TABLE
ここで,シンボル<...>およびこれに対応する値は,コードセット定義であり, fromvalue/tovalueのペアは,文字変換規則です。
コードセット宣言は,文字変換規則の前に指定しなければなりません。各宣言は,1桁目からはじまる山括弧で囲まれたシンボル, 1つ以上の空白(タブまたはスペース),シンボルに割り当てられる値の順に構成されます。 表 4-2 を参照してください。
表 4-2 コードセット宣言 シンボル 値 <fromcodeset_mb_cur_max> fromcodeset内の文字の最大バイト数。デフォルトの値は1。 <fromcodeset_mb_cur_min> fromcodeset内の文字の最小バイト数。この値は, fromcodeset_mb_cur_max以下でなければならない。この値が指定されなかった場合,デフォルトの値としてfromcodeset_mb_cur_maxに設定される。 <tocodeset_mb_cur_max> tocodeset内の文字の最大バイト数。デフォルトの値は1。 <tocodeset_mb_cur_min> tocodeset内の文字の最小バイト数。この値は, tocodeset _mb_cur_max以下でなければならない。この値が指定されなかった場合,デフォルトの値としてtocodeset_mb_cur_maxに設定される。 <fallback_code> <fromcodeset_range>に表示されているが, ICONV_TABLEおよびEND ICONV_TABLE間では指定されていない, fromvalueに対する tovalue。次の3種類の値のいずれかを指定する。
- SAME --- tovalue が fromvalueに等しいことを指定する。
- ERROR --- fromvalueから tovalueへの変換がサポートされないことを指定する。 ICONV CONVERTは警告メッセージを出力し,読み込まれた残りのレコードを無視する。 HP Cランタイム・ライブラリ・ルーチン iconvは,呼び出し側に対して"illegal character"エラーを返す。
- ユーザ定義の tovalue --- fromvalueは,指定されたユーザ定義の tovalueに変換される。
ユーザ定義の tovalueはマルチバイト文字を表すことができるが, 4番目のバイトの値として,0XFFを使用できないという制約を伴う。 <fallback_code>におけるユーザ定義の tovalueの設定は,文字変換規則値における設定に等しい。 8進,10進,または16進数を使用できる。 <fallback_code>が指定されなかった場合,デフォルトの値はSAMEとなる。
<escape_char> 後に続く文字を特別な方法で解釈することを指定するためのエスケープ文字。デフォルトのエスケープ文字は,バックスラッシュ(\)である。 <comment_char> 行の1桁目に指定された場合,その行を無視することを指定する文字。デフォルトのコメント文字は,番号記号(#)。 <fromokcodeset_range> fromcodesetのエンコード範囲。fromcodesetがマルチバイト・コードセットの場合にこの定義を指定する。 fromcodesetが省略された場合,デフォルトの設定はシングル・バイト・コードセットであり, ICONV COMPILEで作成されるテーブルは,シングル・バイトのfromcodeset変換だけをサポートする。
fromcodesetに対してコードセット・エンコード範囲を指定する場合,すべての文字ゾーンを指定しなければなりません。 <fromcodeset_range>の指定で文字ゾーンが抜けている場合,コードセット変換が正しく行われないことがあります。他のHP Cランタイム・ライブラリ(RTL)でサポートされる fromcodesetに対して,コードセット・エンコード範囲を正しく指定することは,きわめて重要です。この指定が正しく行われなければ,iconvと,他のHP C RTLでのコードセット・サポートが一致しません。
たとえば,EUCJPに対するfromcodeset範囲は次のように指定されます。
<fromcodeset_range> \x0...\x7f;\x8e\xa1...\x8e\xfe; \xa1\xa1...\xfe\xfe;\x8f\xa1\xa1...\x8f\xfe\xfe
<fromcodeset_range>値の設定は,文字変換規則値の設定と同じです。8進,10進,または16進数を使用できます。
文字変換規則は,1桁目から文字列ICONV_TABLEが指定されている行と, 1桁目から文字列END ICONV_TABLEが指定されている行のあいだの,すべての行です。
文字変換規則は,1桁目からはじめる必要があります。
空白行,および1桁目にコメント文字が指定されている行は,無視されます。なお,コメントは省略可能です。
文字変換規則は,次の2種類の形式のいずれかで指定します。
fromvalue tovalue fromvalue...fromvalue tovalue
fromvalueとtovalueの間には, 1つ以上の空白(タブまたはスペース)を指定します。
単一文字変換規則を定義するには,最初の形式を使用します。この例を次に示します。
\d32 \d101 \d37 \d106
文字変換規則の範囲を定義するには,2番目の形式を使用します。この形式の場合,最後に指定するfromvalueは,先頭のfromvalue以上でなければなりません。範囲で定義される連続するfromvalueは,昇順でtovalueに変換されます。
たとえば,次の行について考えてみます。
\d223\d32...\d223\d35 \d129\d254
この行は,次のように解釈されます。
\d223\d32 \d129\d254 \d223\d33 \d129\d255 \d223\d34 \d130\d0 \d223\d35 \d130\d1
fromvalueおよびtovalueは,次のように設定されます。
- 10進定数は,エスケープ文字と小文字のdを頭に付けて, 1〜3桁の10進数で定義する。例: \d42。
- 8進定数は,エスケープ文字を頭に付けて,1〜3桁の8進数で定義する。例: \141。
- 16進定数は,エスケープ文字と小文字のxを頭に付けて, 1〜2桁の16進数で定義する。例: \x6a。
各定数は,シングル・バイト値を表します。 2つ以上の10進,8進,または16進定数を連結することによって,マルチバイト値を表すことができます。
注意
定数を連結してマルチバイト値を構成する場合,その基数(10進,8進,または16進)は同じでなければなりません。変換ソース・ファイルには,Portable Character Set内の文字のみ使用できます。
ICONV CONVERTコマンドの説明も参照してください。
処理中にエラーが発生した場合, ICONV COMPILEはtablefile出力を作成しません。警告メッセージが出された場合は,有効なテーブル・ファイルが作成されます。ただし,警告はユーザ・エラーを示すものなので,返された警告メッセージをチェックすることが必要です。いくつかのICONV COMPILEエラー・メッセージ,およびその説明を次に示します。
- %ICONV-E-INVFCSRNG, syntax error in <fromcodeset_range> definition
このエラーは, <fromcodeset_range>シンボルの定義が,決められた構文に従っていない場合に発生します。 <fromcodeset_range>シンボルはエンコード範囲を定義するもので,マルチバイト・コードセットでは必要です。- %ICONV-E-INVSYNTAX, invalid file syntax
このエラーは,ソース内の行が,決められた構文に従っていない場合に発生します。- %ICONV-E-BADTABLE, bad table caused by invalid value for <fromcodeset_range> definition
このエラーは,コードセット・エンコード範囲に,無効な値が指定された場合に発生します。エンコード範囲は,<fromcodeset_range> シンボルで定義されます。
#1 |
---|
$ ICONV COMPILE /LISTING EUCTW_DECHANYU.ISRC EUCTW_DECHANYU.ICONV |
この例は,EUCTWコードセットをDECHANYUコードセットに変換するための,変換テーブル・ファイルの作成方法を示しています。リスト・ファイルEUCTW_DECHANYU.LISには,ソース・ファイルのリスト,およびコンパイラによって生じたエラー・メッセージが含まれます。
目次 | 索引 |
|