可以删除一个lib下所有文件的cl程序

发表于:2007-05-26来源:作者:点击数: 标签:
最近在做报表查询程序。每次查询结果都生成临时文件在一个lib下。 程序中没控制查询完毕清除临时文件。所以想办法做了个cl程序加入作业调度里凌晨清除文件。 程序: PGM /*endpf 这个文件事先CRTPF,我指定长度300就可以了 */ DCLF FILE(SBGL/ENDPF) DCL VAR

最近在做报表查询程序。每次查询结果都生成临时文件在一个lib下。

程序中没控制查询完毕清除临时文件。所以想办法做了个cl程序加入作业调度里凌晨清除文件。

程序:

PGM

/*endpf 这个文件事先CRTPF,我指定长度300就可以了 */

DCLF FILE(SBGL/ENDPF)

DCL VAR(&PFNAME) TYPE(*CHAR) LEN(10)

DCL VAR(&LEIXIN) TYPE(*CHAR) LEN(4)

DCL VAR(&SHUXIN) TYPE(*CHAR) LEN(2)

/*这里dsplib cl 命令 参数 output(*print) 生成spool file */

DSPLIB LIB(TEMPPF) OUTPUT(*PRINT)

/*先清除一下储存spool file信息的pf */

CLRPFM FILE(ENDPF)

/* 将DSPLIB LIB(TEMPPF) 生成的信息,也就是参数output(*)时在屏幕上显示的信息 cpy到endpf中*/

CPYSPLF FILE(QPDSPLIB) TOFILE(SBGL/ENDPF) +

CRTDATE(*LAST)

/*循环读取 */

BEGIN: RCVF RCDFMT(ENDPF)

MONMSG MSGID(CPF0864) EXEC(GOTO CMDLBL(END))

/*将每行信息存到本地数据区中 */

CHGDTAARA DTAARA(*LDA) VALUE(&ENDPF)

/*截取数据区相应的部分 ,这再不同应用中位置肯定不一样的。。。。,所以,确定位置时,debug一下,在上一步结束时,dspdtaara,然后。。。。。。。数吧*/

/*想获取的信息定义好。。。。。 */

RTVDTAARA DTAARA(*LDA (5 10)) RTNVAR(&PFNAME)

RTVDTAARA DTAARA(*LDA (18 4)) RTNVAR(&LEIXIN)

RTVDTAARA DTAARA(*LDA (27 2)) RTNVAR(&SHUXIN)

/*如果类型是 *file ......... */

IF COND(&LEIXIN = 'FILE') THEN(DO)

DLTF FILE(TEMPPF/&PFNAME)

ENDDO

GOTO CMDLBL(BEGIN)

END: ENDPGM

看到以前的帖子 :

http://bbs.chinaunix.net/viewthr ... F9%D3%D0&page=1

感觉这种将各种cl 命令得到的结果"导"出来,再。。。很实用的。应该改改程序就可以实现其它效果的。

创建物理文件 (CRTPF)

入选择,并按“执行”键。

件 . . . . . . . . . . . . . FILE

库 . . . . . . . . . . . . . *CURLIB

文件 . . . . . . . . . . . . SRCFILE QDDSSRC

库 . . . . . . . . . . . . . *LIBL

成员 . . . . . . . . . . . . SRCMBR *FILE

录长度,如果没有 DDS . . . . RCDLEN 300 /*CRTPF ENDPF */

成严重性级别 . . . . . . . . GENLVL 20

记严重性级别 . . . . . . . . FLAG 0

件类型 . . . . . . . . . . . FILETYPE *DATA

员(如果需要的话) . . . . . MBR *FILE

户指定的 DBCS 数据 . . . . . IGCDTA *NO

本描述 . . . . . . . . . . . TEXT *SRCMBRTXT

原文转自:http://www.ltesting.net