Compaq OpenVMS
Compaq C 国際化ユーティリティ・
リファレンス・マニュアル


前へ 次へ 目次 索引


2.2.2 collating-symbol 文

collating-symbol 文は,照合シーケンス文で使用する照合シンボルを指定します。

構文


collating-symbol <collating_symbol> 

collating_symbol 引数は,現在の charmap ファイル内のシンボル名,またはこの照合定義の中で定義されている他のシンボル名と重複することはできません。 collating-symbol 文の例を次に示します。


collating-symbol <UPPER_CASE> 
collating-symbol <HIGH> 

collating_symbol 文で定義される引数は, LC_COLLATE カテゴリの中に限って認識されます。

2.2.3 order_start 文

order_start 文には,照合重みを照合項目に割り当てる 1 つ以上の照合順序文,および order_end キーワードが続きます。 order_start 文は,必ず指定する必要があります。

構文


order_start sort_rules;sort_rules;...;sort_rules
collation_order_statements
order_end 

ソート規則

sort_rules指示文は,次の構文で指定します。


keyword, keyword,...,keyword 

ここで,keyword はFORWARD,BACKWARD,POSITIONのいずれかです。

sort_rules 指示文はオプションです。指定された場合には,文字列比較に適用される規則を定義します。指定された sort_rules 指示文の数は,各照合項目に割り当てられる重みの数を定義します ( つまり,指示文は,ロケールの中での照合順序数を定義します )。 sort_rules 指示文が指定されない場合, 1 つの forward 指示文が想定され,文字列ではなく,文字単位に比較が行われます。

sort_rules 指示文がある場合, 1 次重みを使用して文字列を比較するときに先頭の指示文, 2 次重みを使用して文字列を比較するときに 2 番目の指示文がそれぞれ適用されます。以降についても同様です。各 sort_rules 指示文のセットは,セミコロン (;) で区切ります。 sort_rules 指示文は,コンマで区切った1つ以上のキーワードで構成されます。次のキーワードがサポートされています。

FORWARD --- 照合重みの比較が,文字列の先頭から最後に向かって行われることを指定する。

BACKWARD --- 照合重みの比較が,文字列の最後から先頭に向かって行われることを指定する。

POSITION --- 照合重みの比較が,文字列内の対象要素の相対位置を考慮することを指定する ( 文字列が等しいことを比較する場合,比較の開始位置から最短の位置にある要素を,最初に照合する )。

forward キーワードおよび backward キーワードは,相互に排他的です。

sort_rules 指示文の例を次に示します。


order_start        forward;backward 

照合順序文

照合順序文には次の構文規則が適用されます。

照合項目の 1 次重み,2 次重み,または以降の重みを定義するには,各照合項目に対してオプションのオペランドを使用します。また,文字列を比較する場合に無視される照合項目を指定するには,特殊シンボル IGNORE を使用します。

collating_element_list の位置に指定される反復記号キーワードは,指定範囲内の文字に対して,先行する文の左側にある文字シンボルの重みを基準に,昇順で,重みが割り当てられることを表します。

反復記号キーワードを使用すると,異なる文字セット記述 ( charmap ) ソース・ファイルでコンパイルした場合に,異なる照合を行うロケールが作成されます。

UNDEFINED 特殊シンボルは,明示的に,または反復記号シンボルで指定されていない,すべてのコード化文字セット値を含みます。これらの文字は,UNDEFINED 特殊シンボルで指示される位置に,文字照合順序に従って挿入され,同じ重みがすべて割り当てられます。 UNDEFINED 特殊シンボルがなく,照合順序が,コード化文字セットからすべての照合項目を指定していない場合,警告メッセージが表示され,未定義文字がすべて,文字照合順序の最後に設定されます。


LC_COLLATEロケール定義ソース・ファイル・カテゴリ内の,照合順序文セクションの例を次に示します。


order_start     forward;backward 
UNDEFINED       IGNORE;IGNORE 
<LOW> 
<space>         <LOW>;<space> 
...              <LOW>;... 
<a>             <a>;<a> 
<a-acute>       <a>;<a-acute> 
<a-grave>       <a>;<a-grave> 
<A>             <a>;<A> 
<A-acute>       <a>;<A-acute> 
<A-grave>       <a>;<A-grave> 
<ch>            <ch>;<ch> 
<Ch>            <ch>;<Ch> 
<s>             <s>;<s> 
<ss>            <s><s>;<s><s> 
<eszet>         <s><s>;<eszet><eszet> 
...             <HIGH>;... 
<HIGH> 
order_end 

この例は,次のように解釈されます。

2.3 LC_CTYPE カテゴリ

LC_CTYPEカテゴリは,文字分類,大文字/小文字変換,および他の文字属性を定義します。このカテゴリは LC_CTYPEヘッダではじまり, END LC_CTYPEトレーラで終了します。

LC_CTYPE カテゴリ文に対するオペランドはすべて,文字のリストとして定義されます。各リストは,セミコロンで区切られた 1 つ以上の文字またはシンボル文字名で構成されます。反復記号 (...) は,一連の文字を表します。たとえば, <a>;...;<z> という指定は,a〜z の範囲を表します。

表 2-2 は, LC_CTYPE カテゴリで認識される文キーワードの一覧です。キーワードの説明の中で,「自動的に含まれる」という表現は,参照文字が含まれる場合も含まれない場合も,エラーが発生しないことを表します。指定がない場合は文字が提供され,指定されている場合はその指定が適用されます。

表 2-2 LC_CTYPE カテゴリ・キーワード
キーワード 説明
copy このカテゴリの定義として使用する,既存のロケール名を指定する。

copy文を指定すると,このカテゴリの中で他のキーワードを指定する必要はない。

upper 大文字を定義する。

cntrldigitpunct,または spaceキーワードで定義される文字は指定しない。大文字のA〜Zは,このセットに自動的に含まれる。

lower 小文字を定義する。

cntrldigitpunct,または spaceキーワードで定義される文字は指定しない。小文字のa〜zは,このセットに自動的に含まれる。

alpha すべての英文字を定義する。

cntrldigitpunct,または spaceキーワードで定義される文字は指定しない。 upperおよび lowerキーワードで定義される文字は,この文字クラスに自動的に含まれる。

digit 数字文字を定義する。

数字0,1,2,3,4,5,6,7,8,9だけを指定できる。数字0〜9は,このセットに自動的に含まれる。

space 空白文字を定義する。

upperloweralphadigitgraph,または xdigitキーワードで定義される文字は指定しない。スペース,改ページ,用紙送り,改行,キャリッジ・リターン,タブ,および垂直タブ文字は,このセットに自動的に含まれる。

cntrl 制御文字を定義する。

upperloweralphadigitpunctgraphprint,または xdigitキーワードで定義される文字は指定しない。

punct 区切り文字を定義する。

upperloweralphadigitcntrl,または xdigitで定義される文字は指定しない。

graph スペース文字を除く,プリント可能文字を定義する。

cntrlキーワードで定義される文字は指定しない。 upperloweralphadigitxdigit,および punctキーワードで定義される文字は,この文字クラスに自動的に含まれる。

print スペース文字を含む,プリント可能文字を定義する。

cntrlキーワードで定義される文字は指定しない。スペース文字,および upperloweralphadigitxdigit,および punctキーワードで定義される文字は,この文字クラスに自動的に含まれる。

xdigit 16進数字文字を定義する。

数字0,1,2,3,4,5,6,7,8,9だけを指定できる。ただし, 16進値の10〜15については,任意の文字を指定できる。これらの代替16進数字は,数字文字列を16進から数量に変換するときに,標準変換ルーチンが使用することはない。数字0〜9,および英字A〜Fと英字a〜fは,このセットに自動的に含まれる。

blank 空白文字を定義する。

この文字クラスには,スペースおよび水平タブ文字が含まれる。この文で定義される任意の文字は, spaceクラスに自動的に含まれる。

toupper 小文字から大文字へのマッピングを定義する。

このキーワードに対するオペランドは,コンマで区切られた文字のペアで構成される。各文字ペアは括弧()で囲まれ,セミコロン(;)で次のペアと区切られる。各ペアの最初の文字は小文字,2番目の文字は大文字と見なされる。 lowerおよび upperキーワードで定義された文字に限って指定できる。 toupperの指定を省略すると,デフォルトの設定で, a〜zはA〜Zにマップされる。

tolower 大文字から小文字へのマッピングを定義する。

このキーワードに対するオペランドは,コンマで区切られた文字のペアで構成される。各文字ペアは括弧()で囲まれ,セミコロン(;)で次のペアと区切られる。各ペアの最初の文字は大文字,2番目の文字は小文字と見なされる。 lowerおよび upperキーワードで定義された文字に限って指定できる。

tolower が指定されていなければ,デフォルトの設定に従って, toupper キーワードが指定されている場合,その逆のマッピングが行われる。 touppertolower の両キーワードの指定が省略されると,各マッピングは,C ロケールのマッピングに従う。

新たなキーワードを指定することで,新しい文字分類を定義できます。この例を次に示します。


charclass vowel 
vowel        <a>;<e>;<i>;<o>;<u>;<y> 

LC_CTYPEカテゴリは,複数文字要素をサポートしません (たとえば,ドイツ語の Eszet文字は,通常,小文字として分類されます)。ドイツ語テキストの適切な大文字使用では,Eszet文字は SSの2文字で置き換えられます。これは,対応する大文字がないためです。この種の変換は,toupperおよび tolowerキーワードの範囲を超えています。

ロケール定義ソース・ファイルに指定されたLC_CTYPEカテゴリの例を,次に示します。


LC_CTYPE 
#"alpha" is by default "upper" and "lower" 
#"alnum" is by definition "alpha" and "digit" 
#"print" is by default "alnum", "punct" and the space character 
#"graph" is by default "alnum" and "punct" 
#"tolower" is by default the reverse mapping of "toupper" 
# 
upper   <A>;<B>;<C>;<D>;<E>;<F>;<G>;<H>;<I>;<J>;<K>;<L>;<M>;\
        <N>;<O>;<P>;<Q>;<R>;<S>;<T>;<U>;<V>;<W>;<X>;<Y>;<Z> 
# 
lower   <a>;<b>;<c>;<d>;<e>;<f>;<g>;<h>;<i>;<j>;<k>;<l>;<m>;\
        <n>;<o>;<P>;<q>;<r>;<s>;<t>;<u>;<v>;<w>;<X>;<y>;<z> 
# 
digit   <zero>;<one>;<two>;<three>;<four>;<five>;<six>;\
        <seven>;<eight>;<nine> 
# 
space   <tab>;<newline>;<vertical-tab>;<form-feed>;\
        <carriage-return>;<space> 
# 
cntrl   <alert>;<backspace>;<tab>;<newline>;<vertical-tab>;\
        <form-feed>;<carriage-return>;<NUL>;<SOH>;<STX>;\
        <ETX>;<EOT>;<ENQ>;<ACK>;<SO>;<SI>;<DLE>;<DC1>;<DC2>;\
        <DC3>;<DC4>;<NAK>;<SYN>;<ETB>;<CAN>;<EM>;<SUB>;\
        <ESC>;<IS4>;<IS3>;<IS2>;<IS1>;<DEL> 
# 
punct   <exclamation-mark>;<quotation-mark>;<number-sign>;\
        <dollar-sign>;<percent-sign>;<ampersand>;<asterisk>;\
        <apostrophe>;<left-parenthesis>;<right-parenthesis>;\
        <plus-sign>;<comma>;<hyphen>;<period>;<slash>;\
        <colon>;<semicolon>;<less-than-sign>;<equals-sign>;\
        <greater-than-sign>;<question-mark>;<commercial-at>;\
        <left-square-bracket>;<backslash>;<circumflex>;\
        <right-square-bracket>;<underline>;<grave-accent>;\
        <left-curly-bracket>;<vertical-line>;<tilde>;\
        <right-curly-bracket> 
# 
xdigit  <zero>;<one>;<two>;<three>;<four>;<five>;<six>;\
        <seven>;<eight>;<nine>;<A>;<B>;<C>;<D>;<E>;<F>;\
        <a>;<b>;<c>;<d>;<e>;<f> 
# 
blank   <space>;<tab> 
# 
toupper (<a>,<A>);(<b>,<B>);(<c>,<C>);(<d>,<D>);(<e>,<E>);\
        (<f>,<F>);(<g>,<G>);(<h>,<H>);(<i>,<I>);(<j>,<J>);\
        (<k>,<K>);(<l>,<L>);(<m>,<M>);(<n>,<N>);(<o>,<O>);\
        (<P>,<P>);(<q>,<Q>);(<r>,<R>);(<s>,<S>);(<t>,<T>);\
        (<u>,<U>);(<v>,<V>);(<w>,<W>);(<X>,<X>);(<y>,<Y>);\
        (<z>,<Z>) 
# 
END LC_CTYPE 

2.4 LC_MESSAGES カテゴリ

LC_MESSAGESカテゴリは,肯定および否定のシステム応答の形式を定義します。このカテゴリはLC_MESSAGESヘッダではじまり, END LC_MESSAGESトレーラで終了します。

LC_MESSAGESカテゴリに対するオペランドはすべて,二重引用符(")で囲まれた文字列,または拡張正規表現として定義されます。これらのオペランドは, 1つ以上の空白文字(スペースまたはタブ)によって,定義しているキーワードと区切られます。二重引用符が2つ並んでいる場合("")は,未定義値を指定します。

表 2-3 は, LC_MESSAGESカテゴリで認識される文キーワードの一覧です。

表 2-3 LC_MESSAGES カテゴリ・キーワード
キーワード 説明
copy このカテゴリの定義として使用する,既存のロケール名を指定する。

copy文を指定すると,他のキーワードは指定できない。

yesexpr 肯定または否定応答を求める質問に対する,適切な肯定応答を記述する拡張正規表現を指定する。
noexpr 肯定または否定応答を求める質問に対する,適切な否定応答を記述する拡張正規表現を指定する。
yesstr 適切な肯定応答の,ロケールにおける同値を指定する。

この文字列は, nl_langinfoサブルーチンを使用すると, nl_langinfo(YESSTR)として,アプリケーションからアクセスできる。なお, yesstrは, XPG4標準で使用されなくなる可能性があるため,代わりに yesexprを使用する方が望ましい。

nostr 適切な否定応答の,ロケールにおける同値を指定する。

この文字列は, nl_langinfoサブルーチンを使用すると, nl_langinfo(NOSTR)として,アプリケーションからアクセスできる。なお, nostrは, XPG4標準で使用されなくなる可能性があるため,代わりに noexprを使用する方が望ましい。

ロケール定義ソース・ファイルに指定されたLC_MESSAGESカテゴリの例を,次に示します。


LC_MESSAGES 
# 
yesexpr "<circumflex><left-square-bracket><y><Y>\
<right-square-bracket>" 
noexpr  "<circumflex><left-square-bracket><n><N>\
<right-square-bracket>" 
yesstr  "<y><e><s>" 
nostr   "<n><o>" 
# 
END LC_MESSAGES 

2.5 LC_MONETARY カテゴリ

LC_MONETARYカテゴリは,通貨数値情報を書式化する上での規則および記号を定義します。このカテゴリはLC_MONETARYヘッダではじまり, END LC_MONETARYトレーラで終了します。


前へ 次へ 目次 索引