📌 Explicação
O parâmetro DCB= (Data Control Block) define as características físicas do dataset: tipo de registro, tamanho do registro, tamanho do bloco, codificação, etc.
É obrigatório quando o dataset é novo (DISP=NEW) e não tem um modelo de referência (como LIKE=).
🧰 Usos mais comuns
-
Criar datasets com formatação padrão (FB, VB, etc.)
-
Definir o tamanho dos registros (LRECL) e blocos (BLKSIZE)
-
Garantir compatibilidade com programas que leem/gravam o arquivo
🧾 Sintaxe
//DDNAME DD DSN=nome.do.dataset,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,
// SPACE=(TRK,(10,5)),
// DCB=(RECFM=xx,LRECL=nnn,BLKSIZE=nnnn)
Principais parâmetros do DCB:
-
RECFM=→ formato do registro:-
FB: Fixo, bloqueado -
F: Fixo, não bloqueado -
VB: Variável, bloqueado -
V: Variável, não bloqueado
-
-
LRECL=→ comprimento lógico do registro (ex: 80, 133, 255) -
BLKSIZE=→ tamanho do bloco (pode deixar o sistema calcular)
💻 Exemplo prático
//SAIDA DD DSN=CDICAS.SAIDA.RELATORIO,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,
// SPACE=(CYL,(2,1)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
Aqui você está criando um arquivo com:
-
Registros fixos
-
Cada registro com 80 posições
-
Cada bloco com 10 registros (80×10 = 800)
⚙️ Regras
-
DCBé obrigatório pra datasets novos que não usamLIKE=. -
O
RECFMdefine se o programa vai ler os dados com estrutura fixa ou variável. -
BLKSIZEafeta a performance de leitura/escrita — muito pequeno = desperdício, muito grande = risco de erro.
💡 Dicas
-
Para arquivos simples de texto:
RECFM=FB,LRECL=80já resolve. -
Se não sabe o
BLKSIZE, pode omitir e deixar o sistema calcular. -
Prefira padronizar o
DCBnos jobs pra facilitar manutenção.
✅ Conclusão
DCB= é como a planta baixa do dataset. Diz como ele será construído no nível mais baixo — registro por registro. Usar bem o DCB evita erro de leitura, abend de compatibilidade e até perda de dados. Quem domina isso, mostra que manja de JCL na veia.