1. O que são utilitários IBM
Utilitários IBM são programas de sistema entregues junto com o z/OS que realizam operações comuns sobre datasets, membros de PDS, fitas e o catálogo. Eles existem porque essas tarefas são tão frequentes que seria impraticável cada instalação escrever seus próprios programas para isso.
Existem dois grupos principais:
- Utilitários de dados (IEB*) — operam sobre o conteúdo dos datasets: copiar, mover, reformatar, imprimir registros.
- Utilitários de sistema (IEH*) — operam sobre a estrutura: VTOC, catálogos, inicialização de volumes.
- Access Method Services (IDCAMS) — gerencia datasets VSAM e o catálogo.
- DFSORT / SYNCSORT — ordena, filtra e transforma registros.
🦕 Analogia — Utilitários como ferramentas de linha de comando
No Linux você usa cp, sort, grep e rm para operar sobre arquivos sem escrever um programa. No mainframe você usa IEBGENER, DFSORT, IDCAMS e IEFBR14 para a mesma finalidade — só que invocados via JCL, não via terminal.
2. Como invocar um utilitário no JCL
Todo utilitário é invocado num EXEC step com PGM=nome-do-programa. Os utilitários padrão do z/OS ficam na SYS1.LINKLIB (ou concatenação equivalente), então não é necessário STEPLIB.
O padrão é sempre o mesmo: EXEC PGM=, depois os DDs que o utilitário espera. Cada utilitário tem seu conjunto de DDs obrigatórios e opcionais — você aprenderá os de cada um nos artigos seguintes.
3. DDs padrão — SYSPRINT, SYSIN, SYSUT1, SYSUT2
A maioria dos utilitários IEB* compartilha o mesmo conjunto de DDs. Entender o papel de cada um elimina 80% da confusão inicial:
| DD Name | Papel | Valor típico |
|---|---|---|
SYSPRINT |
Saída de mensagens e relatório do utilitário | SYSOUT=* |
SYSIN |
Instruções de controle para o utilitário | Dados inline ou DUMMY |
SYSUT1 |
Dataset de entrada (input) | DSN=...,DISP=SHR |
SYSUT2 |
Dataset de saída (output) | DSN=...,DISP=(NEW,CATLG) |
SYSOUT |
Saída para spool (impressão) | SYSOUT=* |
💡 SYSIN DD DUMMY
Quando um utilitário aceita instruções de controle mas você quer o comportamento padrão, use SYSIN DD DUMMY. O IEBGENER, por exemplo, faz uma cópia simples sem nenhuma instrução — basta apontar SYSUT1 e SYSUT2. Se omitir o SYSIN completamente, o job pode abender com S013.
4. Tabela dos principais utilitários
| Utilitário | O que faz | Quando usar |
|---|---|---|
IEBGENER |
Copia dataset sequencial, reformata registros | Copiar PS→PS, criar dataset a partir de dados inline |
IEBCOPY |
Copia/mescla membros de PDS, comprime PDS | Backup de PDS, mover membros, compressão |
DFSORT |
Ordena, filtra e transforma registros | Ordenar arquivo, remover duplicatas, juntar arquivos |
IDCAMS |
Gerencia VSAM, catálogo, DEFINE/DELETE/REPRO/LISTCAT | Criar VSAM, copiar VSAM, listar catálogo |
IEFBR14 |
Não faz nada — usado pelas DDs do step | Alocar ou deletar datasets via DISP |
IEBPTPCH |
Imprime ou perfura registros formatados | Listar conteúdo de dataset em SYSOUT |
IEHLIST |
Lista VTOC de volumes, membros de PDS | Diagnóstico de volume, inventário de datasets |
IKJEFT01 |
Executa comandos TSO em batch | LISTCAT, SUBMIT, EXEC de CLISTs/REXX em job |
5. Return codes e diagnóstico
Os utilitários IBM seguem a convenção padrão de return codes:
| RC | Significado |
|---|---|
0 | Sucesso total, sem mensagens de aviso |
4 | Aviso — completou, mas algo merece atenção (ver SYSPRINT) |
8 | Erro — processamento parcial ou falha em alguma função |
12 | Erro grave — utilitário não conseguiu completar a tarefa |
16 | Erro fatal — geralmente instrução de controle inválida |
Quando um utilitário falha, a primeira coisa a fazer é ler o SYSPRINT no SDSF. Ele contém as mensagens de erro com o prefixo do utilitário (ex.: IEB para IEB*, IDC para IDCAMS, ICE para DFSORT). O número da mensagem é o ponto de partida para pesquisar na documentação IBM.
✅ Dica de diagnóstico rápido
No SDSF, abra o SYSPRINT do step que falhou e use FIND 'IEB' (ou IDC, ICE) para localizar a primeira mensagem de erro. Mensagens com sufixo E são erros, com W são avisos. A mensagem geralmente diz exatamente qual DD ou instrução causou o problema.