📌 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
RECFM
define se o programa vai ler os dados com estrutura fixa ou variável. -
BLKSIZE
afeta a performance de leitura/escrita — muito pequeno = desperdício, muito grande = risco de erro.
💡 Dicas
-
Para arquivos simples de texto:
RECFM=FB,LRECL=80
já resolve. -
Se não sabe o
BLKSIZE
, pode omitir e deixar o sistema calcular. -
Prefira padronizar o
DCB
nos 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.