Iniciação ao REXX – Quando o Mainframe Te Apresenta um Novo Amigo
“REXX não é moda. REXX é sobrevivência.”
Quem trabalha com z/OS, z/VM ou IBM Z cedo ou tarde chega a essa constatação:
não importa quantos produtos enterprise você tenha, sempre haverá aquele momento em que o problema é pequeno demais para COBOL, complexo demais para JCL e burocrático demais para justificar uma nova ferramenta.
É exatamente nesse espaço — invisível para muitos — que mora o REXX.
Subestimado, silencioso, quase sempre ignorado… até o dia em que você descobre que ele resolve 80% das dores do dia a dia com meia dúzia de linhas.
Este post é um convite:
👉 conhecer o REXX não como linguagem, mas como companheiro de trincheira no mainframe.
📜 Um pouco de história (porque nada no mainframe surge do nada)
O REXX (Restructured Extended Executor) nasceu em 1979, dentro da IBM, criado por Mike Cowlishaw.
A motivação era simples e genial:
Criar uma linguagem fácil de ler, difícil de quebrar e totalmente integrada ao sistema.
Enquanto o mundo brigava com sintaxe pesada, pontuação excessiva e códigos ilegíveis, o REXX nasceu com uma ideia revolucionária para a época:
-
tudo é string
-
tipagem dinâmica
-
sintaxe próxima do inglês
-
tolerância a erro humano
📌 Curiosidade:
REXX é mais antigo que Perl, Python e Ruby — e já fazia muita coisa que elas só popularizaram décadas depois.
🧠 REXX não vive sozinho: ambientes de processamento e comando
Aqui está o primeiro choque para quem vem de linguagens “tradicionais”:
👉 REXX não existe fora de um ambiente.
Antes de escrever código, você precisa entender onde ele roda e com quem ele conversa.
Ambientes de Processamento
-
TSO/E
-
ISPF
-
Batch TSO
-
Batch não-TSO
-
z/VM (CMS / CP)
O mesmo EXEC pode se comportar de forma totalmente diferente dependendo do ambiente.
📌 Easter egg de sobrevivência:
Se você não sabe em que ambiente está, o erro não é do REXX — é seu.
Ambientes de Comandos
REXX não executa comandos diretamente.
Ele endereça comandos a um ambiente específico.
Isso explica por que REXX é tão poderoso:
ele fala a língua do sistema.
🧱 Fundamentos do REXX – Simples, mas não simplório
Filosofia da linguagem
-
Tudo é string
-
Conversão automática quando necessário
-
Pouca pontuação
-
Código legível
-
Menos regras, mais resultado
Sem ponto e vírgula.
Sem BEGIN obrigatório.
Sem cerimônia.
📌 Curiosidade perigosa:
Variáveis não inicializadas não geram erro.
Elas retornam o próprio nome.
Ótimo para debug… péssimo se você não souber 😄
Entrada, saída e lógica
-
SAY→ saída -
PULL→ entrada (stack) -
IF / THEN / ELSE -
DO / END -
EXIT
Aqui o REXX começa a mostrar sua vocação: automatizar decisões, não apenas executar código.
🖥️ REXX e o Ambiente TSO – Onde a mágica começa
Com REXX você:
-
aloca datasets
-
consulta catálogos
-
automatiza comandos
-
elimina JCL desnecessário
📌 Comentário Bellacosa:
REXX + TSO = menos JCL, menos erro, menos dor de cabeça.
📦 CLISTs x EXECs – O passado e o presente
CLIST fez história.
Mas o REXX fez melhor.
-
EXECs são mais poderosos
-
Mais legíveis
-
Mais fáceis de manter
-
Melhor integração
Entender a sequência de busca (SYSEXEC, SYSPROC…) é obrigatório.
📌 Easter egg clássico:
“EXEC não encontrado” quase sempre é DD errado, não código errado.
🔁 Programação REXX – Onde o iniciante vira sysprog
Aqui o REXX mostra que não é brinquedo:
-
Funções e subrotinas
-
Escopo de variáveis
-
DO composto
-
ITERATE e LEAVE
-
SELECT (case statement elegante)
-
SIGNAL e SIGNAL VALUE
-
INTERPRET (meta-programação!)
📌 Comentário raiz:
INTERPRET é um sabre de luz.
Poderoso… mas não entregue para qualquer padawan.
🌳 Variáveis, Strings e o poder do PARSE
Stems – arrays antes dos arrays
PARSE – o superpoder escondido
📌 Curiosidade:
PARSE elimina dezenas de IFs, SUBSTRs e gambiarras.
📂 EXECIO – O mini DFSORT do dia a dia
Com EXECIO você:
-
lê arquivos
-
grava datasets
-
processa linhas
-
automatiza relatórios
Tudo sem sair do REXX.
🧪 Depuração – Porque errar faz parte
REXX não te abandona quando algo dá errado:
-
TRACE -
RC -
SIGL -
SOURCELINE -
CONDITION
📌 Curiosidade histórica:
Debug nativo em REXX era luxo quando muitas linguagens nem sonhavam com isso.
⚙️ Batch, endereços e ambientes avançados
REXX roda:
-
em batch TSO
-
fora do TSO
-
em múltiplos ambientes de comando
📌 Comentário Bellacosa:
Antes de perguntar “por que falhou”, pergunte “onde estou rodando”.
🚀 Compilador REXX – Performance e proteção
Sim, REXX pode ser compilado:
-
melhora performance
-
protege código
-
usado em ambientes críticos
Mesmo compilado, ele não perde sua alma dinâmica.
☕ Conclusão – Por que REXX vira amigo
REXX não tenta competir com COBOL.
Não substitui Assembler.
Não briga com produtos enterprise.
Ele faz algo muito mais valioso:
👉 resolve problemas reais com o que já existe no sistema.
Quem domina REXX:
-
automatiza mais
-
depende menos
-
entende melhor o ambiente
-
sobrevive melhor no data center
No mainframe, o melhor amigo
não é o software mais caro…
é o que resolve às 3 da manhã.
Bem-vindo ao REXX.
Ele sempre esteve aí. ☕🖥️