如何將 DTS 格式的時間 與 格式為 YYYYMMDD HHMISS sss 時間互為轉換?(MI MATTOD and Convert Date and Time Format QWCCVTDT API )
系統時間 DTS 格式常出現在 Journal 或 系統函數中,有時就有需要將 DTS 格式轉換為可讀取格式,
指令 CVSDTS(Convert DTS to Date/Time),CVTTODTS((Convert Date/Time DTS) 如下:
File : QCLSRC
Member: CVTDTS
Type : CLP
Usage : CRTCLPGM CVTDTS
/* =============================================================== */
/* = Command CVTDTS CPP = */
/* = Program....... CvtDts = */
/* = Description... Convert DTS to Date/Time = */
/* =============================================================== */
/* = Date : 2011/07/28 = */
/* = Author: Vengoal Chang = */
/* =============================================================== */
Pgm ( &Dts +
&RtnDate +
&RtnTime +
&RtnMillsec +
)
/*-- Parameters: ---------------------------------------------------*/
Dcl &Dts *Char 8
Dcl &RtnDate *Char 8
Dcl &RtnTime *Char 6
Dcl &RtnMillSec *Char 3
Dcl &OutDatTim *Char 20
/*-- Global error monitoring: --------------------------------------*/
MonMsg MCH3601
MonMsg CPF0000 *N GoTo Error
Call QWCCVTDT ( '*DTS' +
&Dts +
'*YYMD' +
&OutDatTim +
x'00000000' +
)
ChgVar &RtnDate %SST(&OutDatTim 1 8)
ChgVar &RtnTime %SST(&OutDatTim 9 6)
ChgVar &RtnMillSec %SST(&OutDatTim 15 3)
Return:
Return
/*-- Error processor ------------------------------------------------*/
Error:
Call QMHMOVPM ( ' ' +
'*DIAG' +
x'00000001' +
'*PGMBDY ' +
x'00000001' +
x'0000000800000000' +
)
Call QMHRSNEM ( ' ' +
x'0000000800000000' +
)
EndPgm:
EndPgm
File : QCLSRC
Member: CVTTODTS
Type : CLP
Usage : CRTCLPGM CVTTODTS
/* =============================================================== */
/* = Command CVTTODTS CPP = */
/* = Program....... CvtToDts = */
/* = Description... Convert Date/Time to DTS = */
/* =============================================================== */
/* = Date : 2011/07/28 = */
/* = Author: Vengoal Chang = */
/* =============================================================== */
Pgm ( &Date +
&Time +
&Millsec +
&RtnDts +
)
/*-- Parameters: ---------------------------------------------------*/
Dcl &Date *Char 8
Dcl &Time *Char 6
Dcl &MillSec *Char 3
Dcl &RtnDts *Char 8
Dcl &InpDatTim *Char 20
/*-- Global error monitoring: --------------------------------------*/
MonMsg CPF0000 *N GoTo Error
ChgVar %SST(&InpDatTim 1 8) &Date
ChgVar %SST(&InpDatTim 9 6) &Time
ChgVar %SST(&InpDatTim 15 3) &MillSec
ChgVar %SST(&InpDatTim 18 3) '000'
Call QWCCVTDT ( '*YYMD' +
&InpDatTim +
'*DTS' +
&RtnDts +
x'00000000' +
)
Return:
Return
/*-- Error processor ------------------------------------------------*/
Error:
Call QMHMOVPM ( ' ' +
'*DIAG' +
x'00000001' +
'*PGMBDY ' +
x'00000001' +
x'0000000800000000' +
)
Call QMHRSNEM ( ' ' +
x'0000000800000000' +
)
EndPgm:
EndPgm
File : QCMDSRC
Member: CVTDTS
Type : CMD
Usage : CRTCMD CMD(CVTDTS) PGM(CVTDTS) ALLOW(*IPGM *BPGM)
/* =============================================================== */
/* = Command....... CVTDTS = */
/* = CPP........... CVTDTS CLP = */
/* = Description... Convert DTS to date/time = */
/* = = */
/* = Compile options: = */
/* = = */
/* = CrtCmd Cmd( CVTDTS ) = */
/* = Pgm( CVTDTS ) = */
/* = SrcMbr( CVTDTS ) = */
/* = Allow( = */
/* = *IREXX = */
/* = *BREXX = */
/* = *BPGM = */
/* = *IPGM = */
/* = ) = */
/* =============================================================== */
/* = Date : 2011/07/14 = */
/* = Author: Vengoal Chang = */
/* =============================================================== */
Cmd Prompt( 'Convert DTS to Date/Time' )
Parm DTS *Char 8 +
Min( 1 ) +
Expr( *YES ) +
Prompt( 'DTS' )
Parm RTNDATE *Char 8 +
RTNVAL(*YES) +
Prompt( 'Return date format YYYYMMDD(8)')
Parm RTNTIME *Char 6 +
RTNVAL(*YES) +
Prompt( 'Return time format HHMMSS (6)')
Parm RTNMILLSEC *Char 3 +
RTNVAL(*YES) +
Prompt( 'Return millsec format sss (3)')
File : QCMDSRC
Member: CVTTODTS
Type : CMD
Usage : CRTCMD CMD(CVTTODTS) PGM(CVTTODTS) ALLOW(*IPGM *BPGM)
/* =============================================================== */
/* = Command....... CVTTODTS = */
/* = CPP........... CVTTODTS CLP = */
/* = Description... Convert date/time to DTS = */
/* = = */
/* = Compile options: = */
/* = = */
/* = CrtCmd Cmd( CVTTODTS ) = */
/* = Pgm( CVTTODTS ) = */
/* = SrcMbr( CVTTODTS ) = */
/* = Allow( = */
/* = *IREXX = */
/* = *BREXX = */
/* = *BPGM = */
/* = *IPGM = */
/* = ) = */
/* =============================================================== */
/* = Date : 2011/07/14 = */
/* = Author: Vengoal Chang = */
/* =============================================================== */
Cmd Prompt( 'Convert Date/time to DTS' )
Parm DATE *Char 8 +
Min( 1 ) +
Expr( *YES ) +
Prompt( 'The date format YYYYMMDD')
Parm TIME *Char 6 +
Min( 1 ) +
Expr( *YES ) +
Prompt( 'The time format HHMMSS')
Parm MILLSEC *Char 3 +
Dft( 000 ) +
Range('000' '999') +
Expr( *YES ) +
Prompt( 'The millsec format sss')
Parm DTS *Char 8 +
RTNVAL(*YES) +
Prompt( 'CL var for DTS (8)')
File : QCLSRC
Member: CVTDTST
Type : CCL
Usage : CRTCLPGM CVTDTST
CALL CVTDTST
PGM
/*-- Parameters: ---------------------------------------------------*/
Dcl &Dts *Char 8
Dcl &Dts2 *Char 8
Dcl &RtnDate *Char 8
Dcl &RtnTime *Char 6
Dcl &RtnMillSec *Char 3
Dcl &RtnDate2 *Char 8
Dcl &RtnTime2 *Char 6
Dcl &RtnMillSe2 *Char 3
Dcl &RtnDts *Char 8
Dcl &RtnDts2 *Char 8
callprc 'mattod' parm(&DTS)
CVTDTS DTS(&DTS) RTNDATE(&RTNDATE) +
RTNTIME(&RTNTIME) RTNMILLSEC(&RTNMILLSEC)
CVTTODTS DATE(&RTNDATE) TIME(&RTNTIME) +
MILLSEC(&RTNMILLSEC) DTS(&RTNDTS)
CVTDTS DTS(&RTNDTS) RTNDATE(&RTNDATE2) +
RTNTIME(&RTNTIME2) RTNMILLSEC(&RTNMILLSE2)
CVTTODTS DATE(&RTNDATE2) TIME(&RTNTIME2) +
MILLSEC(&RTNMILLSE2) DTS(&RTNDTS2)
DMPCLPGM
DSPSPLF FILE(QPPGMDMP) SPLNBR(*LAST)
ENDPGM
Convert Date and Time Format (QWCCVTDT) API
A blog about IBM i (AS/400), MQ and other things developers or Admins need to know.
星期三, 11月 08, 2023
2011-08-12 如何將 DTS 格式的時間 與 格式為 YYYYMMDD HHMISS sss 時間互為轉換?(MI MATTOD and Convert Date and Time Format QWCCVTDT API )
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言