| Bellacosa Mainframe apresenta o REXX em modo batch JCL script versus compilado |
🚀☕ O REXX VIROU OPERADOR DE MAINFRAME! — Quando Scripts Ganham Superpoderes no z/OS ☕🚀
“O dia em que você descobre que REXX consegue conversar diretamente com o console do MVS… é o dia em que você percebe que o Mainframe nunca foi apenas um computador.”
— Bellacosa Mainframe Chronicles
😮 O GRANDE MAL-ENTENDIDO SOBRE REXX
Muita gente acha que REXX é apenas:
- linguagem de automação simples,
- script de login TSO,
- “CLIST melhorado”,
- ferramentinha de produtividade.
Mas isso é como dizer que:
- um z15 é “um computador grande”.
REXX no z/OS é MUITO mais profundo.
Quando você entra em:
- compilação,
- batch,
- console MVS,
- automação operacional,
o REXX deixa de ser “script” e começa a virar:
🔥 interface viva do sistema operacional.
🧠 O MOMENTO EM QUE O REXX MUDA DE NÍVEL
Existe um ponto na jornada Mainframe em que ocorre uma transformação mental.
É quando você percebe que um EXEC consegue:
✅ emitir comandos de operador
✅ capturar mensagens do sistema
✅ automatizar JES2
✅ monitorar jobs
✅ analisar IPL
✅ operar subsistemas
✅ rodar em batch
✅ virar código compilado
✅ esconder source
✅ ganhar performance absurda
Nesse momento o REXX deixa de ser:
"SAY 'HELLO WORLD'"
e vira:
"D IPLINFO"
"D A,L"
"F CICS,EMERG"
😳
☕ O REXX NÃO FOI CRIADO “ONTEM”
Criado por Mike Cowlishaw na IBM nos anos 70, o REXX nasceu com uma filosofia quase revolucionária:
“A linguagem deve ser legível para humanos.”
Enquanto outras linguagens:
- complicavam,
- abreviavam,
- obscureciam,
o REXX dizia:
IF SALDO < 0 THEN
SAY 'VOCÊ ESTÁ DEVENDO'
Isso parecia simples…
Até alguém descobrir que ele podia controlar o MVS inteiro.
💀
🏛️ O REXX NO CORAÇÃO DO z/OS
Pouca gente percebe o quanto o REXX está infiltrado no ecossistema IBM:
| Área | Uso |
|---|---|
| ISPF | diálogos |
| SDSF | automação |
| RACF | administração |
| JES2 | operações |
| DB2 | utilities |
| CICS | scripts |
| NetView | automação |
| TSO | comandos |
| z/OS UNIX | integração |
REXX é quase um “sistema nervoso” invisível do Mainframe.
⚡ QUANDO O INTERPRETADOR VIRA LIMITAÇÃO
O interpretador REXX é fantástico:
- flexível,
- amigável,
- poderoso.
Mas existe um problema.
Ele lê:
linha por linha
Toda vez.
Imagine um loop gigantesco:
DO I = 1 TO 5000000
X = I * I
END
O interpretador precisa:
- analisar sintaxe,
- resolver símbolos,
- interpretar operações,
- gerenciar tipos,
em tempo real.
Resultado:
🐢
🚀 O DIA EM QUE O REXX GANHA TURBO
A IBM resolveu isso criando o:
IBM REXX Compiler
Agora o fluxo vira:
SOURCE REXX
↓
COMPILER
↓
CEXEC / OBJECT
↓
EXECUÇÃO MUITO MAIS RÁPIDA
O ganho pode ser brutal.
Em alguns testes:
- 6x
- 8x
- 10x mais rápido.
😳
💥 O DETALHE QUE MUITA GENTE NÃO SABE
O compilador não melhora apenas performance.
Ele muda completamente a confiabilidade do programa.
🧨 O INTERPRETADOR TEM UMA PEGADINHA
Veja:
IF 1 = 2 THEN
SAY 'ERRO
O interpretador:
- nunca entra no IF,
- nunca detecta erro.
Agora o compilador…
💀
Ele analisa tudo.
Resultado:
- syntax validation global,
- detecção estrutural,
- análise completa.
Isso transforma REXX em linguagem enterprise séria.
🕵️ O XREF — A FEATURE SUBESTIMADA
Quem já herdou um REXX com:
- 20 mil linhas,
- 900 variáveis,
- 300 CALLs,
- labels aleatórios,
sabe o inferno que isso é.
Então entra o:
XREF
Cross Reference Listing.
Ele lista:
- variáveis,
- funções,
- labels,
- comandos host,
- referências.
Exemplo:
USERID BUILT-IN 6(f)
SYSVAR SYSTM RTN 7(f)
Isso é ouro puro para:
- manutenção,
- auditoria,
- engenharia reversa,
- modernização.
👀 EASTER EGG #1 — O REXX “SECRETO”
Pouca gente conhece:
PARSE VERSION V
SAY V
Resultado:
REXX370
ou:
REXXC370
🔥
Você consegue descobrir:
- se o código está compilado,
- qual engine está rodando,
- versão do interpretador.
Quase um “SHOW VERSION” interno do REXX.
🧠 O QUE É CEXEC?
O compilador pode gerar:
| Tipo | Descrição |
|---|---|
| CEXEC | REXX compilado |
| OBJECT | object module |
O CEXEC continua:
- sendo REXX,
- mas compilado.
Já OBJECT pode:
- virar LOAD MODULE,
- ser link-editado,
- chamado como programa.
😈 O “LADO OCULTO” DO CONDENSE
Existe uma opção misteriosa:
CONDENSE
Ela:
- compacta,
- “embaralha”,
- reduz tamanho.
O resultado parece:
ÆØ§µ▒╬╫╩
😵
Muitos juniors acham que:
- dataset corrompeu,
- encoding morreu,
- EBCDIC explodiu.
Não.
É só REXX compilado condensado.
⚙️ REXX EM BATCH — A PORTA PARA AUTOMAÇÃO REAL
Agora começa a magia operacional.
O REXX pode rodar:
- foreground,
- TSO,
- batch,
- scheduler,
- automation.
E aí entra uma entidade lendária do z/OS:
IKJEFT01
👑 IKJEFT01 — O “REI INVISÍVEL” DO TSO BATCH
Quem trabalha com Mainframe inevitavelmente encontra:
//STEP1 EXEC PGM=IKJEFT01
Esse programa:
- cria ambiente TSO/E,
- habilita comandos TSO,
- executa CLIST,
- executa REXX.
É quase um:
"TSO portátil dentro do batch"
💻 EXEMPLO REAL
//BELLA JOB CLASS=A,MSGCLASS=X
//STEP1 EXEC PGM=IKJEFT01
//SYSEXEC DD DSN=VAGNER.REXX.EXEC,DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
%BELLA01
/*
🔥 O REXX EXECUTADO
/* REXX */
SAY 'BELLACOSA MAINFRAME ONLINE'
ADDRESS TSO
"LISTCAT LEVEL(SYS1)"
SAY 'FIM'
😮 MAS EXISTE UMA VERSÃO MAIS “ROOT”
E aí chegamos no:
IRXJCL
☠️ IRXJCL — O “MODO HARDCORE”
Com:
//STEP1 EXEC PGM=IRXJCL
o REXX roda:
- diretamente no MVS,
- sem TSO/E.
🔥
Agora começam as restrições.
💀 O ERRO CLÁSSICO
Isso NÃO funciona:
ADDRESS TSO "ALLOC ..."
Porque:
❌ não existe TSO.
🧠 O QUE MUDA?
| Ambiente | Recursos |
|---|---|
| IKJEFT01 | TSO completo |
| IRXJCL | MVS puro |
👑 AGORA CHEGAMOS AO “CHEAT CODE” DO z/OS
ADDRESS CONSOLE
Quando alguém aprende isso…
não existe volta.
🤯 O REXX CONSEGUE VIRAR OPERADOR MVS
Sim.
Você pode emitir:
D IPLINFO
D A,L
D U,VOL=TSO001
diretamente do EXEC.
😳
⚠️ ISSO É PODER OPERACIONAL REAL
Agora o REXX pode:
- monitorar sistema,
- detectar falhas,
- responder eventos,
- automatizar operações,
- capturar mensagens WTO,
- agir sozinho.
Isso é praticamente a base conceitual:
- do NetView,
- OPS/MVS,
- System Automation.
🧩 EASTER EGG #2 — O TOKEN FANTASMA
Existe um conceito fascinante:
CART
Command And Response Token.
Exemplo:
"CART IPL001"
"DISPLAY IPLINFO"
O CART funciona como:
- identificador,
- etiqueta,
- correlation-id do comando.
Muito parecido com:
- tracing distribuído moderno,
- request-id de APIs,
- observabilidade cloud.
😳
O Mainframe já fazia isso décadas atrás.
💬 CAPTURANDO A RESPOSTA DO MVS
Agora entra:
GETMSG()
RC = GETMSG('MSG.','SOL','IPL001',,30)
E pronto.
As mensagens do console vão parar:
- dentro de variáveis REXX.
🤯
🚀 EXEMPLO COMPLETO — “OPERADOR AUTOMÁTICO”
/* REXX */
ADDRESS TSO
"CONSPROF SOLDISPLAY(NO) SOLNUM(400)"
"CONSOLE ACTIVATE"
ADDRESS CONSOLE
"CART IPL001"
"DISPLAY IPLINFO"
RC = GETMSG('MSG.','SOL','IPL001',,30)
DO I = 1 TO MSG.0
SAY MSG.I
END
ADDRESS TSO
"CONSOLE DEACTIVATE"
😳 O QUE ESSE CÓDIGO FEZ?
Ele:
✅ ativou console MCS
✅ virou operador do z/OS
✅ executou comando MVS
✅ capturou respostas
✅ armazenou tudo em STEM variables
Tudo usando REXX.
☕ E AÍ VOCÊ PERCEBE…
O Mainframe nunca foi “ultrapassado”.
Ele sempre foi:
- automatizável,
- observável,
- integrável,
- scriptável.
Muito antes de:
- DevOps,
- IaC,
- observability,
- automation frameworks,
- cloud scripting.
🧠 O REXX ERA “DEVOPS” ANTES DO DEVOPS EXISTIR
Pense:
| Hoje | Mainframe fazia |
|---|---|
| Python automation | REXX |
| IaC | PROCs/JCL |
| Monitoring | WTO/GETMSG |
| Event Driven | Console automation |
| Observability | CART |
| CI/CD | Endevor/Changeman |
| Scripting | TSO/E |
😳
👑 CONCLUSÃO — O DIA EM QUE O REXX DEIXA DE SER “LINGUAGEM”
Quando você domina:
- Compiler,
- IKJEFT01,
- IRXJCL,
- ADDRESS CONSOLE,
- GETMSG,
- CART,
o REXX deixa de ser:
"uma linguagem"
e vira:
🔥 Interface operacional viva do z/OS 🔥
E talvez esse seja o segredo mais subestimado do Mainframe moderno.
☕ Bellacosa Mainframe Final Thought
“Quem aprende REXX de verdade percebe uma coisa assustadora:
o Mainframe não é apenas um sistema…
ele conversa com você.” 🚀☕
Sem comentários:
Enviar um comentário