Módulo 03 — Gerenciamento de Jobs INTERMEDIÁRIO
Monitoramento, controle e agendamento de jobs batch e interativos no AS/400.
3.1 Tipos de Job
| Tipo | Descrição |
|---|---|
*INTERACT | Job interativo — sessão de usuário |
*BATCH | Job em lote, executado em background |
*AUTOSTART | Iniciado automaticamente com o subsistema |
*COMM | Jobs de comunicação |
Todo job é identificado por 3 campos: Nome / Usuário / Número — ex: QPADEV0001 / JOAO / 012345
3.2 Monitoramento
Listar todos os jobs ativos
WRKACTJOB
Opções disponíveis na tela:
| Opção | Ação |
|---|---|
4 | Encerrar job |
5 | Exibir detalhes |
8 | Exibir mensagens do job |
13 | Desconectar job interativo |
14 | Ver call stack (o que está executando) |
Filtrar por usuário ou subsistema
WRKACTJOB USER(JOAO) WRKACTJOB SBS(QBATCH)
Exibir detalhes de job específico
WRKJOB JOB(123456/JOAO/MEUJOB)
3.3 Filas de Jobs
WRKJOBQ /* Listar todas as filas */ WRKJOBQ JOBQ(QBATCH) /* Jobs em fila específica */ HLDJOBQ JOBQ(QBATCH) /* Segurar fila (impede execução) */ RLSJOBQ JOBQ(QBATCH) /* Liberar fila segurada */ CRTJOBQ JOBQ(MINHAFILAJOB) /* Criar fila customizada */
3.4 Controle de Jobs
Segurar e liberar
HLDJOB JOB(123456/JOAO/MEUJOB) /* Pausar job */ RLSJOB JOB(123456/JOAO/MEUJOB) /* Liberar job pausado */
Encerrar job (sempre preferir *CNTRLD)
ENDJOB JOB(123456/JOAO/MEUJOB) OPTION(*CNTRLD) DELAY(30)
⚠ Atenção: Use
OPTION(*IMMED) apenas em último recurso — pode corromper dados em processamento.ENDJOB JOB(123456/JOAO/MEUJOB) OPTION(*IMMED) /* Força encerramento */
3.5 Job Log
DSPJOBLOG /* Log do job atual */ DSPJOBLOG JOB(123456/JOAO/MEUJOB) /* Log de job específico */ DSPJOBLOG OUTPUT(*PRINT) /* Salvar log no spool */
3.6 Submeter Jobs Batch
SBMJOB CMD(DSPLIB LIB(QGPL)) JOBQ(QBATCH) JOB(TESTE001) SBMJOB CMD(CALL PGM(MEUALIB/MEUPGM)) JOB(ROTINA01) JOBQ(QBATCH)
Submeter com agendamento imediato
SBMJOB CMD(CALL PGM(MEUALIB/BACKUP)) SCDDATE(*CURRENT) SCDTIME('23:00:00') JOB(BACKUP_NOITE)
3.7 Agendamento de Jobs
WRKJOBSCDE /* Ver jobs agendados */
ADDJOBSCDE JOB(BACKUP_DIA) CMD(CALL PGM(BKPLIB/BKPPGM)) FRQ(*WEEKLY) SCDDAY(*MON *TUE *WED *THU *FRI) SCDTIME('22:00:00')
CHGJOBSCDE JOB(BACKUP_DIA) SCDTIME('23:30:00') /* Alterar horário */
RMVJOBSCDE JOB(BACKUP_DIA) /* Remover agendamento */
3.8 Diagnóstico
Job em loop (alto CPU%)
WRKACTJOB /* Pressione F10 para ordenar por CPU% */
Ver call stack de um job
WRKJOB JOB(num/usr/nome) /* Opção 14 = Call Stack */
Ver locks de um job
WRKJOB JOB(num/usr/nome) /* Opção 12 = Locks */
Job em MSGW — aguardando resposta de mensagem
WRKJOB JOB(num/usr/nome) /* Opção 10 = Mensagens → responda a mensagem pendente */