前へ | 次へ | 目次 | 索引 |
Compaq C ランタイム・ライブラリ・ユーティリティで提供される,次のコマンドとその構文について説明します。
メッセージ・テキスト・ソース・ファイルをメッセージ・カタログ・ファイルにマージします。
GENCAT msgfile[,...] catfile
msgfile
必須。メッセージ・テキスト・ソース・ファイルの名前。デフォルトのファイル・タイプは .MSGX です。
catfile
必須。メッセージ・カタログ出力ファイルの名前。 catfile がすでに存在する場合には,既存のカタログのメッセージも含んだ新しいバージョンが作成されます。ファイル・タイプは .CAT でなければなりません。
なし
GENCATコマンドは,1つ以上の入力ソース・ファイル,および既存のカタログ・ファイル(ある場合)から,メッセージ・カタログを新しく作成します。メッセージ・カタログは,アプリケーション用のメッセージを含むバイナリ・ファイルです。エラー・メッセージ,画面表示,プロンプトなど,アプリケーションが出力するすべてのメッセージがここに含まれます。アプリケーションは,Cランタイム・ライブラリ・ルーチンの catopen,catgets,および catcloseを使用して,メッセージ・カタログからメッセージを検索します。これらのルーチンについての詳細は,『Compaq C Run-Time Library Reference Manual for OpenVMS Systems』を参照してください。メッセージ・テキスト・ソース・ファイルは,ユーザが作成するテキスト・ファイルであり,ユーザのプログラムから出力されるメッセージをここに入れます。テキスト・ソース・ファイルには,任意のテキスト・エディタで,メッセージを入力できます。メッセージは,通常,プログラムの機能サブセットに相当するセットにグループ化できます。各メッセージは,そのセット内で一意の数字の識別子を持ちます。メッセージ・テキスト・ソース・ファイルには,セットおよび個別メッセージを処理するための, GENCATで認識されるコマンドを指定することもできます。
メッセージ・テキスト・ソース・ファイルは,いくつ指定しても構いません。 GENCATコマンドは,複数のソース・ファイルを,指定された順に1つずつ処理します。連続する各ソース・ファイルが,カタログを変更します。
catfile という名前のメッセージ・カタログが存在する場合, GENCAT は,旧バージョンの内容を含むファイルを,新バージョンのファイルとして作成し,これを更新します。メッセージ・カタログが存在しない場合,GENCATは, catfile という名前のカタログを作成します。
catfile には,次のコマンドを指定できます。
- message_number text
textをメッセージとして,識別子message_number (メッセージ番号)とともに挿入します。この場合,次のガイドラインに従います。
- 番号は,各セット内で昇順でなければならない。番号を飛ばして指定することはできるが,GENCATセッションの中で,飛ばした番号を後で追加したり,既存の番号を置き換えることはできない。
- メッセージ・テキストが空で,スペースまたはタブのフィールド・セパレータがある場合,空白文字列がメッセージ・カタログに格納される。
- メッセージ・ソース行にメッセージ番号が指定されているが,フィールド・セパレータもメッセージ・テキストもない場合,その番号の既存のメッセージ(ある場合)が,カタログから削除される。
- $delset set_number
set_numberで示されるメッセージのセットを削除します。
- $quote character
引用文字をcharacterに設定します。詳細は,例を示した節を参照してください。
- $set set_number
このコマンド以降に入力されるすべてのメッセージを, set_number で示されるセットに設定することを指定します。別の$setコマンドを入力することによって,セットを変更できます。ただし,セット番号は昇順で入力しなければなりません。 GENCATセッションの中で,番号の低いセットに戻ることはできません。コマンドが使用されない場合,デフォルトのセット番号は1です。
各初期キーワードまたは番号のあとに,空白がなければなりません。 GENCATユーティリティは,行の先頭にスペース,タブ,またはドル記号 ($) 文字 (スペース,タブ,または改行文字が続く場合) がある場合,その行を無視します。このため,この並びを使用して, catfile 内でコメントを指定できます。空白行も無視されます。 GENCATは,$delset,$quote,または$setコマンドに続く文字を無視するため,これらのコマンドの後にコメントを指定することもできます。
数字ではじまる行は,カタログに取り込まれるメッセージを表します。メッセージID番号とメッセージ・テキストの間に,任意の数の空白を指定できます。ただし,メッセージ・テキストが引用符で区切られていない場合は,スペースまたはタブ文字を1つだけ指定することをおすすめします。メッセージ・テキストが引用符で区切られていない場合,GENCATは,空白もメッセージの一部として処理します。なお,メッセージ・テキストが引用符で区切られている場合には,GENCATは,メッセージIDと先頭の引用符とのあいだのスペースまたはタブを,すべて無視します。
C言語で認識されるようなエスケープ・シーケンスを,テキストの中で使用できます。エスケープ文字のバックスラッシュ(\)を使用すると,メッセージ・テキストに特殊文字を挿入できます。 表 4-1 を参照してください。
表 4-1 特殊文字 エスケープ・
シーケンス文字 \n 改行 \t 水平タブ \v 垂直タブ \b バックスペース \r キャリッジ・リターン \f 改ページ \\ バックスラッシュ文字(\)。メッセージ・テキストを次の行に継続するのに使用する。 \ ddd 8進数 ddd に対応するシングル・バイト文字。 1〜3桁の8進数を指定できる。ただし,8進数に続く文字がやはり有効な8進数の場合は,先頭にゼロを指定する必要がある。たとえば,$ (ドル記号)の8進数は44である。メッセージに$5.00を挿入するには,\445.00ではなく, \0445.00を使用する。そうでない場合には,5が,8進数の一部として解析される。
GENCATがエラーを報告した場合,コマンドに対して何らかの処理が行われることはなく,既存のカタログはそのまま変更されません。
#1 |
---|
$set 10 Communication Error Messages |
この例は,ソース・ファイルの中で$setコマンドを使用し,メッセージ・グループに対してセット番号を割り当てます。
メッセージ・セット番号は10です。この$setコマンドと次の$setコマンドの間のすべてのメッセージに,メッセージ・セット番号10が割り当てられます (セット番号は昇順に割り当てられなければなりませんが,番号が連続している必要はありません)。
なお, $setコマンドにはコメントを指定できます。
#2 |
---|
$delset 10 Communication Error Messages |
この例は,$delsetコマンドを使用して,指定されたメッセージ・セット(この場合は10)に属するすべてのメッセージを,カタログから削除します。
$delsetコマンドは,同じソース・ファイル内の$setコマンドに関して,正しいセット番号の順序で指定する必要があります。なお,$delsetコマンドにはコメントを指定できます。
#3 |
---|
12 "file removed" |
この例は,メッセージ・テキストの入力,およびそれに対するメッセージID番号の割り当て方法を示します。この場合,メッセージID 12が,これに続くテキストに割り当てられます。
メッセージID番号とメッセージ・テキストのあいだには,少なくとも1つのスペースまたはタブ文字が必要ですが,複数のスペースまたはタブを指定しても構いません。複数のスペースまたはタブを指定した場合,これらは,メッセージ・テキストが引用符で囲まれていると無視され,メッセージ・テキストが引用符で囲まれていなければテキストの一部と見なされます。
メッセージ番号は,1つのメッセージ・セットの中で昇順でなければなりませんが,番号が連続している必要はありません。
メッセージ番号の後から行の終端までのすべてのテキストが,メッセージ・テキストとして取り込まれます。行の最終文字としてエスケープ文字のバックスラッシュ(\)を指定すると,メッセージ・テキストは次の行に継続します。次の例を参照してください。
This is the text associated with \ message number 5.
この例に示す2行は,次の1行のメッセージを定義します。
This is the text associated with message number 5.
#4 |
---|
$quote " Use a double quote to delimit message text $set 10 Message Facility - Quote command messages 1 "Use the $quote command to define a character \ \n for delimiting message text" \n 2 "You can include the \"quote\" character in a message \n \ by placing a \\ (backslash) in front of it" \n 3 You can include the "quote" character in a message \n \ by having another character as the first nonspace \ \n character after the message ID number \n $quote 4 You can disable the quote mechanism by \n \ using the $quote command without \n a character \ after it \n |
この例は,引用文字(引用符)の効果を示します。
$quoteコマンドは,二重引用符(")を引用文字として定義します。引用文字は,メッセージ番号の後に指定されるスペース以外の最初の文字でなければなりません。 2番目の引用文字以降のテキストは,すべて無視されます。
この例は,メッセージ・テキストに引用文字を指定する 2通りの方法についても示しています。
- 引用文字の前にバックスラッシュ(\)を指定する。
- メッセージ番号の後の,スペース以外の最初の文字に,別の文字を使用する。これにより,そのメッセージに限って,引用文字を使用できなくなる。
この例は,次のことも示しています。
- 引用文字で囲まれた複数行に渡るメッセージを分割するには,やはりバックスラッシュ(\) が必要である。
- メッセージの中でバックスラッシュ(\)を表示するには,バックスラッシュ(\) を重ねて指定する必要がある。
- \nを使用すると,メッセージを改行文字で編集できる。
- $quoteコマンドを文字引数なしで使用すると,引用文字メカニズムが使用できなくなる。
変換ソース・ファイルから変換テーブル・ファイルを作成します。変換テーブル・ファイルは,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は警告メッセージを出力し,読み込まれた残りのレコードを無視する。 Compaq 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> の指定で文字ゾーンが抜けている場合,コードセット変換が正しく行われないことがあります。他のCompaq Cランタイム・ライブラリ(RTL)でサポートされる fromcodesetに対して,コードセット・エンコード範囲を正しく指定することは,きわめて重要です。この指定が正しく行われなければ,iconv と,他のCompaq 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 tovaluefromvalueと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\d1fromvalueおよび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コマンドの説明も参照してください。
前へ | 次へ | 目次 | 索引 |