📌 Explicação

O parâmetro DSN= (Data Set Name) serve pra informar o nome do dataset (arquivo) que será usado pelo passo do job. Ele é obrigatório na maioria dos DD statements, pois diz qual arquivo físico será acessado.

🧰 Usos mais comuns

  • Informar o nome de um arquivo existente para leitura.

  • Criar um novo arquivo durante a execução.

  • Apontar para arquivos temporários, de saída ou de trabalho.

🧾 Sintaxe

//DDNAME DD DSN=nome.do.dataset,
//           DISP=...,UNIT=...,SPACE=...,...
  • Pode ser nome catalogado (DSN=ZROBERT.ENTRADA.CLIENTES)

  • Ou nome temporário com dois & (DSN=&&TEMP01)

  • Se omitir DSN=, o dataset será considerado sem nome catalogado (só pra tempo de execução)

💻 Exemplo prático

//ENTRADA  DD DSN=CDICAS.ENTRADA.CLIENTES,
//            DISP=SHR

//SAIDA    DD DSN=CDICAS.SAIDA.RELATORIO,
//            DISP=(NEW,CATLG,DELETE),
//            UNIT=SYSDA,SPACE=(TRK,(10,5)),DCB=(RECFM=FB,LRECL=80)

Nesse exemplo:

  • O ENTRADA está apontando pra um dataset já existente.

  • O SAIDA vai ser criado novo, catalogado se o job terminar bem, ou deletado se falhar.

⚙️ Regras

  • O nome do dataset deve seguir a convenção: até 44 caracteres, com pontos entre os níveis.

  • Datasets temporários (com &&) são válidos só durante o job.

  • Cada DSN= precisa de DISP= pra dizer o que fazer com o arquivo.

💡 Dicas

  • Em testes, use &&TEMP pra evitar criar lixo no catálogo.

  • Sempre use DISP=SHR pra arquivos de somente leitura.

  • Use nomes organizados: ZROBERT.INPUT.CLIENTES, ZROBERT.OUTPUT.REL, etc. Fica mais fácil manter os jobs.

 

✅ Conclusão

DSN= é o endereço onde o programa vai bater pra pegar ou deixar dados. Usar corretamente esse parâmetro é essencial pra qualquer job batch funcionar. JCL sem DSN= certo é tipo carta sem destinatário — não chega em lugar nenhum.