1. IEBGENER — cópia simples
O uso mais comum do IEBGENER é copiar um dataset sequencial (PS) para outro. Com SYSIN DD DUMMY, ele faz uma cópia byte a byte sem nenhuma transformação.
💡 DCB na SYSUT2
Quando o dataset de saída é novo, o IEBGENER herda o DCB (RECFM, LRECL, BLKSIZE) do dataset de entrada automaticamente. Você só precisa especificar o DCB na SYSUT2 se quiser modificar algum atributo ou se o dataset de entrada não tiver DCB definido no catálogo.
2. IEBGENER — criando dataset a partir de dados inline
O IEBGENER pode criar um dataset a partir de dados embutidos no próprio JCL, usando SYSUT1 DD *. É útil para criar arquivos de teste ou de configuração:
3. IEBGENER com SYSIN — reformatando registros
Com instruções no SYSIN, o IEBGENER pode reformatar os registros durante a cópia — selecionar campos específicos, reordenar colunas ou mudar o LRECL de saída. As instruções são GENERATE, RECORD e FIELD:
Sintaxe do FIELD: FIELD=(comprimento, posição-entrada, conversão, posição-saída). A conversão é opcional — use PZ para packed→zoned, ZP para zoned→packed.
🦕 Analogia — IEBGENER como um SELECT do SQL
Com SYSIN, o IEBGENER funciona como um SELECT col1, col3 FROM tabela — você escolhe quais colunas (campos) extrair e em qual ordem montá-las no registro de saída. É uma transformação simples, sem filtros por valor. Para filtros, o DFSORT é mais adequado.
4. IEBCOPY — copiando membros PDS
O IEBCOPY trabalha com PDS (Partitioned Datasets). Para copiar todos os membros de uma biblioteca para outra, use as instruções COPY INDD= e OUTDD= no SYSIN:
💡 Nomes de DD no IEBCOPY
No IEBCOPY você nomeia os DDs como quiser (PDSENT, PDSSAI, FONTE, DESTINO...) e referencia esses nomes nas instruções SYSIN com INDD= e OUTDD=. Diferente do IEBGENER, não há a convenção SYSUT1/SYSUT2 — você tem total liberdade nos nomes.
5. IEBCOPY — selecionando e excluindo membros
Para copiar apenas alguns membros, use SELECT MEMBER=. Para copiar tudo exceto alguns, use EXCLUDE MEMBER=:
No SELECT, o formato de cada membro é (nome, novo-nome, R). O novo-nome é opcional — se omitido, mantém o mesmo nome. O R indica replace: sobrescreve o membro se já existir no destino.
Mesclando múltiplos PDS
O IEBCOPY aceita múltiplos DDs de entrada, mesclando todos no destino:
6. IEBCOPY — compressão in-place
Um PDS fragmenta seu espaço interno com o tempo — cada vez que um membro é atualizado, a versão antiga fica ocupando espaço inutilizável. A compressão reorganiza o PDS e recupera esse espaço. Sem a compressão periódica, o PDS fica sem espaço no diretório e novos membros não podem ser adicionados.
⚠️ Compressão requer acesso exclusivo
Para comprimir um PDS, o IEBCOPY precisa de acesso exclusivo — nenhum outro job ou usuário pode estar com o dataset aberto. Se houver acesso simultâneo, o step falha com RC=8. Em ambientes de produção, a compressão costuma ser feita em janelas de manutenção ou via ISPF (opção 3.1, comando COMPRESS).
✅ PDSE não precisa de compressão
Datasets do tipo PDSE (Partitioned Dataset Extended) gerenciam o espaço interno automaticamente — nunca fragmentam e não precisam de compressão. Se você tem a opção de usar PDSE em vez de PDS, prefira PDSE e economize esse trabalho de manutenção.