最近在做報表查詢程序。每次查詢結果都生成臨時文件在一個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
記嚴重性級別 . . . . . . . . FLAG 0
件類型 . . . . . . . . . . . FILETYPE *DATA
員(如果需要的話) . . . . . MBR *FILE
戶指定的 DBCS 數據 . . . . . IGCDTA *NO
本描述 . . . . . . . . . . . TEXT *SRCMBRTXT