日付を検証し、形式を変換します。
Synopsis
$ZDATEH(date,dformat,monthlist,yearopt,startwin,endwin,mindate,maxdate,erropt)
$ZDH(date,dformat,monthlist,yearopt,startwin,endwin,mindate,maxdate,erropt)
パラメータ
date 有効な日付文字列として評価する式。$ZDATEH は、この日付文字列を $HOROLOG 形式に変換します。これは、現在の日付を表す明示的な日付 (さまざまな形式で指定)、あるいは “T” または “t” です。“T” または “t” 文字列は、オプションで符号付きの整数のオフセットを含むことができます。例えば、“T-7” は現在の日付の 7 日前を表します。
dformat オプション — 日付の形式のオプション。 整数コードとして指定します。
monthlist オプション — 入力した月名を含む文字列あるいは変数名
yearopt オプション — 年を 2 桁あるいは 4 桁のどちらで表記するかを指定するコード
startwin オプション — 日付を 2 桁の年で表す必要があるスライディング・ウィンドウの開始を指定する数値
endwin オプション — 日付を 2 桁の年で表す必要があるスライディング・ウィンドウの終了を指定する数値
mindate オプション — 有効な日付範囲の下限
maxdate オプション — 有効な日付範囲の上限
erropt オプション — このパラメータは、date 値が無効、あるいは範囲外の場合に生じるエラー・メッセージを制御します。
概要
$ZDATEH 関数は、指定した日付を有効にし、$ZDATE 関数でサポートされる形式から $HOROLOG 形式に変換します。$ZDATEH が実行する動作は、使用するパラメータによって決まります。
単純な $ZDATEH 形式
$ZDATEH(date) は、MM/DD/[YY]YY 形式の日付を $HOROLOG 形式の最初の整数に変換します ($HOROLOG 形式は 2 つの整数で構成されており、最初の整数は日付を表し、2 番目の整数は時刻を表します)。1900 年から 1999 年までは 2 桁または 4 桁で指定し、1900 年より前、または 1999 年より後の年は 4 桁で指定します。
$ZDATEH 形式のカスタマイズ
$ZDATEH(date,dformat,monthlist,yearopt,startwin,endwin,mindate,maxdate,erropt) は、指定された dformat の日付を $HOROLOG 形式に変換します。dformatmonthlistyearoptstartwinendwinmindatemaxdate、および erropt の値は、$ZDATE によって使用される値と同一です。ただし、dformat に 5、6、7、8、9 を使用している場合、$ZDATEHdformat コード 1、2、3、5、6、7、8、9 に対して定義されている (dformat コード 4 は除きます)、あらゆる外部日付形式の日付を認識して変換します。また、特別な相対 date 形式も認識します。相対 date 形式は、T または t (“today” の意味) で始まる文字列の後に、オプションでプラス記号 (+) またはマイナス記号 (-)、および現在の日付より前の、あるいは後の日数を表す整数値が続きます。
パラメータ
date
$HOROLOG 形式に変換する日付。 引用符つき文字列として指定します。これは、明示的な日付、あるいは、“T” または “t” 文字列で表す現在の絶対日付です。
明示的な日付は、dformat によってサポートされる形式で指定する必要があります。許可される形式は、dformat パラメータに応じて異なります。dformat が指定されていない場合、あるいは 1、2、3、4 の場合、許可される日付形式は 1 つだけです。dformat が 5、6、7、8、9 の場合、複数の日付形式が許可されます。$ZDATEH は、02/03/02 (2002 年 2 月 3 日) とヨーロッパ形式の 02/03/02 (2002 年 3 月 2 日) の違いを検出できないので、ヨーロッパ日付形式 (dformat=4) は、許可される複数の日付形式ではないことに注意してください。ヨーロッパ日付形式を使用する場合、明示的に dformat=4 を指定する必要があります。日付を許可されていない形式で指定したり、(2002 年 2 月 31 日などの) 存在しない日付を指定すると、$ZDATEH は、<ILLEGAL VALUE> エラー・コードを返します ($ZDATEH は、うるう年の確認も実行します。したがって、2004 年 2 月29 日は許可されますが、2003 年 2 月 29 日は許可されません)。
絶対日付は、現在の (今日の) 日付を示す “T” または “t” の文字から開始する文字列として指定されます。この文字列は、オプションでプラス記号、またはマイナス記号、および整数を含みます。 これは、現在の日付からのオフセットの日数を指定します。例えば、“t+9” は現在の日付の 9 日後を表し、“t-12” は現在の日付の 12 日前を表します。絶対日付形式は、dformat が 5、6、7、8、9 で、“T” (または “t”)、あるいは “T” (または “t”) に符号と整数が続く形式である場合のみ、許可されます。整数以外の値、算術式、符号なしの整数、または整数なしの符号を指定した場合、<ILLEGAL VALUE> エラーが発生します。“T+0” および “T-0” は許可されており、現在の日付を返します。$HOROLOG 日付が 0 未満の値、あるいは 9999 年以降の日付を表す日付となるオフセットを指定した場合、<VALUE OUT OF RANGE> エラーが返されます。
dformat
日付の形式です。有効な値は以下の通りです。
意味
-1 現在のロケールの DateFormat プロパティから、有効な dformat 値を取得します。既定は 1 です。dformat を指定しなければ、これが既定の振る舞いになります。
1 MM/DD/[YY]YY (07/01/97)
2 DD Mmm [YY]YY (01 Jul 97)
3 YYYY-MM-DD (1997-07-01) - ODBC 形式
4 DD/MM/[YY]YY (01/07/97) - ヨーロッパ形式
5 Mmm D, YYYY (Jul 1, 1997)
6 Mmm D YYYY (Jul 1 1997)
7 Mmm DD [YY]YY (Jul 01 1997)
8 YYYYMMDD (19970701) - 数値形式
9 Mmmmm D, YYYY (July 1, 1997)
以下はその説明です。
構文 意味
YYYY YYYY は 4 桁の年です。[YY]YY は、日付がアクティブ・ウィンドウ内で 2 桁の場合は 2 桁、それ以外は 4 桁です。日付形式 (dformat) 1 から 4 までを使用するときは、年の値を提供する必要があります。これらの日付形式では、欠けている年の値は提供されません。日付形式 5 から 9 は、指定する日付に年が含まれない場合、現在の年と解釈します。
MM 2 桁の月
D 日付が 10 未満の場合は 1 桁、それ以外は 2 桁の日
DD 2 桁の日
Mmm 現在のロケールの MonthAbbr プロパティから取得した月の省略形。以下はその既定値です。“Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec”別の月の省略形 (あるいは長さに制限のない名前) は、$ZDATEHmonthlist パラメータとして指定したオプションのリストから取得することができます。
Mmmmm MonthName プロパティが指定する月の正式な名前。以下はその既定値です。“January February March ... November December”.
monthlist
指定した月名を含む文字列あるいは変数名です。monthlist の名前は、組み込みリストからの既定の月の値を置き換えます。monthlist を使用して、正式な月名や、英語以外の言語の月名、およびその省略名を指定します。
monthlist は、dformat が 2、5、6、7、または 9 の場合にのみ有効です。dformat が 1、3、4、または 8 の場合、$ZDATEHmonthlist を無視します。
monthlist の最初の文字は、区切り文字を指定します (既定リストにある Jan の前の空白を参照)。monthlist. にある各月の名前または省略名の間に、同じ区切り文字を置く必要があります。この区切り文字は、返される日付の月、日、年の間に表示されます。
monthlist を省略するか、または値に -1 を指定すると、$ZDATEH は現在のロケールの MonthAbbr プロパティで定義された月の省略名リストを使用します。既定は以下の通りです。
“Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec”
しかし、dformat が 9 の場合、$ZDATEH は現在のロケールの MonthName プロパティで定義される正式な名前リストを使用します。 既定は以下の通りです。
“January February March ... November December”
yearopt
年を 2 桁で表示するか 4 桁で表示するかを指定する数値コード。有効な値は以下の通りです。
意味
-1 現在のロケールの YearOption プロパティから有効な yearopt 値を取得します。この既定値は 0 です。yearopt を指定しない場合、これが既定の振る舞いになります。
0 プロセス特有の (%DATE ユーティリティにより設定された) スライディング・ウィンドウが実行されていない限り、1900 年代 (1900 から 1999 まで) の日付は 2 桁で表示します。スライディング・ウィンドウが有効な場合は、指定範囲内の日付のみ 2 桁の年で表示します。1900 年代以外もしくはプロセス特有のスライディング・ウィンドウ以外の日付は、すべて 4 桁で表示します。
1 有効になっている一時的なスライディング・ウィンドウには関係なく、1900 年代の日付は 2 桁の年、それ以外は 4 桁の年で表示します。
2 一時的に実行されているスライディング・ウィンドウには関わらず、日付はすべて 2 桁の年で表します。日付はすべてと 1900 年代と解釈します。このオプションにより、4 桁の年から 2 桁が削除されるため、このオプションを使用すると、世紀に関する情報が喪失して復元不能になります (日付がすべて同じ世紀内のものであれば、情報を失っても大きな問題にはなりません)。
3 startwin と (オプションで) endwin に定義した一時的なスライディング・ウィンドウ範囲内に収まる日付を、2 桁の年で表します。それ以外の日付は 4 桁で表します。yearopt =3 の場合、startwinendwin は、$HOROLOG 形式の絶対日付です。
4 すべての日付を 4 桁の年で表します。2 桁で入力された日付は、無効として拒否されます。
5 startwin と (オプションで) endwin に定義した一時的なスライディング・ウィンドウ範囲内に収まる日付を、2 桁の年で表します。それ以外の日付は 4 桁で表します。yearopt=5 の場合、startwinendwin は相対年になります。
6 2 桁の年で現在の世紀にあるすべての日付を表します。 それ以外は 4 桁の年で表します。
startwin
日付を 2 桁の年で表す必要があるスライディング・ウィンドウの最初を指定する数値です。yearopt の値に 3 または 5 を使用する場合は、startwin を指定する必要があります。startwin は、その他の yearopt 値では無効になります。
yearopt = 3 のとき、startwin はスライディング・ウィンドウの最初の日付を示す $HOROLOG 形式の絶対日付です。
yearopt= 5 の場合、startwin は、現在以前の年数で表される、スライディング・ウィンドウの最初の年を示す数値です。スライディング・ウィンドウは常に、startwin で指定した年の初日 (1 月 1 日) から開始します。
endwin
日付を 2 桁の年で表すスライディング・ウィンドウの最後を指定する数値です。yearopt が 3 あるいは 5 のとき、endwin を指定する必要があります。endwin は、その他の yearopt 値では無効になります。
yearopt =3 のとき、endwin はスライディング・ウィンドウの最後日付を示す $HOROLOG 日付形式の絶対日付です。
yearopt = 5 のとき、endwin は、現在の年から後の年数を示すスライディング・ウィンドウの最後の年を示す数値です。スライディング・ウィンドウは常に、endwin で指定した年の最後の日 (December 31) または、(endwin を省略した場合は) 暗示されている最後の年で終了します。
endwin を省略、あるいは -1 を指定した場合、スライディング・ウィンドウの有効期限は 100 年間です。
startwinendwin の両方を指定する場合、指定するスライディング・ウィンドウの年数は 100 年以内に収める必要があります。
mindate
有効な日付の下限を指定する数値です。mindate を省略、あるいは -1 を指定すると、現在のロケールの DateMinimum プロパティから下限を取得します。 既定は 0 (1840 年 12 月 31 日) です。
maxdate
有効な日付の上限を指定する数値です。省略するか、または -1 を指定すると、この上限は、現在のロケールの DateMaximum プロパティから取得されます。既定は、$HOROLOG の日付部分で許容される最大値である、2980013 (9999 年 12 月 31 日) です。maxdate を超える値を指定しようとすると、<VALUE OUT OF RANGE> エラー・メッセージが発生します。
erropt
このパラメータは、date 値が無効あるいは範囲外の場合に生じるエラー・メッセージを制御します。<ILLEGAL VALUE> あるいは <VALUE OUT OF RANGE> エラー・メッセージを生成する代わりに、関数は erropt を返します。
以下の例は、1983 年 6 月 12 日の $HOROLOG 日付を返します。
   WRITE $ZDATEH("06/12/83")
これは、52027 を返します。
以下の例は、1902 年 6 月 12 日の $HOROLOG 日付を返します。
   WRITE $ZDATEH("06/12/02")
これは、22442 を返します。
Note:
既定では、年を 2 桁で表すと 1900 年代の日付を表すものとみなされます。21 世紀以降の日付を表すには、4 桁の年を指定するか、yearoptstartwinendwin パラメータを指定して、2 桁のスライディング・ウィンドウを変更します。スライディング・ウィンドウは、ユーザのロケールに設定することもできます。
以下の例は、複数の日付エントリ形式を許可するために dformat パラメータを使用する方法を示します。
   WRITE !,$ZDATEH("November 2, 1954",5)
   WRITE !,$ZDATEH("Nov 2, 1954",5)
   WRITE !,$ZDATEH("Nov. 2 1954",5)
   WRITE !,$ZDATEH("11/2/1954",5)
   WRITE !,$ZDATEH("11.02.54",5)
   WRITE !,$ZDATEH("11 02 1954",5)
すべて 41578 を返します。
以下の例で、現在の日付が 2002 年 11 月 25 日であるとします。
   WRITE $HOROLOG
これは、59133,37854 を返します。 最初の整数は、現在の日付を表します。
以下の例は、“T” date を使用して今日の日付 (2002 年 11 月 25 日) を返します。
   WRITE $ZDATEH("T",5)
これは、59133 を返します。
   WRITE $ZDATEH("T+7",5)
これは、59140 を返します。
最後の例では、年を指定しない場合には $ZDATEH が現在の年 (この場合は 2002 年) であると仮定することを示しています。
   WRITE $ZDATEH("25 Nov",5)
これは、59133 を返します。
メモ
先頭のゼロ
数値日付値は、先頭にゼロの数字を含むことができ、また先頭のゼロすべてを省略することもできます。
$ZDATEH で無効な値
以下の状況では、<FUNCTION> エラーが発生します。
以下の状況では、<ILLEGAL VALUE> エラーが発生します。
以下の状況では、<VALUE OUT OF RANGE> エラーが発生します。
erropt を使用するエラー処理
erropt パラメータが指定されている場合、このパラメータは、無効な値あるいは date の範囲外の値が原因で生成されるエラー・メッセージを制御します。他のパラメータの無効な値、あるいは範囲外の値が原因で発生したエラーについては、erropt が指定されているかどうかに関係なく、常にエラー・メッセージが生成されます。
例えば、$ZDATEHendwinstartwin より前になるスライディング・ウィンドウを指定すると、常に <ILLEGAL VALUE> エラーが発生します。同様に、maxdatemindate より小さい場合、<ILLEGAL VALUE> エラーが発生します。
日付形式 5 から 9 で許可される日付値
$ZDATEH 日付形式 (dformat) 5 から 9 は、曖昧でなければあらゆる日付値を受け入れます。日付形式 5 から 9 は、指定する日付に年が含まれない場合、現在の年と解釈します。$ZDATEH に 5、6、7、8、9 の dformat を渡すと、以下の形式のいずれも許可されます。
MMDD は、実装されていない形式です。
ユーティリティの代わりに使用する $ZDATEH
$ZDATEH 関数と日付ユーティリティのいずれかを選択する必要がある場合、以下の点に注意してください。
日付区切り文字
$ZDATEH は、dformat が 1 または 4 のとき、年月日の区切り文字として現在のロケールの DateSeparator プロパティの値を使用します。ODBC 日付形式 (dformat=3) の区切り文字は、常に ODBC 基準で要求されている “-” です。DateSeparator の既定値は “/” であり、この区切り文字はすべてのドキュメントで使用されています。
関連項目