LC_TIME カテゴリー

ILE COBOL では、LC_TIME カテゴリーは、ロケールに基づく日付および時刻をフォーマット設定するのに使用されます。 他のロケール・カテゴリーと同様に、LC_TIME はそれらのオペランドが後に続く一連のキーワードで構成されます。 LC_TIME キーワードの "d_fmt" は、ロケールに基づく日付データ項目の形式を指定します。 LC_TIME キーワードの "t_fmt" は、ロケールに基づく時刻データ項目の形式を指定します。

以下のセクションでは、すべての LC_TIME カテゴリーのキーワード (ILE COBOL が現在使用しなくなったものを含めて) の詳細を説明します。 以下の説明では、ILE COBOL が現在サポートしていない %a および %c のようないくつかの変換指定子を説明します。

ロケール定義ソース・ファイルの LC_TIME カテゴリーは、時刻と日付情報のフォーマット設定を行うための規則と記号を定義します。 このカテゴリーは、LC_TIME カテゴリー・ヘッダーで始まり、END LC_TIME カテゴリー・トレーラーで終わります。

LC_TIME カテゴリー・キーワードのオペランドはすべて、ストリング値または整数値として定義されます。 ストリング値は、二重引用符 ("") で結合されます。 値はすべて、1 つまたは複数のスペースで、それらが定義するキーワードと区切られます。 2 つの二重引用符が隣接している場合は、未定義ストリング値であることを示します。 -1 は未定義整数値であることを示します。 フィールド記述子は、時刻と日付の形式のエレメントを表示するために LC_TIME カテゴリーに照会するコマンドおよびサブルーチンによって使用されます。 LC_TIME カテゴリーでは、以下に示すキーワードが認識されます。

abday
%a フィールド記述子に一致する省略した曜日名を定義します。 7 つのセミコロンで区切られたストリングで構成された値が認識されます。 最初のストリングは、週の最初の日 (日曜) の省略名に相当し、2 番目は、週の 2 日目の省略名に相当し、... というようになります。
day
%A フィールド記述子に一致する曜日名を完全なスペルで定義します。 7 つのセミコロンで区切られたストリングで構成された値が認識されます。 最初のストリングは、週の最初の日 (日曜) の完全なスペルの名前に相当し、2 番目は、週の 2 日目の名前に相当し、... というようになります。 このキーワードは、ILE COBOL では使用されません。
abmon
%b フィールド記述子に一致する省略した月の名前を定義します。 12 のセミコロンで区切られたストリングで構成された値が認識されます。 最初のストリングは、年の最初の月 (1 月) の省略名に相当し、2 番目は、年の 2 カ月目の省略名に相当し、... というようになります。 このキーワードは、ILE COBOL では使用されません。
mon
%B フィールド記述子に一致する月の名前を完全なスペルで定義します。 12 のセミコロンで区切られたストリングで構成された値が認識されます。 最初のストリングは、年の最初の月 (1 月) の完全なスペルの名前に相当し、2 番目は、年の 2 カ月目の完全なスペルの名前に相当し、.... というようになります。 このキーワードは、ILE COBOL では使用されません。
d_t_fmt
%c フィールド記述子に一致する標準の日付と時刻の形式を使用したストリングを定義します。 ストリングには、どのような組み合わせの文字、フィールド記述子、またはエスケープ・シーケンスも入れることができます。 このキーワードは、ILE COBOL では使用されません。
d_fmt
%x フィールド記述子に一致する標準の日付形式を使用したストリングを定義します。 ストリングには、どのような組み合わせの文字、フィールド記述子、またはエスケープ・シーケンスも入れることができます。 以下の例は、d_fmt キーワードがどのように構成されているかを示します。
%D
%D は %m/%d/%y の日付形式を示します。
%d-%m-%y
%m/%d/%Y
t_fmt
%X フィールド記述子に一致する標準時刻形式を使用したストリングを定義します。 ストリングには、どのような組み合わせの文字、フィールド記述子、またはエスケープ・シーケンスも入れることができます。 以下の例は、t_fmt キーワードがどのように構成されているかを示します。
%H:%M:%S
%H.%M.%S
am_pm
%p フィールド記述子に対応する、AM (午前) と PM (午後) を表すために使用するストリングを定義します。 ; (セミコロン) で区切られた 2 つのストリングで構成された値が認識されます。 最初のストリングは、AM (午前) の指定に相当し、最後のストリングは、PM (午後) の指定に相当します。
t_fmt_ampm
am_pm 値 (%p フィールド記述子) を含む標準 12 時間の時刻形式を使用するストリングを定義します。 このステートメントは、%r フィールド記述子に相当します。 ストリングには、どのような組み合わせの文字およびフィールド記述子も入れることができます。 このキーワードは、ILE COBOL では使用されません。
era
%E フィールド記述子の修飾子に相当するロケール内のそれぞれの紀元ごとに、どのように年をカウントし、表示するかを定義します。 それぞれの紀元ごとに、以下の形式で 1 つのストリングが必要です。
direction:offset:start_date:end_date:era_name:era_format
このキーワードは、ILE COBOL では使用されません。

紀元のストリング形式の変数は、以下のように定義されます。

direction
- (負符号) または + (正符号) 文字で指定します。 正符号は、開始の日付から終了の日付に移る場合に、正の方向にカウントする年を指示します。 負符号は、開始の日付から終了の日付に移る場合に、負の方向にカウントする年を指示します。
offset
紀元の最初の年を表す数値を指定します。
start_date
yyyy/mm/dd 形式で紀元の開始日を指定します。 ここで、yyyy、 mm、および dd は、それぞれ年、月、日を表します。 AD 1 年より前の年は、負の数字で表されます。 たとえば、BC 100 年の 3 月 5 日に開始する紀元は、-100/03/05 として表されます。
end_date
start_date 変数、または 2 つの特殊値 -* または +* のいずれか 1 つを使用する同じ形式で、紀元の終了日を指定します。 -* 値は、紀元の終了日が、逆方向の時間で展開されることを示します。 +* 値は、紀元の終了日が、順方向の時間で展開されることを示します。 したがって、終了の日付は、時間的な順序に従って、紀元の開始日の前または後になります。 たとえば、西暦紀元 AD および BC のストリングは、以下のように入力します。
+:0:0000/01/01:+*:AD:%o %N
+:1:-0001/12/31:-*:BC:%o %N
era_name
%EC フィールド記述子を置換する紀元の名前を表すストリングを指定します。
era_format
%EY フィールド記述子をフォーマット設定するためのストリングを指定します。

1 つの紀元値は、それぞれの紀元ごとに 1 つのストリングで構成されています。 複数の紀元を指定する場合、各ストリングは ; (セミコロン) で区切ります。

era_d_fmt
%Ex フィールド記述子に相当する代替紀元の形式で日付を表すのに使用するストリングを定義します。 ストリングには、どのような組み合わせの文字およびフィールド記述子も入れることができます。
era_t_fmt
%EX フィールド記述子に相当する代替紀元の形式で時刻を表すのに使用するストリングを定義します。 ストリングには、どのような組み合わせの文字およびフィールド記述子も入れることができます。
era_d_t_fmt
%Ec フィールド記述子に相当する代替紀元の形式で日付と時刻を表すのに使用するストリングを定義します。 ストリングには、どのような組み合わせの文字およびフィールド記述子も入れることができます。
alt_digits
%O フィールド記述子に相当する数字の代替ストリングを定義します。 ; (セミコロン) で区切られたストリングのグループで構成された値が認識されます。 最初のストリングは、ゼロの代替ストリングを表し、2 番目のストリングは 1 の代替ストリングを表し、.... というようになります。 指定できるのは、最大 100 代替ストリングです。

エスケープ・シーケンス

d_t_fmt、d_fmt、および t_fmt キーワード値に許可されるエスケープ・シーケンスは、以下のとおりです。

¥¥
円記号を表します。
¥a
警報文字を表します。
¥b
バックスペース文字を表します。
¥f
用紙送り文字を表します。
¥n
改行 (newline) 文字を表します。
¥r
復帰 (キャリッジ・リターン) 文字を表します。
¥t
タブ文字を表します。
¥v
垂直タブ文字を表します。

LC_TIME 例

以下に、ロケール定義ソース・ファイルにリストされている 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)
      d_t_fmt "%a_%bf%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)
      t_fmt_ampm   "%I:%M:%Sm%p"
      #
      era     "+:0:0000/01/01:+*:AD:%EC";¥
              "+:1:-0001/12/31:-*:BC:%Ey";
      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