日付形式変換 (CVTDAT)
| 実行可能場所: コンパイル済み CL プログラムまたはインタープリットされた REXX (*BPGM *IPGM *BREXX *IREXX) スレッド・セーフ: はい |
パラメーター 例 エラー・メッセージ |
日付形式変換(CVTDAT)コマンドは,日付の値の形式を別の形式に変換します(値自体は変わりません)。このコマンドでは,旧形式の中で使用されている日付区切り記号は無視されますが,変換結果に区切り記号を含める場合には,コマンドで区切り文字を指定することができます。
有効な日付だけを変換することができます。変換前の形式または変換後の形式が年を指定するのに2桁だけを使用する場合(例えば*MDY, *DMY, *YMD,または*JUL)には,有効な日付は1940年1月1日から2039年12月31日までの範囲です。そうでない場合には,有効な日付は1928年8月24日から2071年5月9日の範囲です。年が2桁だけで指定される場合には,40から99の範囲は1940から1999と見なされ,00から39の年は2000から2039と見なされます。このコマンドは,QLEAPADJシステム値と一緒に機能します。
制約事項:このコマンドはCLプログラムまたはILE CLプロシージャー内でのみ有効です。
| 上 |
パラメーター
| キーワード | 記述 | 選択項目 | ノーツ |
|---|---|---|---|
| DATE | 変換される日付 | 文字値 | 必須, 定位置 1 |
| TOVAR | 変換された日付のCL変数 | 文字値 | 必須, 定位置 2 |
| FROMFMT | 開始日付形式 | *SYSVAL, *MDY, *DMY, *YMD, *JUL, *JOB, *MDYY, *DMYY, *YYMD, *CYMD, *ISO, *USA, *EUR, *JIS, *LONGJUL | オプショナル, 定位置 3 |
| TOFMT | 終了日付形式 | *SYSVAL, *MDY, *DMY, *YMD, *JUL, *JOB, *MDYY, *DMYY, *YYMD, *CYMD, *ISO, *USA, *EUR, *JIS, *LONGJUL | オプショナル, 定位置 4 |
| TOSEP | 終了日付区切り文字 | *SYSVAL, *NONE, *JOB, *BLANK, '/', '-', '.', ',' | オプショナル, 定位置 5 |
| 上 |
変換される日付 (DATE)
変換される日付が入っている定数またはCL変数を指定します。区切り文字が入っている定数が指定された時には,それを単一引用符で囲む必要があります(変換では,区切り文字は無視される)。定数で区切り記号を使用する場合には,日付の各部分の先行ゼロを省略することができます(3/3/88または03/03/88は両方とも有効である)。変数が指定される場合には,日付タイプとその日付区切り記号(使用される場合)を入れることができる長さでなければなりません。日付区切り記号として使用できる文字は,スラッシュ(/),ハイフン(-),ピリオド(.),およびコンマ(,)です。すべてブランクを含む変数(X'40')は,長さゼロの日付と見なされ,これは無効です。
これは必須パラメーターです。
| 上 |
変換された日付のCL変数 (TOVAR)
変換後の日付の値を入れるCL変数の名前を指定します。
年間通算日を除くどの形式でも,変換結果の月と日のサブフィールドはそれぞれ2バイトの長さで,右寄せにされ,2バイトのフィールドとするために必要であれば埋め込み文字として先行ゼロが使用されます。
年間通算日および長年間通算日形式の場合には,日フィールドは3バイトの長さで,必要であればゼロが埋め込まれます。年フィールドの長さは年間通算日の場合は2バイトで,長年間通算日の場合は4バイトです。
以下の表を使用して,変数の必要最小長を決定してください。
フィールドのサイズと変数の最小長
TO FMT TO SEP 変数の最小長 ---------------------- ------ ----------------------------- *JUL *NONE 5 *JUL 任意 6 *MDY, *DMY, *YMD *NONE 6 *MDY, *DMY, *YMD 任意 8 *MDYY, *DMYY, *YYMD *NONE 8 *MDYY, *DMYY, *YYMD 任意 10 *CYMD *NONE 7 *CYMD 任意 9 *LONGJUL *NONE 7 *LONGJUL 任意 8 *ISO, *USA, *EUR, *JIS 10 *JOB ジョブの日付形式によって決まります *SYSVAL QDATFMTの値によって決まります
フィールド・サイズ TO FMT 月 日年 ----------------------- ----- --- ---- *JUL N/A 3 2 *MDY, *DMY, *YMD 2 2 2 *MDYY, *DMYY, *YYMD 2 2 4 *ISO, *USA, *EUR, *JIS 2 2 4 *CYMD 2 2 2 (+1バイトの世紀フィールド)
これは必須パラメーターです。
| 上 |
開始日付形式 (FROMFMT)
変換する日付の現在の形式を指定します。
- *JOB
- 日付はジョブ属性DATFMTによって指定された形式となります。
- *SYSVAL
- 日付はシステム値QDATFMTによって指定された形式となります。
- *MDY
- 日付は月日年の形式MMDDYYとなります。
- *MDYY
- 日付は月日年の形式MMDDYYYYとなります。
- *DMY
- 日付は日月年の形式DDMMYYとなります。
- *DMYY
- 日付は日月年の形式DDMMYYYYとなります。
- *YMD
- 日付は年月日の形式YYMMDDとなります。
- *YYMD
- 日付は年月日の形式YYYYMMDDとなります。
- *CYMD
- 日付は世紀,年,月,日の形式CYYMMDDとなります。ここで,Cは1928から1999年の場合は0,2000から2071年の場合は1です。
- *JUL
- 日付は年間通算日形式YYDDDとなります。
- *ISO
- 日付は国際標準化機構(ISO)日付形式YYYY-MM-DDとなります。
- *USA
- 日付は米国日付形式MM/DD/YYYYとなります。
- *EUR
- 日付は欧州日付形式DD.MM.YYYYとなります。
- *JIS
- 日付は日本工業規格日付形式YYYY-MM-DDとなります。
- *LONGJUL
- 日付は長年間通算日形式YYYYDDDです。
| 上 |
終了日付形式 (TOFMT)
変換後の日付の形式を指定します。
- *JOB
- 日付の形式はジョブ属性DATFMTで指定された形式に変換されます。
- *SYSVAL
- 日付形式はシステム値QDATFMTによって指定された形式に変換されます。
- *MDY
- 日付形式は月日年の形式MMDDYYに変換されます。
- *MDYY
- 日付形式は月日年の形式MMDDYYYYに変換されます。
- *DMY
- 日付形式は日月年の形式DDMMYYに変換されます。
- *DMYY
- 日付形式は日月年の形式DDMMYYYYに変換されます。
- *YMD
- 日付形式は年月日の形式YYMMDDに変換されます。
- *YYMD
- 日付形式は年月日の形式YYYYMMDDに変換されます。
- *CYMD
- 日付形式は世紀,年,月,日の形式CYYMMDDに変換されます。Cは1928から1999年の場合は0,2000から2071年の場合は1です。現行形式の年が2桁のみである場合には,Cは40から99の場合は0, 00から39の場合は1にセットされます。
- *JUL
- 日付形式は年間通算日形式YYDDDに変換されます。
- *ISO
- 日付形式は国際標準化機構(ISO)日付形式YYYY-MM-DDに変換されます。
- *USA
- 日付形式は米国日付形式MM/DD/YYYYに変換されます。
- *EUR
- 日付形式は欧州日付形式DD.MM.YYYYに変換されます。
- *JIS
- 日付形式は日本工業規格日付形式YYYY-MM-DDに変換されます。
- *LONGJUL
- 日付は長年間通算日形式YYYYDDDです。
| 上 |
終了日付区切り文字 (TOSEP)
変換日(存在する場合)で使用する日付区切り記号のタイプを指定します。
- *JOB
- 変換後の日付では,ジョブ属性DATSEPによって指定された区切り記号が使用されます。
- *SYSVAL
- 変換後の日付では,システム値QDATSEPによって指定された区切り記号が使用されます。
- *NONE
- 変換後の日付では区切り記号は使用されません。
- *BLANK
- 変換後の日付では,ブランク・スペースが日付区切り記号として使用されます。
- 区切り文字
- 変換後の日付の中で日付区切り記号として使用する文字を指定してください。区切り記号として使用できる文字は,スラッシュ(/),ハイフン(-),ピリオド(.),およびコンマ(,)です。
| 上 |
例
例1: DMY形式への変換
DCL VAR(&DATE) TYPE(*CHAR) LEN(8)
:
CVTDAT DATE('12-24-88') TOVAR(&DATE) TOFMT(*DMY)
このコマンドは日付12-24-88を変換します。この日付はMDY形式です。FROMFMTパラメーターが指定されていないので,その省略時値*JOBによって,ジョブ属性DATFMTがMDY形式を含むことが指示されます。日付はDMY形式に変換され,ジョブ属性DATSEPに指定された区切り文字が挿入されます。DATSEPがスラッシュを含んでいれば,変換結果は24/12/88になります。
例2:ジョブ属性によって指定された形式への変換
DCL &PAYDAY *CHAR 6
DCL &NEWPDAY *CHAR 6
:
CVTDAT DATE(&PAYDAY) TOVAR(&NEWPDAY)
FROMFMT(*YMD) TOSEP(*NONE)
このコマンドは,&PAYDAYに入っている日付の形式を,年,月,日からジョブ属性DATFMTによって指定された形式に変換します。例えば,DATFMTにMDY形式が入っていると,変換された日付の形式は月,日,および年になります。変換された日付は,変数&NEWPDAYに入れられます。&NEWPDAYは6桁の文字変数として宣言されているので,TOSEP(*NONE)が必要であり,変換結果は区切り文字を含むことができません。
例3: CYMD形式への変換
DCL &NEWDAY1 *CHAR 7
DCL &NEWDAY2 *CHAR 7
:
CVTDAT DATE('01/24/1939') TOVAR(&NEWDAY1)
FROMFMT(*MDYY) TOFMT(*CYMD) TOSEP(*NONE)
CVTDAT DATE('01/24/39') TOVAR(&NEWDAY2)
FROMFMT(*MDY) TOFMT(*CYMD) TOSEP(*NONE)
最初のCVTDATコマンドは,DATEパラメーターに指定された日付を,月,日,4桁の年の形式から世紀,年,月,日の形式に変換します。年は4桁で指定されており,最初の2桁は"19"なので,世紀桁は"0"に設定され,したがって"NEWDAY1の値は"0390124"になります。
2番目のCVTDATコマンドは,DATEパラメーターに指定された日付を,月,日,年の形式から世紀,年,月,日の形式に変換します。年は2桁だけで指定されており,年は40より小さいので,世紀桁は"1"に設定され,したがって"NEWDAY2の値は"1390124"になります。
| 上 |
エラー・メッセージ
*ESCAPE メッセージ
- CPF0550
- 指定した形式では日付が短すぎる。
- CPF0551
- 日付の区切り記号が正しくない。
- CPF0552
- 日付に,位置が正しくないかあるいは余分な区切り記号がある。
- CPF0553
- 日付の数字が多すぎるか少なすぎる。
- CPF0554
- 変換した日付形式に指定した変数が短すぎる。
- CPF0555
- 日付が指定形式になっていないか,あるいは日付が正しくない。
- CPF0556
- 日付に2種類以上の区切り記号が入っている。
- CPF0557
- 日付が使用可能な範囲外になっている。
| 上 |