2001-12-31 如何於 CL 中作日期運算?
CL 中並不提供日期運算函式,但可透過 CVTDAT 指令作日期格式轉換,
以下範例將 Job Date 轉換成 Julian number( 4 位年 + 3 位數字(1-366)),
加1,並將之轉換為日期,如果這是今年最後一天,日期無法轉換,請用次年的第一天。
File : QCLSRC
Member : CLDATEC
Type : CLP
PGM
DCL VAR(&TODAY) TYPE(*CHAR) LEN(6)
DCL VAR(&TOMORROW) TYPE(*CHAR) LEN(6)
DCL VAR(&WORKDATE) TYPE(*CHAR) LEN(7)
DCL VAR(&YEAR) TYPE(*DEC) LEN(4)
DCL VAR(&DAY) TYPE(*DEC) LEN(3)
RTVJOBA DATE(&TODAY)
CVTDAT DATE(&TODAY) TOVAR(&WORKDATE) FROMFMT(*JOB) +
TOFMT(*LONGJUL) TOSEP(*NONE)
/* Find tomorrow's date */
CHGVAR &DAY %SST(&WORKDATE 5 3)
CHGVAR &DAY (&DAY + 1)
CHGVAR %SST(&WORKDATE 5 3) &DAY
CVTDAT DATE(&WORKDATE) TOVAR(&TOMORROW) +
FROMFMT(*LONGJUL) TOFMT(*JOB) TOSEP(*NONE)
MONMSG CPF0555 EXEC(DO)
CHGVAR &YEAR %SST(&WORKDATE 1 4)
CHGVAR &YEAR (&YEAR + 1)
CHGVAR %SST(&WORKDATE 1 4) &YEAR
CHGVAR %SST(&WORKDATE 5 3) '001'
CVTDAT DATE(&WORKDATE) TOVAR(&TOMORROW) +
FROMFMT(*LONGJUL) TOFMT(*JOB) TOSEP(*NONE)
ENDDO
/* Tomorrow's date is now in &TOMORROW */
ENDPGM
A blog about IBM i (AS/400), MQ and other things developers or Admins need to know.
星期三, 11月 01, 2023
2001-12-31 如何於 CL 中作日期運算?
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言