CVTDAT
コマンドは日付の形式を変換するコマンドである。
MMDDYY
形式の日付を YYMMDD
形式の日付に変換するだけでなく、日付計算にも
大いに約に立つコマンドであり、納期等の日付の算出も CLP
で行なうことができる。
ここでは最初のステップとして単に日付の形式を変換する使い方について解説しよう。
MDY:053112
(2012年05月31日) を YMD
(年月日) 形式へ変換します。
----------------------------------------------------------------------------------- 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 へ変換しました。
MDY:053112
(2012年05月31日) を YYMD
(年月日) 形式へ変換します。
-------------------------------------------------------------------------------- 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 と表現することができる。
MDY:053112
(2012年05月31日) を日数へ変換します。
----------------------------------------------------------------------------------- 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
)への変換は日数を加算したり減算したりする計算の作業用として利用することができる。