☕ EXECIO no REXX Mainframe
O canivete suíço de I/O que todo mundo usa… e quase ninguém respeita
“Quando o REXX toca no disco, o EXECIO está por trás.
E quando o disco fica lento, geralmente é culpa de quem não entendeu o EXECIO.”
🧠 Introdução – Onde o REXX encontra o mundo real
REXX é excelente para controle, decisão e orquestração.
Mas em algum momento ele precisa fazer o que todo batch faz desde 1964:
👉 Ler dados
👉 Escrever dados
É aí que entra o EXECIO.
Simples no nome.
Perigoso no impacto.
🕰️ Origem histórica – Por que o EXECIO nasceu?
Antes do EXECIO:
-
REXX era fortemente interativo
-
I/O era dependente de comandos externos
-
Ler arquivos sequenciais era lento e improvisado
Com a popularização do REXX no TSO/E e no batch, a IBM precisava de:
-
Um método padrão
-
Um comando eficiente
-
Compatível com DDNAME
-
Funcional tanto em TSO quanto em batch
Assim nasceu o EXECIO, no final dos anos 80, como ponte direta entre:
REXX ⇄ QSAM ⇄ MVS
📜 O que é EXECIO?
EXECIO é o comando REXX responsável por:
-
Ler registros de um DDNAME
-
Escrever registros em um DDNAME
-
Transferir dados entre datasets e variáveis REXX
Ele trabalha sempre com:
-
DDNAME alocado
-
Registros sequenciais
-
Stem variables
🧪 Sintaxe essencial
Exemplo básico:
Aqui:
-
*= todas as linhas -
DISKR= leitura -
SYSIN= DDNAME -
linhas.= onde os dados vão morar
🧩 Curiosidades que pouca gente comenta
🧩 1. EXECIO não entende “arquivo”
Ele entende DDNAME.
Se o DDNAME não existe:
-
RC pode ser enganoso
-
O erro aparece em mensagem
-
GETMSG vira obrigatório
🧩 2. EXECIO * carrega tudo na memória
Se o arquivo tem:
-
10 mil linhas → ok
-
1 milhão → boa sorte
EXECIO * é confortável… até não ser.
🧩 3. A variável .0 manda mais que você
Após leitura:
Ela contém quantos registros foram lidos.
Ignorar .0 é convite a loop errado.
🥚 Easter Eggs técnicos
🥚 1. Leitura parcial estratégica
Ótimo para:
-
Ler cabeçalhos
-
Identificar layout
-
Decidir processamento sem ler tudo
🥚 2. EXECIO + Data Stack
É possível combinar:
-
EXECIO
-
PUSH / QUEUE
-
PARSE PULL
Criando pipelines “à moda antiga”.
🥚 3. EXECIO em SYSREXX
No batch, EXECIO:
-
Roda sem terminal
-
Depende totalmente do JCL
-
É mais rápido
-
É mais perigoso
🧠 Exemplo prático – Batch inteligente
Esse REXX:
-
Lê
-
Analisa
-
Decide
-
Escreve
Tudo antes do COBOL rodar.
⚠️ Riscos reais do EXECIO
-
Arquivo grande → consumo de memória
-
DISKW sem controle → overwrite silencioso
-
DISKR sem validação → loop infinito
-
Falta de fechamento → dados inconsistentes
Boa prática Jedi
Força flush e fechamento correto.
🛡️ EXECIO e segurança
EXECIO respeita:
-
RACF
-
Permissões de dataset
-
Contexto do job
Mas:
REXX que escreve dados é tão poderoso quanto um utility IBM.
Controle de acesso é obrigatório.
☕ Comentário Bellacosa Mainframe
O EXECIO é o momento em que:
-
O REXX deixa de ser “script”
-
E passa a mexer em dados corporativos
Quem trata EXECIO como “detalhe”:
-
Cria batch frágil
-
Gera incidentes silenciosos
-
Descobre o erro em produção
EXECIO não é comando.
É compromisso com o dado.
🧠 Frase final para colar no monitor
Se o REXX leu, ele é responsável.
Se escreveu, ele é culpado até prova em contrário.