I've written a CL to retrieve the system date and would like to store the previous day in another variable. How do I subtract x number of days from the QDATE and store it in another variable?
Thanks so much,
Thanks so much,
PGM
DCL VAR(&DATE) TYPE(*CHAR) LEN(6)
DCL VAR(&OUTDATE) TYPE(*CHAR) LEN(6)
DCL VAR(&JULIAN) TYPE(*CHAR) LEN(5)
DCL VAR(&DECJULIAN) TYPE(*DEC) LEN(5)
RTVSYSVAL SYSVAL(QDATE) RTNVAR(&DATE)
CVTDAT DATE(&DATE) TOVAR(&JULIAN) TOFMT(*JUL) +
TOSEP(*NONE)
CHGVAR &DECJULIAN &JULIAN
CHGVAR VAR(&DECJULIAN) VALUE(&DECJULIAN - 1)
CHGVAR &JULIAN &DECJULIAN
CVTDAT DATE(&JULIAN) TOVAR(&OUTDATE) FROMFMT(*JUL) +
TOFMT(*YMD) TOSEP(*NONE)
ENDPGM
PGM PARM(&CURDATE &DAYSTOCHG)
DCL VAR(&CURDATE) TYPE(*CHAR) LEN(8)
DCL VAR(&DAYSTOCHG) TYPE(*DEC) LEN(15 5)
DCL VAR(&DATETIME) TYPE(*CHAR) LEN(17)
DCL VAR(&DATE) TYPE(*CHAR) LEN(8)
DCL VAR(&LILDATEINT) TYPE(*CHAR) LEN(4)
DCL VAR(&LILDATEDEC) TYPE(*DEC) LEN(10 0)
DCL VAR(&ERRCOD) TYPE(*CHAR) LEN(4) +
VALUE(X'00000000')
DCL VAR(&MSG) TYPE(*CHAR) LEN(50)
IF COND(&CURDATE = '*CURRENT') THEN(DO)
CALL PGM(QWCCVTDT) PARM('*CURRENT' ' ' '*YYMD' +
&DATETIME &ERRCOD) /* Get current system +
date and time in YYYYMMDD */
CHGVAR VAR(&DATE) VALUE(%SST(&DATETIME 1 8))
ENDDO
ELSE CMD(CHGVAR VAR(&DATE) VALUE(&CURDATE))
CALLPRC PRC(CEEDAYS) PARM(&DATE 'YYYYMMDD' +
&LILDATEINT *OMIT) /* Get Lilian date for +
current date */
CHGVAR VAR(&LILDATEDEC) VALUE(%BIN(&LILDATEINT)) /* +
Get Lilian date in decimal format */
CHGVAR VAR(&LILDATEDEC) VALUE(&LILDATEDEC + +
&DAYSTOCHG) /* Adjust specified number of +
days */
CHGVAR VAR(%BIN(&LILDATEINT)) VALUE(&LILDATEDEC) /* +
Get Lilian date in integer format */
CALLPRC PRC(CEEDATE) PARM(&LILDATEINT 'YYYYMMDD' +
&DATE *OMIT) /* Return calculated date in +
YYYYMMDD format */
CHGVAR VAR(&MSG) VALUE('The new date is' || &date)
SNDPGMMSG MSG(&MSG) TOPGMQ(*EXT)
ENDPGM
Comment