CVTDAT コマンドは日付の形式を変換するコマンドである。
MMDDYY 形式の日付を YYMMDD 形式の日付に変換するだけでなく、日付計算にも
大いに約に立つコマンドであり、納期等の日付の算出も CLP で行なうことができる。
ここでは最初のステップとして単に日付の形式を変換する使い方について解説しよう。
1. 日付の形式を変換する
MDY:053112 (2012年05月31日) を YMD (年月日) 形式へ変換します。
【サンプル: TESTDCVT1】
----------------------------------------------------------------------------------- 0001.00 PGM 0002.00 /*---------------------------------------------------------*/ 0003.00 /* TESTDCVT1 : 日付の変換テスト 1: */ 0004.00 /* MDY から YMD へ変換する */ 0005.00 /*---------------------------------------------------------*/ 0006.00 DCL VAR(&DATE6) TYPE(*CHAR) LEN(6) 0007.00 DCL VAR(&TODATE6) TYPE(*CHAR) LEN(6) 0008.00 0009.00 CHGVAR VAR(&DATE6) VALUE('053112') /* + 0010.00 2012 年 05 月 31 日 */ 0011.00 CVTDAT DATE(&DATE6) TOVAR(&TODATE6) FROMFMT(*MDY) + 0012.00 TOFMT(*YMD) TOSEP(*NONE) 0013.00 SNDPGMMSG MSG(&DATE6 *CAT ' から ' *CAT &TODATE6 + 0014.00 *TCAT ' へ変換しました。 ') MSGTYPE(*DIAG) 0015.00 ENDPGM -----------------------------------------------------------------------------------
【実行】
> CALL TESTDCVT1 053112 から 120531 へ変換しました。
2. 西暦を含む8桁表現に変換する
MDY:053112 (2012年05月31日) を YYMD (年月日) 形式へ変換します。
【サンプル: TESTDCVT2】
-------------------------------------------------------------------------------- 0001.00 PGM 0002.00 /*---------------------------------------------------------*/ 0003.00 /* TESTDCVT2 : 日付の変換テスト 2: */ 0004.00 /* MDY から YYMD へ変換する */ 0005.00 /*---------------------------------------------------------*/ 0006.00 DCL VAR(&DATE6) TYPE(*CHAR) LEN(6) 0007.00 DCL VAR(&TODATE8) TYPE(*CHAR) LEN(8) 0008.00 0009.00 CHGVAR VAR(&DATE6) VALUE('053112') /* + 0010.00 2012 年 05 月 31 日 */ 0011.00 CVTDAT DATE(&DATE6) TOVAR(&TODATE8) FROMFMT(*MDY) + 0012.00 TOFMT(*YYMD) TOSEP(*NONE) 0013.00 SNDPGMMSG MSG(&DATE6 *CAT ' から ' *CAT &TODATE8 + 0014.00 *TCAT ' へ変換しました。 ') MSGTYPE(*DIAG) 0015.00 ENDPGM --------------------------------------------------------------------------------
【実行】
> CALL TESTDCVT2 053112 から 20120531 へ変換しました。
【解説】
*YYMD へ変換を指定すると4桁の西暦として 2012 と表現することができる。
3. 日数に変換する
MDY:053112 (2012年05月31日) を日数へ変換します。
【サンプル: TESTDCVT3】
----------------------------------------------------------------------------------- 0001.00 PGM 0002.00 /*---------------------------------------------------------*/ 0003.00 /* TESTDCVT3 : 日付の変換テスト 3: */ 0004.00 /* MDY から日数へ変換する */ 0005.00 /*---------------------------------------------------------*/ 0006.00 DCL VAR(&DATE6) TYPE(*CHAR) LEN(6) 0007.00 DCL VAR(&TODATE8) TYPE(*CHAR) LEN(8) 0008.00 0009.00 CHGVAR VAR(&DATE6) VALUE('053112') /* + 0010.00 2012 年 05 月 31 日 */ 0011.00 CVTDAT DATE(&DATE6) TOVAR(&TODATE8) FROMFMT(*MDY) + 0012.00 TOFMT(*JUL) TOSEP(*NONE) 0013.00 SNDPGMMSG MSG(&DATE6 *CAT ' から ' *CAT &TODATE8 + 0014.00 *TCAT ' へ変換しました。 ') MSGTYPE(*DIAG) 0015.00 ENDPGM -----------------------------------------------------------------------------------
【実行】
> CALL TESTDCVT3 053112 から 12152 へ変換しました。
【解説】
日数( *JUL )への変換は日数を加算したり減算したりする計算の作業用として利用することができる。