📌 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
RESTART
em 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.