InícioScripts › Limpeza de Spool

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)