コマンド

23. CVTDAT 日付形式変換コマンドの利用 (1)

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 )への変換は日数を加算したり減算したりする計算の作業用として利用することができる。