CHGDAT - 日付文字列の表示を変更
CHGDAT 関数は、日付を表す入力文字列の年、月、日の部分を再編成します。この関数により、長い日付入力文字列を短く、短い日付入力文字列を長くすることもできます。長い表現には、3 つの日付構成要素である年、月、日がすべて含まれ、短い表現では、年、月、日の日付構成要素の 1 つまたは 2 つが省略されます。入力および出力の日付文字列を記述するには、日付文字列内の日付構成要素 (年、月、日) の順序、および年に 2 桁と 4 桁のどちらを使用するか (例、04 または 2004) を指定する表示オプションを使用します。CHGDAT は、入力日付文字列を読み取り、同一の日付を異なる方法で表示する出力日付文字列を作成します。
注意:CHGDAT には、実際の日付ではなく入力文字列としての日付が必要です。標準日付とレガシー日付のどちらを入力する場合も、CHGDAT を適用する前に、EDIT 関数や DATECVT 関数などを使用して、日付文字列に変換します。
日付文字列内の日付構成要素の順序は、次の文字で構成される表示オプションで記述します。
|
文字 |
説明 |
|---|---|
D |
日 (01 から 31) |
M |
月 (01 から 12) |
Y[Y] |
年
|
結果文字列に数字ではなく月名を表示するには、結果文字列の表示オプションに次の文字を追加します。
|
文字 |
説明 |
|---|---|
T |
月を 3 バイトの略語で表示します。 |
X |
月を完全な名前で表示します。 |
表示オプションには、表示する文字を 5 バイト以下で指定することができます。これらの表示オプション以外の文字列は、無視されます。
たとえば、表示オプション「DMYY」は、2 桁の日、2 桁の月、4 桁の年を指定します。
注意:表示オプションは、日付フォーマットとは異なります。
日付の長さを変換
下表のように、日付を短い表現から長い表現 (例、年月から年月日) に変換すると、短い表現内に存在しない日付部分は、この関数により指定されます。
|
存在しない日付部分 |
関数により指定 |
|---|---|
|
日 (例、YM から YMD) |
月の最終日 |
|
月 (例、Y から YM) |
年の最終月 (12 月) |
|
年 (例、MD から YMD) |
99 年 |
|
2 桁の年から 4 桁の年への変換 (例、YMD から YYMD) |
世紀は DEFCENT および YRTHRESH で定義する 100 年で決定されます。 DEFCENT および YRTHRESH についての詳細は、『ibi™ WebFOCUS® アプリケーション作成ガイド』の「環境のカスタマイズ」を参照してください。 |
日付文字列の表示を変更
CHGDAT('in_display_options','out_display_options',date_string,output)
A1 から A5
date_string のレイアウトを記述する 5 バイト以内の一連の表示オプションです。これらのオプションは、文字フィールドに格納するか、リテラルとして指定します。リテラルは一重引用符で囲みます。
A1 から A5
変換後の文字列のレイアウトを記述する 5 バイト以内の一連の表示オプションです。これらのオプションは、文字フィールドに格納するか、リテラルとして指定します。リテラルは一重引用符で囲みます。
A2 から A8
入力日付文字列です。日付構成要素の順序は in_display_options で指定します。
元の日付が数値フォーマットの場合、日付文字列に変換する必要があります。date_string の日付表現が正しくない (日付が無効) 場合、関数はブランクを返します。
out_display_options で指定する日付文字列を格納するために十分なバイト数を指定します。A17 を指定すると、最長の日付文字列を格納することができます。
結果を格納するフィールド名、または出力フォーマットです。フォーマットは一重引用符 (') で囲みます。
注意:CHGDAT は、日付ではなく日付文字列を使用し、17 バイト以下の日付文字列を返すため、EDIT 関数、DATECVT 関数、またはそれ以外の手段により、日付文字列に変換、あるいは日付文字列から変換する必要があります。
日付表示を YMD から MDYYX に変換
EDIT 関数は、HIRE_DATE の表示を数値から文字フォーマットに変換します。CHGDAT 関数は、ALPHA_HIRE の各値の構成要素の表示を YMD から MDYYX に変換し、結果を A17 フォーマットで HIRE_MDY に格納します。出力値のオプション X により、完全な月名が表示されます。
TABLE FILE EMPLOYEE
PRINT HIRE_DATE AND COMPUTE
ALPHA_HIRE/A17 = EDIT(HIRE_DATE); NOPRINT AND COMPUTE
HIRE_MDY/A17 = CHGDAT('YMD', 'MDYYX', ALPHA_HIRE, 'A17');
BY LAST_NAME BY FIRST_NAME
WHERE DEPARTMENT EQ 'PRODUCTION';
END
出力結果は次のとおりです。
LAST_NAME FIRST_NAME HIRE_DATE HIRE_MDY --------- ---------- --------- -------- BANNING JOHN 82/08/01 AUGUST 01 1982 IRVING JOAN 82/01/04 JANUARY 04 1982 MCKNIGHT ROGER 82/02/02 FEBRUARY 02 1982 ROMANS ANTHONY 82/07/01 JULY 01 1982 SMITH RICHARD 82/01/04 JANUARY 04 1982 STEVENS ALFRED 80/06/02 JUNE 02 1980