| Bellacosa Mainframe JCL e seus datasets |
JCL: Gerenciamento de Datasets de Saída no Mainframe
Se você já passou algum tempo no mainframe, sabe que o JCL (Job Control Language) é a espinha dorsal da execução de programas e da manipulação de dados. Uma das tarefas mais comuns é criar e controlar datasets de saída. Mas, se você não prestar atenção aos detalhes de DISP, UNIT, VOL e PATHOPTS, seu job pode falhar ou produzir resultados inesperados. Vamos destrinchar o assunto, passo a passo, no estilo Bellacosa Mainframe.
1️⃣ Nomeando e Criando Datasets
Datasets Permanentes
Para criar datasets permanentes em DASD (disco) ou fitas, usamos o parâmetro DSN para indicar o nome:
-
Qualificado:
PROD.DAILY.RLSREP→ inclui HLQ (High-Level Qualifier). -
Não qualificado:
MYDATA→ nome simples de 1 a 8 caracteres. -
Geração (GDS):
PROD.DAILY.RLSREP(+1)→ cria uma nova geração sem sobrescrever a anterior.
Datasets Temporários
-
Começam com
&&, ex.:&&TEMP1 -
São criados automaticamente pelo sistema se nenhum DSN for informado.
-
Podem ser passados para outros steps usando
DISP=(NEW,PASS).
2️⃣ Disposição do Dataset (DISP)
O parâmetro DISP controla o status e destino do dataset, e é crucial para evitar sobrescrita indesejada.
| Tipo de dataset | Exemplo DISP | Significado |
|---|---|---|
| Novo dataset | DISP=(NEW,CATLG,DELETE) | Cria o dataset; mantém se sucesso; deleta se falha |
| Dataset existente | DISP=(OLD,KEEP,KEEP) | Abre exclusivo; mantém independentemente do resultado |
| Acrescentando dados | DISP=(MOD,KEEP,KEEP) | Acrescenta no final do dataset existente |
| Ignorado | DISP=DUMMY ou DSN=NULLFILE | Para steps que não precisam de saída real |
⚠️ Atenção:
+0não cria dataset novo;+1sim. E nunca confundaOLDcomMOD— o primeiro sobrescreve, o segundo acrescenta.
3️⃣ Definindo o Local de Armazenamento (UNIT e VOL)
UNIT
Define o tipo de dispositivo ou grupo:
-
SYSDA→ disco genérico -
3390→ dispositivo específico -
TAPEouCART→ fitas
Se você não especificar, o sistema pode usar defaults definidos pelo administrador.
VOL
Define o volume específico:
-
VOL=SER=T44489→ fita específica -
Permite referback em steps subsequentes
-
Se o volume não estiver disponível, o operador recebe uma mensagem solicitando ação
Exemplo de dataset em fita específica:
4️⃣ Parâmetros de z/OS UNIX Files
Para arquivos UNIX no z/OS, usamos:
| Parâmetro | Função |
|---|---|
PATH | Caminho completo do arquivo |
PATHOPTS | Tipo de acesso (read/write, exclusivo, criar) |
PATHMODE | Permissões (leitura, escrita, execução para user/group/other) |
PATHDISP | Ação após execução (KEEP, DELETE) |
Exemplo:
5️⃣ Erros Comuns e Como Evitar
| Erro | Causa | Solução |
|---|---|---|
| IEF210I – Incorrect UNIT | UNIT inválido (DISK em vez de SYSDA) | Usar unidade válida: SYSDA |
| IEF253I – Duplicate Name on Volume | Tentativa de criar dataset que já existe no volume | Use outro nome ou +1 para nova geração |
| VOL não disponível | Volume específico não presente | Operador recebe mensagem; deve escolher ação |
| DISP incompleto | Esquecer subparâmetros | Sempre usar os 3 subparâmetros: (NEW,CATLG,DELETE) |
6️⃣ Exemplo de Criação de Dataset
Dataset em disco genérico 3390
Dataset em fita específica para envio offsite
Resumo Final
-
DSN → nome do dataset
-
DISP → controla status e destino (NEW, OLD, MOD, KEEP, DELETE)
-
UNIT → define dispositivo ou grupo
-
VOL → fita ou volume específico
-
SPACE/DCB → quantidade de espaço e atributos de formato
-
z/OS UNIX → use PATH, PATHOPTS, PATHMODE, PATHDISP
Seguindo essas práticas, você garante que seus jobs criem datasets corretamente, evitem sobrescrita acidental, respeitem volumes específicos e funcionem tanto em discos quanto fitas.
💡 Dica Bellacosa:
Sempre revise DISP, UNIT e VOL antes de submeter o job. Uma simples confusão entre OLD, MOD e NEW ou entre SYSDA e 3390 pode gerar horas de troubleshooting.
Sem comentários:
Enviar um comentário