📌 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, use RESTART=ETAPA.PROCSTEP.

💡 Dicas

  • Sempre revise os datasets temporários (DSN=&&TEMP) — eles somem após o job.

  • Quando for usar RESTART=, combine com COND= 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.