400系統中,有下列三個系統參數值跟年月日,時分秒的表示相關,尤其是年份,跟其他系統中的表示方法不一樣,
[quote:906307d3bf]
QDATE *DATTIM System date
QDATFMT *EDT Date format
QCENTURY *DATTIM Century
[/quote:906307d3bf]
其中,
QDATE表示系統時間 12/03/04 DD/MM/YY (或其他形式,都是六位)
QDATFMT 表示格式 DMY (MDY,YMD等等)
QCENTURY 表示世紀碼,ibm這樣規定
[quote:906307d3bf]0=1928 - 1999
1=2000 - 2053[/quote:906307d3bf]
我也不清楚2053年後怎麼辦?
可是在我們實際應用中,大步份使用的是4位的年份表示方法,TVSYSVAL 指令僅可傳回 2 位數的年(如 97,98),用System API QWCCVTDT可以緩解這個問題,如下:
[code:1:906307d3bf]PGM
DCL &TODAY *DEC (8 0) /* TODAYS-DATE */
DCL &TODAYA *CHAR (8) /* TODAYS-DATE */
DCL &TIME *DEC (6 0) /* CURRENT-TIME */
DCL &TIMEA *CHAR (6) /* CURRENT-TIME */
DCL &NEWDTE17 *CHAR (17) /* STRING CONATAINING DATE &TIME */
/*傳回格式 YYYYMMDDHHMMSSXXX XXX MEANS MINISEC*/
CALL PGM(QWCCVTDT) PARM('*CURRENT ' ' ' +
'*YYMD ' &NEWDTE17 X'00000000')
CHGVAR VAR(&TODAY) VALUE(%SST(&NEWDTE17 1 8)) /*數字年月日 YYYYMMDD */
CHGVAR VAR(&TODAYA) VALUE(%SST(&NEWDTE17 1 8)) /*文字 YYYYMMDD */
CHGVAR VAR(&TIME) VALUE(%SST(&NEWDTE17 9 6)) /*數字時分秒 HHMMSS */
CHGVAR VAR(&TIMEA) VALUE(%SST(&NEWDTE17 9 6)) /*文字 HHMMSS */
SNDPGMMSG MSG(&TODAYA *BCAT &TIMEA) MSGTYPE(*COMP)
ENDPFM[/code:1:906307d3bf]
michael9406 回复于:2004-03-12 20:07:13 |
设为原创精华 |
fzrxh 回复于:2004-03-13 16:29:48 |
用cvtdat会不会各更简单呢
CVTDAT DATE(&DATE) TOVAR(&DATEX) FROMFMT(*JOB) + TOFMT(*YYMD) TOSEP(*NONE) 在把 &DATEX(8位字符)给8位数字 |
andrewleading_he 回复于:2004-03-15 08:59:13 |
[quote:4862ad6280="fzrxh"]用cvtdat会不会各更简单呢
CVTDAT DATE(&DATE) TOVAR(&DATEX) FROMFMT(*JOB) + TOFMT(*YYMD) TOSEP(*NONE) 在把 &DATEX(8位字符)给8位数字[/quote:4862ad6280] 感謝先,我再試一試! |
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/