得到4位表示 年份 的新方法?
发表于:2007-05-26来源:作者:点击数:
标签:
400系統中,有下列三個系統參數值跟年月日,時分秒的表示相關,尤其是年份,跟其他系統中的表示方法不一樣, [quote:906307d3bf] QDATE*DATTIMSystemdate QDATFMT*EDTDateformat QCENTURY*DATTIMCentury [/quote:906307d3bf] 其中, QDATE表示系統時間12/03/
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 QW
CCVTDT可以緩解這個問題,如下:
[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]
感謝先,我再試一試!
|
原文转自:http://www.ltesting.net
|