📌 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
ENTRADAestá apontando pra um dataset já existente. -
O
SAIDAvai 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 deDISP=pra dizer o que fazer com o arquivo.
💡 Dicas
-
Em testes, use
&&TEMPpra evitar criar lixo no catálogo. -
Sempre use
DISP=SHRpra 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.