PDA

View Full Version : REORG einer LIB



linguin
07-08-08, 09:00
Hallo,

ich erstelle über ein CL jede nacht folgende Sicherungen:

BHSAVE/S8080422
BHSAVE/S8080423
BHSAVE/S8080424
.....
BHSAVE/S8080801
BHSAVE/S8080802
BHSAVE/S8080803
BHSAVE/S8080804
...

Jetzt möchte ich in diesem CL alle Dateien löschen die älter als 2 Monate sind.

dh. alle S80806*

Hat jemand nen Tipp für mich wie ich das in einem CL löse ?

Ideal wäre wenn ich mit
RTVJOBA CYMDDATE(&DATUM)
holen könnte und "einfach" 2 Monate abziehen könnte.

Vielen Dank. Christian

kitvb1
07-08-08, 09:55
Haven't had time to build the command wrapper and to check for object locks yet. Will be doing so soon. In the mean time - this should help you ( sorry but the formatting has disappears when pasting).

/************************************************** *****************/
/* System - System Tools */
/* Owner- EcofIT Ltd */
/* AUTHOR - Deon A von Blerk */
/* DATE - 09/07/08 */
/* Description - Delete any work files if */
/* older than 2 months */
/* */
/* Modification History */
/* ==================== */
/* Date No By/Reason */
/* ==== == ========= */
/************************************************** *****************/
PGM
DCLVAR(&WORK1)TYPE(*CHAR)LEN(8)
DCLVAR(&DLTDATE)TYPE(*CHAR)LEN(6)
DCLVAR(&LILIAN)TYPE(*CHAR)LEN(4)
DCLVAR(&WORK1)TYPE(*CHAR)LEN(8)
DCLVAR(&WORK2)TYPE(*CHAR)LEN(23)
DCLVAR(&WDATE)TYPE(*CHAR)LEN(8)
DCLVAR(&SQLS)TYPE(*CHAR)LEN(50)
DCLVAR(&CMD)TYPE(*CHAR)LEN(150)
DCLVAR(&LEN)TYPE(*DEC)LEN(155)VALUE(150)
DCLVAR(&FOUND)TYPE(*LGL)LEN(1)VALUE('0')
DCLFFILE(DACCLEANP)OPNID(A)
DCLFFILE(DACDELETE)OPNID(B)
/* Get local time from system */
CALLPRCPRC(CEELOCT)PARM(&LILIAN&WORK1&WORK2*OMIT)
/* Subtracting 70 from &LILIAN will produce about 2 months ago */
CHGVARVAR(%BIN(&LILIAN))VALUE(%BIN(&LILIAN)-61)
CALLPRCPRC(CEEDATE)PARM(&LILIAN'YYYYMMDD'&WDATE*OMIT)
CHGVARVAR(&DLTDATE)VALUE(%SST(&WDATE36))
/* Get the names of the files to delete */
START:RCVFOPNID(A)
MONMSGMSGID(CPF0000)EXEC(DO)
IFCOND(&FOUND='0')THEN(GOTO CMDLBL(EOJ))
ELSE
GOTOCMDLBL(DELETE)
ENDDO
/* display the relative types */
CHGVARVAR(&CMD)VALUE('DSPFD FILE('*CAT+
&A_LIBANDNME*CAT') TYPE(*MBRLIST) +
OUTPUT(*OUTFILE) OUTFILE(QTEMP/DACDELETE) +
OUTMBR(*FIRST *ADD)')
CALLPGM(QCMDEXC)PARM(&CMD&LEN)
MONMSGMSGID(CPF0000)EXEC(GOTO CMDLBL(START))
CHGVARVAR(&FOUND)VALUE('1')
GOTOCMDLBL(START)
/* Now read the records */
DELETE:RCVFOPNID(B)
MONMSGMSGID(CPF0000)EXEC(GOTO CMDLBL(EOJ))
/* delete if date < limit */
IFCOND(&B_MLCHGD<&DLTDATE*AND&FOUND='1')+
THEN(DO)
CHGVARVAR(&SQLS)VALUE('drop table '*CAT&B_MLFILE)
RUNSQLSQLSTMT(&SQLS)
MONMSGMSGID(CPF0000)EXEC(GOTO CMDLBL(ERROR))
ENDDO
GOTOCMDLBL(DELETE)
ERROR:DMPCLPGM
EOJ:ENDPGM