📌 Explicação

O IEBCOPY serve pra:

  • Copiar membros de uma biblioteca (PDS) para outra

  • Compactar bibliotecas (eliminando espaço desperdiçado)

  • Fazer backups de bibliotecas inteiras ou membros específicos

  • Migrar conteúdo entre bibliotecas de testes, produção, compilação etc.

🧰 Usos mais comuns

  • Backup de PDS antes de deploy

  • Cópia de programas fonte ou objetos de uma lib pra outra

  • Reorganizar bibliotecas que estão com muito espaço "morto"

  • Duplicar conjuntos de membros para alterações em paralelo

🧾 Sintaxe básica

//COPYPDS  JOB (1234),'COBOL DICAS',
//             CLASS=A,MSGCLASS=X
//*
//STEP01   EXEC PGM=IEBCOPY
//SYSUT1   DD DSN=CDICAS.PDS.ORIGEM,DISP=SHR
//SYSUT2   DD DSN=CDICAS.PDS.DESTINO,
//             DISP=(NEW,CATLG,DELETE),
//             SPACE=(CYL,(5,2,5)),UNIT=SYSDA,
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800,DSORG=PO)
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  COPY OUTDD=SYSUT2,INDD=SYSUT1
/* 

📂 Descrição dos DDs

  • SYSUT1 → biblioteca de origem (PDS existente)

  • SYSUT2 → biblioteca de destino (nova ou vazia)

  • SYSPRINT → log com o resultado da operação

  • SYSIN → comandos de controle (como COPY, SELECT, EXCLUDE, etc.)

💻 Exemplo prático: copiar membros específicos

//STEP01   EXEC PGM=IEBCOPY
//SYSUT1   DD DSN=CDICAS.PDS.SOURCE,DISP=SHR
//SYSUT2   DD DSN=CDICAS.PDS.TARGET,
//             DISP=OLD
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  COPY OUTDD=SYSUT2,INDD=SYSUT1
    SELECT MEMBER=(PROG001,PROG002)
/*

Esse exemplo copia apenas os membros PROG001 e PROG002 da SOURCE para a TARGET.

💥 Compactar PDS (Reorganizar)

//STEP01   EXEC PGM=IEBCOPY
//PDSORIG  DD DSN=CDICAS.PDS.FONTE,DISP=OLD
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  COPY INDD=PDSORIG,OUTDD=PDSORIG
/*

Isso reorganiza a própria biblioteca, eliminando os espaços "fantasmas" deixados por exclusões de membros anteriores. É tipo um desfragmentador de disco.

⚙️ Regras

  • O DSORG=PO é obrigatório no DCB da biblioteca destino (SYSUT2) se for criada nova.

  • Não use para arquivos sequenciais. Pra isso, use o IEBGENER.

  • Reorganizar (copy INDD=OUTDD) só funciona se DISP=OLD.

💡 Dicas

  • Sempre compacta PDS antes de liberar pra produção — evita abends por falta de espaço interno.

  • Quando fizer backup, pode combinar com data/hora no nome do PDS.

  • Muito usado em scripts de deploy automatizado.

 

✅ Conclusão

IEBCOPY é o rei do PDS. Se você trabalha com COBOL, Assembler ou qualquer linguagem que use bibliotecas particionadas, esse utilitário é obrigatório. Serve pra copiar, compactar e organizar — e faz isso com precisão cirúrgica. Não tem desculpa pra não dominar.