日付を検証し、形式を変換します。
Synopsis
$ZDATEH(date,dformat,monthlist,yearopt,startwin,endwin,mindate,maxdate,erropt)
$ZDH(date,dformat,monthlist,yearopt,startwin,endwin,mindate,maxdate,erropt)
$ZDATEH(
date) は、MM/DD/[YY]YY 形式の日付を
$HOROLOG 形式の最初の整数に変換します (
$HOROLOG 形式は 2 つの整数で構成されており、最初の整数は日付を表し、2 番目の整数は時刻を表します)。1900 年から 1999 年までは 2 桁または 4 桁で指定し、1900 年より前、または 1999 年より後の年は 4 桁で指定します。
$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> エラーが返されます。
指定した月名を含む文字列あるいは変数名です。
monthlist の名前は、組み込みリストからの既定の月の値を置き換えます。
monthlist を使用して、正式な月名や、英語以外の言語の月名、およびその省略名を指定します。
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
年を 2 桁で表示するか 4 桁で表示するかを指定する数値コード。有効な値は以下の通りです。
yearopt= 5 の場合、
startwin は、現在以前の年数で表される、スライディング・ウィンドウの最初の年を示す数値です。スライディング・ウィンドウは常に、
startwin で指定した年の初日 (1 月 1 日) から開始します。
yearopt = 5 のとき、
endwin は、現在の年から後の年数を示すスライディング・ウィンドウの最後の年を示す数値です。スライディング・ウィンドウは常に、
endwin で指定した年の最後の日 (December 31) または、(
endwin を省略した場合は) 暗示されている最後の年で終了します。
endwin を省略、あるいは -1 を指定した場合、スライディング・ウィンドウの有効期限は 100 年間です。
startwin と
endwin の両方を指定する場合、指定するスライディング・ウィンドウの年数は 100 年以内に収める必要があります。
有効な日付の下限を指定する数値です。mindate を省略、あるいは -1 を指定すると、現在のロケールの DateMinimum プロパティから下限を取得します。 既定は 0 (1840 年 12 月 31 日) です。
有効な日付の上限を指定する数値です。省略するか、または -1 を指定すると、この上限は、現在のロケールの DateMaximum プロパティから取得されます。既定は、
$HOROLOG の日付部分で許容される最大値である、2980013 (9999 年 12 月 31 日) です。
maxdate を超える値を指定しようとすると、<VALUE OUT OF RANGE> エラー・メッセージが発生します。
このパラメータは、
date 値が無効あるいは範囲外の場合に生じるエラー・メッセージを制御します。<ILLEGAL VALUE> あるいは <VALUE OUT OF RANGE> エラー・メッセージを生成する代わりに、関数は
erropt を返します。
以下の例は、1983 年 6 月 12 日の
$HOROLOG 日付を返します。
WRITE $ZDATEH("06/12/83")
以下の例は、1902 年 6 月 12 日の
$HOROLOG 日付を返します。
WRITE $ZDATEH("06/12/02")
Note:
既定では、年を 2 桁で表すと 1900 年代の日付を表すものとみなされます。21 世紀以降の日付を表すには、4 桁の年を指定するか、
yearopt、
startwin、
endwin パラメータを指定して、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)
以下の例で、現在の日付が 2002 年 11 月 25 日であるとします。
これは、59133,37854 を返します。 最初の整数は、現在の日付を表します。
以下の例は、T
date を使用して今日の日付 (2002 年 11 月 25 日) を返します。
最後の例では、年を指定しない場合には
$ZDATEH が現在の年 (この場合は 2002 年) であると仮定することを示しています。
WRITE $ZDATEH("25 Nov",5)
数値日付値は、先頭にゼロの数字を含むことができ、また先頭のゼロすべてを省略することもできます。
以下の状況では、<FUNCTION> エラーが発生します。
-
無効な
dformat コード (-1 未満もしくは 9 より大きい整数値、0、整数以外の値) を指定したとき
-
無効な
yearopt コード (-1 未満もしくは 6 より大きい整数値、0、整数以外の値) を指定したとき
-
以下の状況では、<ILLEGAL VALUE> エラーが発生します。
以下の状況では、<VALUE OUT OF RANGE> エラーが発生します。
-
1840 年 12 月 31 日より前、あるいは 9999 年 12 月 31 日より後の日付 (あるいは T のオフセット) を指定して、
erropt 値を指定しないとき
-
erropt パラメータが指定されている場合、このパラメータは、無効な値あるいは
date の範囲外の値が原因で生成されるエラー・メッセージを制御します。他のパラメータの無効な値、あるいは範囲外の値が原因で発生したエラーについては、
erropt が指定されているかどうかに関係なく、常にエラー・メッセージが生成されます。
$ZDATEH 日付形式 (dformat) 5 から 9 は、曖昧でなければあらゆる日付値を受け入れます。日付形式 5 から 9 は、指定する日付に年が含まれない場合、現在の年と解釈します。
$ZDATEH に 5、6、7、8、9 の
dformat を渡すと、以下の形式のいずれも許可されます。
$ZDATEH 関数と日付ユーティリティのいずれかを選択する必要がある場合、以下の点に注意してください。
$ZDATEH は、
dformat が 1 または 4 のとき、年月日の区切り文字として現在のロケールの DateSeparator プロパティの値を使用します。ODBC 日付形式 (
dformat=3) の区切り文字は、常に ODBC 基準で要求されている - です。DateSeparator の既定値は / であり、この区切り文字はすべてのドキュメントで使用されています。