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

前へ | 次へ | 目次 | 索引

## 2.7.2 フィールド記述子

LC_TIME ロケール定義ソース・ファイルは，フィールド記述子を使用して，日付/時刻形式の要素を表します。これらのフィールド記述子を組み合わせて，別のフィールド記述子を作成したり，日付/時刻形式文字列を作成することができます。フィールド記述子と他の文字を含む書式化文字列で使用される場合，フィールド記述子は，その現在の値で置き換えられます。他の文字はすべて，変更されることなくコピーされます。 表 2-8 は，時刻を書式化するときに LC_TIME カテゴリを照会するコマンドおよびサブルーチンによって使用される，フィールド記述子の一覧です。

表 2-8 LC_TIMEロケール・フィールド記述子
フィールド記述子 | 内容
--- | ---
%a | abday文で定義される曜日の短縮名(Sunなど)を表す。
%A | day文で定義される曜日の完全名(Sundayなど)を表す。
%b | abmon文で定義される月の短縮名(Janなど)を表す。
%B | month文で定義される月の完全名(Januaryなど)を表す。
%c | d_t_fmt文で定義される日付/時刻形式を表す。
%C | 世紀を10進数(00〜99)で表す。
%d | 月のうちの日を10進数(01〜31)で表す。
%D | 日付を%m/%d/%yの形式(01/31/91など)で表す。
%e | 月のうちの日を10進数(1〜31)で表す。 月のうちの日が2桁の数字でない場合，先頭の桁にはスペース文字が詰められる。
%Ec | ロケールに対して，代替の日時表示を指定する。
%EC | ロケールの代替表示において，基準となる年(年号)の名前を指定する。
%Ex | ロケールに対して，代替の日付表示を指定する。
%Ey | ロケールの代替表示において， %EC (年のみ)からのオフセットを指定する。
%EY | 完全な代替年表示を指定する。
%h | abmon文で定義される月の短縮名(Janなど)を表す。このフィールド記述子は，%bフィールド記述子の機能に等しい。
%H | 24時間形式の時刻を10進数(00〜23)で表す。
%I | 12時間形式の時刻を10進数(01〜12)で表す。
%j | 年間通算日を10進数(001〜366)で表す。
%m | 月を10進数(01〜12)で表す。
%M | 分を10進数(00〜59)で表す。
%n | 改行文字を指定する。
%Od | 月のうちの日を，ロケールの代替数値シンボルで指定する。
%Oe | 月のうちの日を，ロケールの代替数値シンボルで指定する。
%OH | 時間(24時間形式)を，ロケールの代替数値シンボルで指定する。
%OI | 時間(12時間形式)を，ロケールの代替数値シンボルで指定する。
%Om | 月をロケールの代替数値シンボルで指定する。
%OM | 分をロケールの代替数値シンボルで指定する。
%OS | 秒をロケールの代替数値シンボルで指定する。
%OU | 年頭からの週数(日曜日を週の最初の曜日とする)を，ロケールの代替数値シンボルで指定する。
%Ow | 曜日をロケールの代替表示の番号で指定する(Sunday = 0)。
%OW | 年頭からの週数(月曜日を週の最初の曜日とする)を，ロケールの代替数値シンボルで指定する。
%Oy | 年(%Cからのオフセット)を，ロケールの代替数値シンボルで指定する。
%p | am_pm文で定義される a.m.またはp.m.文字列を表す。
%r | t_fmt_ampm文で定義される a.m./p.m.表記を伴う12時間形式の時刻を表す。
%S | 秒を10進数(00〜59)で表す。
%t | タブ文字を指定する。
%T | 24時間形式の時刻を%H:%M:%S (16:55:15など)の形式で表す。
%U | 年頭からの週数を10進数(00〜53)で表す。 日曜日，または day文で定義される曜日を週の最初の曜日として，このフィールド記述子の値が計算される。
%w | 曜日を10進数(0〜6)で表す。 日曜日，または day文で定義される曜日を0 (ゼロ)として，このフィールド記述子の値が計算される。
%W | 年頭からの週数を10進数(00〜53)で表す。 月曜日，または day文で定義される曜日を週の最初の曜日として，このフィールド記述子の値が計算される。
%x | d_fmt文で定義される日付形式を表す。
%X | t_fmt文で定義される時刻形式を表す。
%y | 世紀の年(00〜99)を表す。
%Y | 年を10進数(1989など)で表す。
%% | % (パーセント記号)文字を指定する。

## 2.7.3 ロケール定義のサンプル

ロケール定義ソース・ファイルに指定される LC_TIME カテゴリのサンプルを次に示します。

    LC_TIME
    #
    #Abbreviated weekday names (%a)
    abday   "<S><u><n>";"<M><o><n>";"<T><u><e>";"<W><e><d>";\
            "<T><h><u>";"<F><r><i>";"<S><a><t>"

    #Full weekday names (%A)
    day     "<S><u><n><d><a><y>";"<M><o><n><d><a><y>";\
            "<T><u><e><s><d><a><y>";"<W><e><d><n><e><s><d><a><y>";\
            <T><h><u><r><s><d><a><y>";"<F><r><i><d><a><y>";\
            <S><a><t><u><r><d><a><y>"

    #Abbreviated month names (%b)
    abmon   "<J><a><n>";"<F><e><b>";"<M><a><r>";"<A><P><r>";\
            "<M><a><y>";"<J><u><n>";"<J><u><l>";"<A><u><g>";\
            <S><e><P>";"<O><c><t>";"<N><o><v>";"<D><e><c>"

    #Full month names (%B)
    mon     "<J><a><n><u><a><r><y>";"<F><e><b><r><u><a><r><y>";\
            "<M><a><r><c><h>";"<A><P><r><i><l>";"<M><a><y>";\
            <J><u><n><e>";"<J><u><l><y>";"<A><u><g><u><s><t>";\
            "<S><e><P><t><e><m><b><e><r>";"<O><c><t><o><b><e><r>";\
            <N><o><v><e><m><b><e><r>";"<D><e><c><e><m><b><e><r>"

    #Date-and-time format (%c)
    #Note that for improved readability, this section uses actual
    #characters, rather than symbolic names, and is inconsistent with
    #the other sections in this example.  This is bad form.
    #In practice, symbolic names should be used.
    d_t_fmt         "%a %b %d %H:%M:%S %Y"
    #
    #Date format (%x)
    d_fmt           "%m/%d/%y"
    #
    #Time format (%X)
    t_fmt           "%H:%M:%S"
    #
    #Equivalent of AM/PM (%p)
    am_pm           "<A><M>";"<P><M>"
    #
    #12-hour time format (%r)
    #Note that for improved readability, this section uses actual
    #characters, rather than symbolic names, and is inconsistent with
    #the other sections in this example.  This is bad form.
    #In practice, symbolic names should be used.
    t_fmt_ampm      "%I:%M:%S %p"
    #
    era             "+:0:0000/01/01:+*:AD:%Ey %EC";\
    "+:1:-0001/12/31:-*:BC:%Ey %EC"
    era_d_fmt     ""
    alt_digits    "<0><t><h>";"<1><s><t>";"<2><n><d>";"<3><r><d>";\
                  "<4><t><h>";"<5><t><h>";"<6><t><h>";"<7><t><h>";\
                  "<8><t><h>";"<9><t><h>";"<1><0><t><h>"
    #
    END LC_TIME

# 第 3 章
文字セット記述(Charmap)ファイル

本章では，charmap ファイルと呼ばれる文字セット記述ファイルについて説明します。この charmap ファイルは，文字エンコードとして文字シンボルを定義するもので，コード化文字セット，つまりコードセットに対するソース・ファイルです。

# 3.1 Portable Character Set

サポートされているすべてのコードセットは，固有のサブセットとして Portable Character Set (PCS)を持ちます。 PCSは，(標準シンボル名で一覧されている)文字シンボル，およびその16進エンコードで構成されます。 表 3-1 を参照してください。

表 3-1 Portable Character Set
シンボル名 | 16進エンコード
--- | ---
<NUL> | \x00
<alert> | \x07
<backspace> | \x08
<tab> | \x09
<newline> | \x0A
<vertical-tab> | \x0B
<form-feed> | \x0C
<carriage-return> | \x0D
<space> | \x20
<exclamation-mark> | \x21
<quotation-mark> | \x22
<number-sign> | \x23
<dollar-sign> | \x24
<percent> | \x25
<ampersand> | \x26
<apostrophe> | \x27
<left-parenthesis> | \x28
<right-parenthesis> | \x29
<asterisk> | \x2A
<plus-sign> | \x2B
<comma> | \x2C
<hyphen> | \x2D
<period> | \x2E
<slash> | \x2F
<zero> | \x30
<one> | \x31
<two> | \x32
<three> | \x33
<four> | \x34
<five> | \x35
<six> | \x36
<seven> | \x37
<eight> | \x38
<nine> | \x39
<colon> | \x3A
<semi-colon> | \x3B
<less-than> | \x3C
<equal-sign> | \x3D
<greater-than> | \x3E
<question-mark> | \x3F
<commercial-at> | \x40
<A> | \x41
<B> | \x42
<C> | \x43
<D> | \x44
<E> | \x45
<F> | \x46
<G> | \x47
<H> | \x48
<I> | \x49
<J> | \x4A
<K> | \x4B
<L> | \x4C
<M> | \x4D
<N> | \x4E
<O> | \x4F
<P> | \x50
<Q> | \x51
<R> | \x52
<S> | \x53
<T> | \x54
<U> | \x55
<V> | \x56
<W> | \x57
<X> | \x58
<Y> | \x59
<Z> | \x5A
<left-bracket> | \x5B
<backslash> | \x5C
<right-bracket> | \x5D
<circumflex> | \x5E
<underscore> | \x5F
<grave-accent> | \x60
<a> | \x61
<b> | \x62
<c> | \x63
<d> | \x64
<e> | \x65
<f> | \x66
<g> | \x67
<h> | \x68
<i> | \x69
<j> | \x6A
<k> | \x6B
<l> | \x6C
<m> | \x6D
<n> | \x6E
<o> | \x6F
<p> | \x70
<q> | \x71
<r> | \x72
<s> | \x73
<t> | \x74
<u> | \x75
<v> | \x76
<w> | \x77
<x> | \x78
<y> | \x79
<z> | \x7A
<left-brace> | \x7B
<vertical-line> | \x7C
<right-brace> | \x7D
<tilde> | \x7E

# 3.2 charmap ファイルの構成要素

charmapファイルは，次の要素で構成されています。

- オプションの特殊シンボル名宣言セクション

  このセクション内の各宣言は，特殊シンボル名， 1 つ以上のスペースまたはタブ文字，および値の順で構成されます。次のリストは，宣言セクションに指定できる特殊シンボル名の説明です。

  > <code_set_name>
  > charmap ファイルの定義の対象となるコードセット名を指定します。この値は，nl_langinfo (CODESET) サブルーチンで返される値を決定します。 <code_set_name> が宣言されない場合， Portable Character Set の名前が使用されます。
  > <mb_cur_max>
  > コードセット内の文字の最大バイト数を指定します。値は 1〜4 の範囲で有効です。省略時の値は1です。
  > <mb_cur_min>
  > コードセット内の文字の最小バイト数を指定します。サポートされるコードセットはすべて，固有のサブセットとして Portable Character Set を持つため，この値は必ず 1 です。
  > <escape_char>
  > 16 進または 8 進表記のエンコードを示すエスケープ文字を指定します。省略時の値はバックスラッシュ(\)です。
  > <comment_char>
  > charmap ファイル内でのコメントを示すために使用される文字を指定します。省略時の値は番号記号(#)です。

- CHARMAPセクション・ヘッダ

  このヘッダは，文字シンボルとエンコードを対応させるセクションの先頭を指定します。

- コードセット内の文字のマッピングを指定する文

  各文は，文字のシンボル名，およびその文字に対応するエンコードを指定します。マッピング文は，次の形式で指定します。

      <char_symbol> encoding

  シンボル名は左山括弧 (<) 文字ではじまり，右山括弧 (>) 文字で終了します。 char_symbol (<および>で囲まれた名前)は，制御文字とスペース文字を除く， Portable Character Set のすべての文字を使用して指定できます。 char_symbol に > を使用することもできます。この場合，最後の > を除くすべての>文字の前に， <escape_char> 特殊シンボル名で指定されるエスケープ文字を指定します。

  エンコードは 1 文字以上の文字定数で指定しますが，その最大文字数は， <mb_cur_max>特殊シンボル名で指定されます。エンコードは，次の形式の 10 進数，8 進数，または 16 進数の定数で指定します。

  - 10 進定数: \dnnまたは\dnnn。ここで n は任意の 10 進値。

  - 8 進定数: \nnまたは\nnn。ここで n は任意の 8 進値。

  - 16 進定数: \xnn。ここで n は任意の 16 進値。

  文字シンボル定義のサンプルを次に示します。

      <A>        \d65        #decimal constant
      <B>        \x42        #hexadecimal constant
      <j10101>   \x81\xA1    #multiple hexadecimal constants

  シンボル名の範囲とこれに対応するエンコード値を定義することもできます。なお，各シンボル名は，数値でない共通接頭辞を持ち， 2 番目のシンボル名の数値部分が，最初のシンボル名の数値部分以上であることが必要です。この形式では，シンボル名値が，ゼロ文字以上の非数値文字，および 1 けた以上の 10 進数の整数の順で構成されます。この指定形式は，一連のシンボル名を定義します。たとえば，文字列 <j0101>...<j0104> は，シンボル名 <j0101>，<j0102>，<j0103>，および <j0104> として，順に解釈されます。

  シンボル名の範囲を定義する文の中で，指定されたエンコード値は，範囲内の先頭のシンボル名の値に相当します。以降のシンボル名は，昇順のエンコード値を持ちます。次にサンプル文を示します。

      <j0101>...<j0104>        \d129\d254

  このサンプル文は，次のように解釈されます。

      <j0101> \d129\d254
      <j0102> \d129\d255
      <j0103> \d130\d0
      <j0104> \d130\d1

  1 つのシンボル名に対して複数のエンコードを割り当てることはできませんが，文字によっては複数の共通名を持つため， 1 つのエンコード値に対して複数の名前を作成することはできます。たとえば，.文字は，ピリオドと呼ぶこともあれば，終止符 ( full stop ) と呼ぶこともあります。両方の名前を，charmapファイルに指定できます。この例を次に示します。

      <period>        \x2e
      <full-stop>     \x2e

  コメントは， <comment_char> 特殊シンボル名で指定される文字で開始しなければなりません。行全体がコメントの場合は，行の 1 桁目に， <comment_char> を指定することが必要です。

- END CHARMAPセクション・トレーラ

  このトレーラは，マッピング文の終了を指定します。

  サンプルcharmapファイルの一部を，次に示します。

      CHARMAP
      <code_set_name>         "ISO8859-1"
      <mb_cur_max>            1
      <mb_cur_min>            1
      <escape_char>           \
      <comment_char>          #

      <NUL>                   \x00
      <SOH>                   \x01
      <STX>                   \x02
      <ETX>                   \x03
      <EOT>                   \x04
      <ENQ>                   \x05
      <ACK>                   \x06
      <alert>                 \x07
      <backspace>             \x08
      <tab>                   \x09
      <newline>               \x0a
      <vertical-tab>          \x0b
      <form-feed>             \x0c
      <carriage-return>       \x0d
      END CHARMAP

前へ | 次へ | 目次 | 索引