Script CLP — Limpeza de Spool
Remove automaticamente arquivos de spool expirados e limpa output queues configuradas. Ideal para execução semanal.
⚠ Atenção: Configure as output queues a limpar conforme o ambiente antes de usar em produção. Verifique quais filas podem ser limpas sem impacto operacional.
Como Usar
/* Criar e compilar */
STRSEU SRCFILE(SCRIPTLIB/QCLSRC) SRCMBR(LIMPSPOOL) TYPE(CLP)
CRTCLPGM PGM(SCRIPTLIB/LIMPSPOOL) SRCFILE(SCRIPTLIB/QCLSRC) SRCMBR(LIMPSPOOL)
/* Executar manualmente */
CALL PGM(SCRIPTLIB/LIMPSPOOL)
/* Agendar todo domingo às 01:00 */
ADDJOBSCDE JOB(LIMPSPOOL) CMD(CALL PGM(SCRIPTLIB/LIMPSPOOL)) FRQ(*WEEKLY) SCDDAY(*SUN) SCDTIME('01:00:00')
Código-fonte CLP
/*===========================================================*/
/* LIMPSPOOL.CLP — Limpeza de Spool */
/* Versão 1.0 — AS/400 Lab */
/*===========================================================*/
PGM
DCL VAR(&DATA) TYPE(*CHAR) LEN(10)
DCL VAR(&HORA) TYPE(*CHAR) LEN(8)
DCL VAR(&MSG) TYPE(*CHAR) LEN(200)
RTVSYSVAL SYSVAL(QDATE) RTNVAR(&DATA)
RTVSYSVAL SYSVAL(QTIME) RTNVAR(&HORA)
/* Início do processo */
CHGVAR VAR(&MSG) VALUE('INICIO LIMPEZA SPOOL - ' *CAT &DATA *CAT ' ' *CAT &HORA)
SNDMSG MSG(&MSG) TOUSR(QSYSOPR) MSGTYPE(*INFO)
/* 1. Remover arquivos de spool expirados */
SNDMSG MSG('Removendo spools expirados...') TOUSR(QSYSOPR) MSGTYPE(*INFO)
DLTEXPSPLF
/* 2. Limpar output queue padrão */
/* Adicione ou remova filas conforme seu ambiente */
SNDMSG MSG('Limpando QPRINT...') TOUSR(QSYSOPR) MSGTYPE(*INFO)
CLROUTQ OUTQ(QPRINT)
/* Conclusão */
RTVSYSVAL SYSVAL(QTIME) RTNVAR(&HORA)
CHGVAR VAR(&MSG) VALUE('FIM LIMPEZA SPOOL - ' *CAT &DATA *CAT ' ' *CAT &HORA)
SNDMSG MSG(&MSG) TOUSR(QSYSOPR) MSGTYPE(*INFO)
ENDPGM
Personalização
Para limpar múltiplas filas, adicione blocos CLROUTQ:
CLROUTQ OUTQ(QPRINT) CLROUTQ OUTQ(MEUALIB/MINHA_OUTQ) CLROUTQ OUTQ(OUTRALIB/OUTRA_OUTQ)
Para excluir spools com mais de 30 dias (sem usar DLTEXPSPLF):
DLTSPLF FILE(*ALL) SELECT(*ALL) SPLFDATETIME(*CURRENT -30 0 0 0)