1. O que é REXX e onde ele roda
O REXX foi criado por Mike Cowlishaw na IBM em 1979 e se tornou a linguagem de scripting padrão de vários sistemas IBM. No z/OS ele roda em três contextos principais:
- TSO interativo — você digita
EXEC meu.rexxna linha de comando do ISPF e o exec roda imediatamente, podendo interagir com o usuário via SAY/PULL. - Batch (IKJEFT01) — o exec roda dentro de um job JCL, sem interação humana, ideal para automação agendada.
- ISPF Dialogs — execs chamados de dentro de menus ISPF via ISPEXEC, com acesso a serviços de tela, variáveis de pool e datasets.
🦕 Analogia — REXX como Python ou Bash do mainframe
Se você já usou Python ou Bash para automatizar tarefas no Linux, vai se sentir em casa com REXX. A ideia é a mesma: em vez de escrever um programa compilado (COBOL = Java no Linux), você escreve um script interpretado que pode chamar comandos do sistema, processar texto e tomar decisões. REXX é o scripting moderno que o mainframe tinha desde os anos 80.
2. REXX vs CLIST
Antes do REXX, o mainframe tinha as CLISTs (Command Lists) — a linguagem de scripting original do TSO. As CLISTs ainda existem em muitas instalações, mas o REXX é claramente superior em quase todos os aspectos:
| Característica | REXX | CLIST |
|---|---|---|
| Sintaxe | Limpa, similar a linguagens modernas | Verbosa, cheia de &símbolos |
| Tratamento de strings | Excelente — funções ricas | Limitado |
| Debug | TRACE para diagnóstico | Difícil |
| Portabilidade | Roda em z/OS, z/VM, PC | Apenas TSO |
| Performance | Melhor | Mais lento |
| Legado | Padrão atual | Código legado |
Se você encontrar código com &VARIAVEL e PROC no início, é CLIST. Se o arquivo começa com um comentário /* */, é REXX. Aprenda REXX — CLISTs existem para manter sistemas antigos.
3. Seu primeiro REXX exec
Um exec REXX é um arquivo de texto salvo como membro de um PDS (geralmente com RECFM=FB, LRECL=80). A primeira linha obrigatoriamente deve ser um comentário REXX — isso é o que o interpretador usa para identificar que o arquivo é REXX:
Linha a linha:
/* REXX ... */— comentário obrigatório na linha 1. Sem ele, o TSO não reconhece o arquivo como REXX.SAY— imprime uma linha de texto no terminal (ou SYSTSPRT em batch).DATE()eTIME()— funções built-in que retornam data e hora atuais.EXIT 0— encerra o exec com return code 0. Opcional, mas boa prática.
4. Como executar um REXX
No TSO interativo (ISPF opção 6)
Em batch (IKJEFT01)
💡 SYSEXEC vs SYSPROC
O z/OS procura execs REXX no DD SYSEXEC e CLISTs no SYSPROC. Se ambos forem alocados, o SYSEXEC tem prioridade para REXX. Em muitas instalações, o SYSEXEC já aponta para as bibliotecas de sistema — você só precisa adicionar o seu PDS na concatenação para que seus execs sejam encontrados pelo nome simples.
5. Estrutura de um exec REXX
Um exec REXX bem organizado segue esta sequência:
✅ REXX é case-insensitive para palavras-chave
As palavras-chave do REXX (SAY, IF, DO, END, EXIT) podem ser escritas em maiúsculo ou minúsculo — say, Say, SAY são equivalentes. Variáveis, no entanto, são convertidas automaticamente para maiúsculo quando você usa ARG ou PULL, então por convenção escreva nomes de variáveis em maiúsculo para evitar surpresas.