📌 Explicação
O parâmetro RESTART= permite reiniciar um job a partir de um passo específico, sem executar os passos anteriores. Isso é fundamental em casos de abend ou para reprocessar somente um trecho do job.
🧰 Usos mais comuns
-
Reiniciar um job do ponto onde deu erro, sem repetir todo o processamento.
-
Evitar reprocessamento de etapas já concluídas com sucesso.
-
Testar passo por passo de forma isolada.
🧾 Sintaxe
//NOMEJOB JOB (conta),‘descrição’,
// RESTART=nomedopasso
// ou para reiniciar dentro de um proc:
// RESTART=nomedopasso.procstep
💻 Exemplo prático
//COBOLJOB JOB (1234),'COBOL DICAS',
// RESTART=ETAPA03,CLASS=A,MSGCLASS=X
//*
//ETAPA01 EXEC PGM=PROG1
//ETAPA02 EXEC PGM=PROG2
//ETAPA03 EXEC PGM=PROG3
//ETAPA04 EXEC PGM=PROG4
Se esse job der abend no ETAPA03 e você quiser reiniciar direto nela, é só incluir o RESTART=ETAPA03 na linha do JOB. O sistema vai pular as etapas anteriores e começar a execução a partir da etapa 3.
⚙️ Regras
-
RESTART=só funciona se o spool do job anterior ainda estiver disponível (geralmente no SDSF ou JES2). -
Se o passo reiniciado alimenta outros passos, atenção total com arquivos de entrada/saída.
-
Para reiniciar passo dentro de um
PROC, useRESTART=ETAPA.PROCSTEP.
💡 Dicas
-
Sempre revise os datasets temporários (
DSN=&&TEMP) — eles somem após o job. -
Quando for usar
RESTART=, combine comCOND=pra garantir que os passos seguintes rodem certo. -
Evite
RESTARTem jobs que têm efeitos colaterais fora do mainframe (como envio de arquivos ou atualização de banco externo).
✅ Conclusão
RESTART= é tipo a "segunda chance" do seu JCL. Em vez de começar tudo do zero, você retoma de onde parou e resolve o problema com mais eficiência. Mas cuidado: ele não desfaz o que já rodou — por isso, sempre revise bem antes de reiniciar um job em produção.