某些用户需要在 OS/400 系统中创建临时文件用于显示或缓存某些数据,这个文件使用一段时间之后就会被废弃,如果忘记清除,会占用系统的存储资源。下面介绍用 CLP 程序实现在某段时间之后自动清除临时文件的方法。
PGM
/*-------------------------------------------------------------------*/
/* DELETE BUFFER FILE AFTER 1 MINUTES */
/* CONTROL LANGUAGE PROGRAM */
/* */
/* CREATED BY XIAO QING ,2021/12 */
/*-------------------------------------------------------------------*/
/* DEFINE VARIABLE NAME FOR PYHSICAL FILE */
DCL VAR(&PF) TYPE(*CHAR) LEN(128)
/* DEFINE VARIABLE NAME RELATE 1 MINUTES */
DCL VAR(&DATETIME) TYPE(*CHAR) LEN(20)
DCL VAR(&DATE) TYPE(*CHAR) LEN(6)
DCL VAR(&TIME) TYPE(*CHAR) LEN(6)
DCL VAR(&HOUR) TYPE(*DEC) LEN(2 0)
DCL VAR(&HOURC) TYPE(*CHAR) LEN(2)
DCL VAR(&MINUTE) TYPE(*DEC) LEN(2 0)
DCL VAR(&MINUTEC) TYPE(*CHAR) LEN(2)
DCL VAR(&SECOND) TYPE(*DEC) LEN(2 0)
DCL VAR(&SECONDC) TYPE(*CHAR) LEN(2)
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))
ADDLIBLE LIB(XQLIB)
MONMSG MSGID(CPF2103)
/* RETRIVE SYSTEM TIME */
RTVJOBA DATETIME(&DATETIME)
/* ENTER THE PYHSICAL FILE NAME */
CHGVAR VAR(&PF) VALUE('BUFFILE1')
CHKOBJ OBJ(&PF) OBJTYPE(*FILE) MBR(*FIRST)
MONMSG MSGID(CPF9801) EXEC(GOTO CMDLBL(FND))
/* DELETE FILE NAME AFTER 1 MINUTES*/
RTVSYSVAL SYSVAL(QDATE) RTNVAR(&DATE)
RTVSYSVAL SYSVAL(QTIME) RTNVAR(&TIME)
CHGVAR VAR(&HOUR) VALUE(%SST(&TIME 1 2))
CHGVAR VAR(&MINUTE) VALUE(%SST(&TIME 3 2))
CHGVAR VAR(&SECOND) VALUE(%SST(&TIME 5 2))
CHGVAR VAR(&MINUTE) VALUE(&MINUTE + 1)
IF COND(&MINUTE >= 60) THEN(DO)
CHGVAR VAR(&HOUR) VALUE(&HOUR + 1)
CHGVAR VAR(&MINUTE) VALUE(1)
ENDDO
CHGVAR VAR(&HOURC) VALUE(&HOUR)
CHGVAR VAR(&MINUTEC) VALUE(&MINUTE)
CHGVAR VAR(&SECONDC) VALUE(&SECOND)
CHGVAR VAR(&TIME) VALUE(&HOURC *CAT &MINUTEC *CAT +
&SECONDC)
/* SUBMIT A BATCH JOB TO DELETE PYHSICAL FILE */
SBMJOB CMD(DLTF FILE(XQLIB/&PF)) JOB(DLTFILE) +
SCDDATE(&DATE) SCDTIME(&TIME) MSGQ(*NONE)
DLYJOB DLY(90)
CHKOBJ OBJ(&PF) OBJTYPE(*FILE) MBR(*FIRST)
MONMSG MSGID(CPF9801) EXEC(GOTO CMDLBL(END))
ERROR:
SNDPGMMSG MSG('THERE ARE SOME ERROR, CHECK THE PROGRAM')
END:
SNDPGMMSG MSGID(XQL0001) MSGF(XQLIB/XQMSGF) MSGDTA(&PF)
FND:
SNDPGMMSG MSGID(XQL0002) MSGF(XQLIB/XQMSGF) MSGDTA(&PF)
ENDPGM
然后验证一下这个程序:
仅供参考。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞3
添加新评论0 条评论