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

前へ | 次へ | 目次 | 索引

# 1.2 タイム・ゾーン変換情報の作成

ZIC コンパイラは Zone Information Compiler(ZIC) ユーティリティを使用して，タイム・ゾーン変換情報を格納したバイナリ・ファイルを作成します。これらのファイルは，ユーザが指定したタイム・ゾーンのソース・ファイルから生成されます。

ソース・ファイルの行は複数のフィールドから構成されます。有効なタイム・ゾーンのソース・ファイルを作成するには，次の形式に従ってください。

- 各フィールドは任意の数のスペース文字で区切ります。

- 入力行の先頭と末尾のスペース文字は無視されます。

- 入力行で引用符で囲まれていないシャープ記号(#)はコメントを示し，この記号から行の末尾まではコメントになります。

- スペース文字とシャープ文字をフィールドの一部として使用するときは，二重引用符(" ")で囲みます。

- コメントを取り除いた後，何もない行は無視されます。

- 空白行以外の行は次の 3 種類のいずれかであると解釈されます。

  - ルール行( 第 1.2.1 項 参照)

  - ゾーン行( 第 1.2.2 項 参照)

  - リンク行( 第 1.2.3 項 参照)

## 1.2.1 ルール行

ルール行の形式は次のとおりです。

     Rule  NAME  FROM    TO TYPE IN ON      AT   SAVE LETTER/S

次の例を参照してください。

     Rule  USA   1969 1973 - Apr lastSun    2:00 1:00 D

ルール行は次のフィールドで構成されます。

NAME

このルールが属しているルール集合の任意の名前を指定します。

FROM

ルールが適用される最初の年を指定します。minimum またはその短縮形は，表現可能な時刻値の年の最小値を表します。maximum またはその短縮形は，表現可能な時刻値の年の最大値を表します。

TO

ルールが適用される最後の年を指定します。FROM で定義した minimum と maximum の他に，FROM フィールドの値を繰り返し指定するために， minimum または only (またはその短縮形) が使用できます。

TYPE

ルールが適用される年のタイプを指定します。 TYPE がハイフン - の場合は， FROM から TO までのすべての年にルールが適用されます。 ZIC は年のタイプをチェックするために，次のコマンドを実行します。

    yearistype year type

終了状態が 1 の場合は，年が指定されたタイプであることを示します。終了状態が 5 の場合は，年が指定されたタイプでないことを示します。

IN

ルールが有効になる月を指定します。月の名前は短縮できます。

ON

ルールが有効になる日を指定します。 表 1-1 は認識される形式を示しています。

表 1-1 ルールが有効になる日
形式 | 意味
--- | ---
5 | その月の 5 日
lastSun | その月の最後の日曜日
lastMon | その月の最後の月曜日
Sun>=8 | 8 日以降の最初の日曜日
Sun<=25 | 25 日以前の最後の日曜日

曜日名は短縮することも，つづりを完全に指定することもできます。 ON フィールドの内部でスペース文字を使用することはできません。

AT

ルールが有効になる時刻を指定します。 表 1-2 は認識される形式を示しています。

表 1-2 ルールが有効になる時刻
形式 | 意味
--- | ---
2 | 時
2:00 | 時と分
15:00 | 24時間形式の時刻(午後 12 時以降の時刻の場合)
1:28:14 | 時，分，秒

指定した時刻がローカル wall clock 時刻の場合は，これらの形式の後に w という文字を続けて指定することができ，時刻がローカル標準 (standard) 時の場合は s という文字を続けることができます。 w または s という文字が指定されていない時は， wall clock 時刻であると解釈されます。

SAVE

ルールが有効になるときに，ローカル標準時に加算する時間を指定します。このフィールドは AT フィールドと同じ形式ですが，もちろん， w や s という接尾語は使用しません。

LETTER/S

このルールが有効になるときに使用するタイム・ゾーンの短縮形の可変部を指定します。たとえば EST や EDT の場合は S または D です。このフィールドが - の場合には，可変部はヌルです。

## 1.2.2 ゾーン行

ゾーン行の形式は次のとおりです。

     Zone NAME              GMTOFF  RULES/SAVE FORMAT UNTIL

次の例を参照してください。

    Zone Australia/South-west 9:30   Aus         CST  1987 Mar 15 2:00

ゾーン行は次のフィールドで構成されます。

NAME

タイム・ゾーンの名前を指定します。この名前はタイム・ゾーンの時刻変換情報ファイルを作成するときに使用されます。

GMTOFF

このタイム・ゾーンの標準時刻を求めるために， GMT (Greenwich Mean Time) に加算する時間を指定します。このフィールドはルール行の AT フィールドや SAVE フィールドと同じ形式です。時間を GMT から減算しなければならない場合には，フィールドの先頭にマイナス記号を指定します。

RULES/SAVE

タイム・ゾーンに適用するルールの名前，またはローカル標準時に加算する時間を指定します。このフィールドが - の場合には，常にそのタイム・ゾーンにおける標準時が適用されます。

FORMAT

このタイム・ゾーンの短縮形の形式を指定します。タイム・ゾーンの短縮形の可変部を示すために %s を使用します。

UNTIL

GMT オフセットの時間，つまりその地域に対してルールが変化する時刻を指定します。これは次のように指定します。

> 年
> 月
> 日
> 時刻

UNTIL を指定した場合には，タイム・ゾーン情報は，指定された時刻まで指定された GMT オフセットと変換ルールにより生成されます。

UNTIL を指定した場合は，次の行は継続行でなければなりません。継続行はゾーン行と同じ形式ですが， Zone という文字列と名前は省略されます。継続行は，前の行の UNTIL フィールドに指定された時刻から始まる情報を，そのファイルに格納します。継続行にはゾーン行と同様に UNTIL フィールドを指定することができ，その場合は，次の行がさらに継続行であることを示します。

## 1.2.3 リンク行

リンク行の形式は次のとおりです。

     Link     LINK-FROM      LINK-TO

次の例を参照してください。

     Link      US/Eastern     EST5EDT

OpenVMS インプリメンテーションでは，Link はコピーとして解釈されます。したがって，上記の行は情報を US/Eastern から EST5EDT にコピーします。

LINK-FROM フィールドは，ゾーン行に NAME フィールドとして表示されます。 LINK-TO フィールドは，そのタイム・ゾーンの別の名前として使用されます。

継続行を除き，行はどの順序で入力してもかまいません。

注意 2 つ以上のローカル時刻を使用する地域では，コンパイルされたファイルに記録される最も早い遷移時刻 ( transition time ) が正しくなるように，遷移時刻 ( transition time ) が最も早いルールの AT フィールドで，ローカル標準時を指定する必要があります。

# 第 2 章
ロケール・ファイルの形式

ロケール定義ソース・ファイルは，ロケールを記述する1つ以上のカテゴリで構成されます。ロケール定義ソース・ファイルは， LOCALE COMPILEコマンドを使用することによって，ロケールに変換できます。ロケールの変更は，ロケール定義ソース・ファイルを編集し，その新しいソース・ファイルに対してもう一度 LOCALE COMPILE コマンドを実行することによってのみ行うことができます。ロケール・ソース・ファイルの各セクションが，ロケール・データのカテゴリを定義します。ソース・ファイルは，同じカテゴリに対して複数のセクションを持つことはできません。

# 2.1 ロケール・カテゴリ

次の標準ロケール・カテゴリがサポートされます。

- LC_COLLATE --- 文字または文字列照合情報を定義する。

- LC_CTYPE --- 文字分類，大文字/小文字変換，および他の文字属性を定義する。

- LC_MESSAGES --- 肯定応答および否定応答の形式を定義する。

- LC_MONETARY --- 通貨数値情報を書式化する上での規則および記号を定義する。

- LC_NUMERIC --- 非通貨数値情報を書式化する上での規則および記号を定義する。

- LC_TIME --- 日付/時刻情報を書式化する上での規則および記号を定義する。

## 2.1.1 デフォルトの設定の変更

ロケール・ソース・ファイルの先頭に，オプションの宣言を指定することによって，ロケール・カテゴリ定義で使用される，デフォルトのコメント文字およびエスケープ文字を変更できます。

- エスケープ文字

  エスケープ文字は，ロケール・ファイルの中で 10 進または 16 進定数を指定するときに使用します。デフォルトのエスケープ文字は，バックスラッシュ(\)です。別のエスケープ文字を定義するには，次の形式で行を指定します。

      escape_char  <char_symbol>

- コメント文字

  コメント文字は，ロケール・ファイル内の，コメント・エントリの先頭文字です。デフォルトのコメント文字は，番号記号(#)です。別のコメント文字を定義するには，次の形式を使用します。

      comment_char  <char_symbol>

上の例で，<char_symbol>は，ロケール・コードセットを作成するのに使用されたcharmapファイルで定義されている，文字のシンボル名です。 escape_charまたはcomment_charと， <char_symbol>とのあいだは， 1 つ以上の空白文字(スペースまたはタブ)で区切らなければなりません。

## 2.1.2 カテゴリ・ソース定義

各カテゴリ・ソース定義は，次の内容で構成されます。

- カテゴリ・ヘッダ(category_name)

- カテゴリ本体を構成する関連キーワードまたは値のペア

- カテゴリ・トレーラ(END category_name)

例を次に示します。

    LC_CTYPE
    <source for LC_CTYPE category>
    END LC_CTYPE

すべてのカテゴリについて，ソースは，キーワード，文字列，文字リテラル，および文字シンボルを使用して指定します。各キーワードは，定義と規則のいずれかを示しています。キーワードが含まれている文の残りの部分には，キーワードに対するオペランドが含まれます。オペランドとキーワードは，1 つ以上の空白文字(スペースまたはタブ)で区切ります。なお，行を終了する改行文字の前に，最終文字としてバックスラッシュ (\) を入力すると，文は次の行に継続します。 1 桁目にコメント文字 (#) がある行は，コメント行として扱われます。

シンボル名は，左山括弧文字 (<) ではじまり，右山括弧文字(>)で終了します。 <および>のあいだには，制御文字およびスペース文字を除く， Portable Character Setのすべての文字を指定できます。たとえば， <A-diaeresis>という指定は，ある文字のシンボル名として有効です。ロケール・ソース・ファイルの中で参照されるシンボル名は， Portable Character Setを使用して，またはそのロケール用の文字セット記述 ( charmap ) ファイルの中で定義する必要があります。

文字リテラルは，文字そのもの，あるいは 10 進，16 進，または 8 進定数です。 10 進定数は，2 桁または 3 桁の 10 進数により，次の形式で構成されます。ここで，nは10進数を表します。

    \dnn or \dnnn

16 進定数は，2 桁の 16 進数により，次の形式で構成されます。ここで，n は 16 進数を表します。

    \xnn

8 進定数は，2 桁または 3 桁の8進数により，次の形式で構成されます。ここで，n は 8 進数を表します。

    \nn or \nnn

ロケール定義ソース・ファイル内で，すべてのカテゴリを明示的に定義する必要はありません。ロケール定義ソース・ファイルの中でカテゴリが定義されていない場合， LOCALE COMPILEコマンドの出力するロケール・ファイルには，このカテゴリのデータは何も格納されません。

# 2.2 LC_COLLATE カテゴリ

LC_COLLATEカテゴリは，照合項目間の相対順序を定義します。このカテゴリは，LC_COLLATE ヘッダではじまり， END LC_COLLATE トレーラで終了します。

照合項目は，照合を行う上での比較の単位であり，文字または文字の並びです。ロケール内の照合項目はすべて，これがロケール内の別の照合項目より以前，等しい，または以降であるかどうかを決定する重みのセットを持っています。ロケール項目はそれぞれ，ロケール・ソース・ファイルをコンパイルするときに， LOCALE COMPILE コマンドによって，照合重みが割り当てられます。これらの照合重みは，文字列を比較するアプリケーション・プログラムによって使用されます。

文字列の比較は，文字列内の各文字の照合重みの比較を，相違が検出されるまで，または文字列が等しいと判断されるまで実行することによって行われます。この比較は，ロケールが複数の照合順序を定義している場合は，数回に渡って行われることがあります。たとえば，フランスのロケールの場合，文字列は，照合重みの 1 次セットを使用して比較されます。この比較の段階で両者が等しいと判断されると，照合重みの 2 次セットを使用してもう一度比較が行われます。照合項目は，ロケールに対して定義されている照合ソート規則の数だけ，関連する照合重みのセットを持ちます。

charmapファイル内で定義される各文字 ( charmapファイルが指定されていない場合は， Portable Character Set 内のすべての文字 ) は，これ自体が照合項目です。新たな照合項目は， collating-element 文を使用して定義できます ( 次の説明参照 )。

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

表 2-1 LC_COLLATE カテゴリ・キーワード
キーワード | 説明
--- | ---
copy | このカテゴリの定義として使用する，既存のロケール名を指定する。 copy文を指定すると，このカテゴリの中で他のキーワードを指定する必要はない。
collating-element | 複数文字の照合項目を指定する。
collating-symbol | 照合シーケンス文で使用する照合シンボルを指定する。
order_start | 照合重みを照合項目に割り当てる照合シーケンス文を指定する。

collating-element文，collating-symbol文，およびorder_start文については，以降の項で詳しく説明します。

## 2.2.1 collating-element 文

collating-element文は，複数文字の照合項目を指定します。

構文

    collating-element <character_symbol> from <string>

character_symbol 引数は， 1 文字以上の文字列の照合項目を，1 つの照合項目として定義します。 character_symbol は，現在の charmap ファイル内のシンボル名，またはこの照合定義の中で定義されている他のシンボル名と重複することはできません。

string 引数は，character_symbol 引数を定義する 2 文字以上の文字列を指定します。 collating-element 文の例を次に示します。

    collating-element <ch> from "<c><h>"
    collating-element <e-acute> from "<acute><e>"
    collating-element <11> from "<1><1>"

collating-element 文で定義される character_symbol 引数は， LC_COLLATE カテゴリの中に限って認識されます。

前へ | 次へ | 目次 | 索引