Translate

Mostrar mensagens com a etiqueta irxjcl. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta irxjcl. Mostrar todas as mensagens

segunda-feira, 10 de novembro de 2025

🚀☕ O REXX VIROU OPERADOR DE MAINFRAME! — Quando Scripts Ganham Superpoderes no z/OS ☕🚀

 

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:

ÁreaUso
ISPFdiálogos
SDSFautomação
RACFadministração
JES2operações
DB2utilities
CICSscripts
NetViewautomação
TSOcomandos
z/OS UNIXintegraçã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:

TipoDescrição
CEXECREXX compilado
OBJECTobject 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?

AmbienteRecursos
IKJEFT01TSO completo
IRXJCLMVS 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:

HojeMainframe fazia
Python automationREXX
IaCPROCs/JCL
MonitoringWTO/GETMSG
Event DrivenConsole automation
ObservabilityCART
CI/CDEndevor/Changeman
ScriptingTSO/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ê.” 🚀☕

segunda-feira, 4 de agosto de 2025

REXX : Hello World em JCL Batch

 

Hello World em JCL Batch

4,424 followers

Salve jovem padawan, neste pequeno artigo apresento um JCL explicando com rodar seu primeiro programa REXX no processo BATCH.

O programa é bem pequenino com apenas 4 linhas de código

 /* REXX */
  Say "Hello world!!!!"
  Exit 0
  @@

Explicando cada linha:

1ª /* REXX / indica que é um programa REXX

2ª SAY "Hello World!!!!" exibira a mensagem seja na tela ou na sysout a depender de onde executar

3ª EXIT 0 - encerra o programa e devolve return-code 0 para a operação

4ª @@

O Job devera ser executado no ambiente e a SYSOUT analisada no SDSF.

//REXXJOB1 JOB 'REXX','Hello World',CLASS=A,MSGCLASS=W,               
//         MSGLEVEL=(1,1)
//*
//**********************************************************
//**           REXX em Batch Process                   **
//**********************************************************
//STEP1    EXEC PGM=IEBGENER
//SYSUT1   DD *,DLM=@@
  /* REXX */
  Say "Hello world!!!!"
  Exit 0
  @@
//SYSUT2   DD DSN=&&PDS(PROG1),DISP=(,PASS),UNIT=VIO,
//         SPACE=(CYL,(1,1,1),RLSE)
//SYSPRINT DD SYSOUT=*
//SYSIN    DD DUMMY
//*
//STEP2    EXEC PGM=IRXJCL,PARM='PROG1'
//SYSEXEC  DD DSN=&&PDS,DISP=(OLD,PASS)
//SYSTSPRT DD SYSOUT=*
//SYSTSIN  DD DUMMY
//* 

O resultado será exibido numa SYSOUT


Article content

Listagem com todos as sysouts no SDSF

Article content

Para quem não se recorda, segue o job sendo SUBmetido no JES2.

Article content


Espero ter ajudado, qualquer dúvida estou a disposição.