Translate

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

terça-feira, 11 de novembro de 2025

🔥💣 SYSREXX: O “KUBERNETES INVISÍVEL” DO z/OS QUE JÁ EXISTIA ANTES DA NUVEM 💣🔥

 

Bellacosa Mainframe SysRexx o REXX como framework

🔥💣 SYSREXX: O “KUBERNETES INVISÍVEL” DO z/OS QUE JÁ EXISTIA ANTES DA NUVEM 💣🔥

Quando o REXX deixou de ser linguagem… e virou infraestrutura operacional do Mainframe ☕🚀

“Enquanto o mundo moderno descobria automação… o z/OS já executava automações sistêmicas em paralelo dentro do próprio núcleo operacional.”

Existe um momento na história do Mainframe em que o REXX sofre uma mutação absurda.

Ele deixa de ser:

  • simples linguagem de scripts
  • ferramenta TSO
  • automação de rotina

…e se transforma em algo muito maior:

☕ Uma camada operacional inteligente do próprio z/OS.

Esse momento atende pelo nome de:

🔥 SYSREXX (System REXX)

E pouca gente percebe a profundidade arquitetural disso.

Porque o SYSREXX não é “apenas REXX fora do TSO”.

💣 O SYSREXX é praticamente:

  • um runtime operacional
  • um engine de automação
  • um orquestrador interno
  • um mini middleware sistêmico
  • um framework de operações embutido no z/OS

Décadas antes:

  • Kubernetes
  • PowerShell
  • DevOps
  • ChatOps
  • AIOps
  • Infrastructure as Code

…o Mainframe já possuía:

automação operacional orientada a eventos usando REXX.


☕ O DIA EM QUE O REXX VIROU “PARTE DO SISTEMA”

Durante anos o REXX viveu:

  • no TSO
  • em CLISTs
  • em automações ISPF
  • em SDSF
  • em jobs batch

Mas a IBM percebeu algo:

O mundo começava a exigir:

  • integração web
  • automação rápida
  • observabilidade
  • APIs operacionais
  • gerenciamento simplificado

Então nasceu o SYSREXX.

A própria IBM define o objetivo assim:

“Required an infrastructure to support web based initiatives interacting with z/OS components.”

Traduzindo para Bellacosa Mainframe:

🔥 “Precisávamos transformar o z/OS em algo programável em tempo real.”


🚀 O SYSREXX É UM SUBSYSTEM DE VERDADE

Esse é o primeiro choque.

Muita gente imagina:

“Ah… deve ser só um EXEC diferente.”

Negativo.

O SYSREXX nasce como:

AXR

Uma Started Task real.

Ela:

  • cria workers
  • controla filas
  • gerencia requests
  • dispara ambientes TSO
  • administra automações
  • integra console e APIs

💣 Isso é arquitetura enterprise raiz.


☕ O QUE O SYSREXX FAZ?

Ele permite executar EXECs:

  • fora do TSO
  • fora do Batch
  • via console
  • via APIs
  • via programas assembler
  • via automação sistêmica

Ou seja:

🔥 O REXX vira uma API operacional do z/OS.


🧠 O DETALHE QUE QUASE NINGUÉM PERCEBE

O SYSREXX introduziu no Mainframe conceitos que hoje chamamos de:

  • workers
  • queues
  • asynchronous execution
  • runtime isolation
  • service execution
  • orchestration

Observe a arquitetura lógica IBM:

  • Listener
  • Queue Control
  • Worker Tasks
  • Async Processing
  • Console Interface
  • AXREXX API

💣 Isso parece arquitetura cloud moderna.

Só que no z/OS.


🔥 TSO=NO — O MODO “TURBO”

Aqui mora uma engenharia genial.

O modo:

TSO=NO

executa EXECs:

  • em ambiente compartilhado
  • alta velocidade
  • baixo overhead
  • até 64 workers paralelos

Resultado:

performance absurda.


☕ O PREÇO DA VELOCIDADE

Mas existe um detalhe importante.

A IBM alerta:

“Recommend no Data Set Allocation here.”

Porque:

  • o ambiente é compartilhado
  • workers são reutilizados
  • problemas podem contaminar outros EXECs

🔥 Isso é extremamente importante.


🚨 O “VAZAMENTO FANTASMA”

Imagine um EXEC mal escrito:

/* REXX */

"ALLOC FI(TEST) DA('SYS1.PARMLIB') SHR"
EXIT

Sem FREE.

O dataset:

  • continua alocado
  • influencia EXECs futuros
  • causa bugs aleatórios

💣 Bem-vindo ao terror operacional invisível do SYSREXX.


🚀 TSO=YES — O MODO “ISOLADO”

Aqui o EXEC ganha:

  • Address Space própria
  • ambiente TSO dinâmico
  • acesso a datasets
  • comandos POSIX
  • SYSCALL
  • maior segurança

Mas…

☕ não é um TSO “completo”.

E aqui muitos profissionais caem.


🔥 A ARMADILHA DO TSO DINÂMICO

O SYSREXX usa:

IKJTSOEV

para criar:

Dynamic TSO Environment

Mas o TMP tradicional NÃO existe completamente.

Resultado:

  • alguns comandos falham
  • alguns control blocks inexistem
  • alguns LOADs explodem

E então aparece o famoso:

ABEND306

💣 O Mainframe lembrando:

“Você entrou numa área avançada.”


☕ AXRCMD — O SUPERPODER ABSURDO

Aqui o SYSREXX vira praticamente um operador automatizado.

Exemplo:

/* REXX */

Rc = AXRCMD("D IPLINFO",OUT.,5)

DO I = 1 TO OUT.0
SAY OUT.I
END

🔥 O EXEC:

  • envia comando MVS
  • captura resposta
  • processa output
  • toma decisões

Isso muda completamente o jogo.


🚀 O MAINFRAME COMEÇA A “SE OBSERVAR”

Com AXRCMD você pode:

  • monitorar jobs
  • verificar DASD
  • analisar JES2
  • inspecionar XCF
  • observar STORAGE
  • controlar devices
  • automatizar recovery

Tudo em REXX.


☕ EXEMPLO “OPS AI RAIZ”

Imagine isso:

/* REXX */

Signal On Failure

Rc = AXRCMD("D A,L",OUT.,5)

If Rc <> 0 Then Do
Call AXRWTO "ERRO NO DISPLAY"
Exit 8
End

Do I = 1 To OUT.0

If Pos("CICS",OUT.I) > 0 Then Do

If Pos("NOT ACTIVE",OUT.I) > 0 Then Do

Call AXRWTO "CICS FORA DO AR"

Rc2 = AXRCMD("S CICSPROD",MSG.,10)

Call AXRWTO "RESTART AUTOMATICO EXECUTADO"

End
End
End

Exit 0

Failure:
Call AXRWTO "ABEND NO MONITOR"
Exit 16

💣 Isso é praticamente:

  • observabilidade
  • detecção automática
  • autorecovery
  • AIOps

Só usando SYSREXX.


🔥 AXRMLWTO — O “PAINEL OPERACIONAL”

Essa função é maravilhosa.

Ela permite gerar:

  • WTOs multiline
  • outputs organizados
  • blocos formatados
  • relatórios operacionais

Exemplo:

Connect='IPLCHK'

Call AXRMLWTO '=== STATUS IPL ===','Connect','L'

Do I = 1 To OUT.0
Call AXRMLWTO OUT.I,'Connect','D'
End

Call AXRMLWTO '=== FIM ===','Connect','DE'

O console vira praticamente:

uma dashboard textual enterprise.


☕ O SYSREXX É O “POWERSHELL DO MAINFRAME”

Mas com diferenças importantes:

  • mais integrado
  • mais seguro
  • mais próximo do kernel
  • mais operacional
  • absurdamente eficiente

🔥 O EASTER EGG MAIS INSANO

Pouca gente percebe…

Mas o SYSREXX já fazia:

ChatOps operacional

Muito antes do Slack existir.

Observe:

@1STATUS
@1CICSCHK
@1JES2INFO
@1DASDMON

💣 Isso é praticamente:

  • slash commands
  • bots operacionais
  • automação conversacional

No console do z/OS.

Décadas atrás.


☕ O MAINFRAME JÁ FAZIA “SERVERLESS”

Pense nisso.

Você:

  • dispara EXEC
  • runtime nasce
  • executa lógica
  • devolve resultado
  • encerra worker

🔥 Isso lembra o quê?

Lambda.
Functions.
Serverless.

Só que:

no Mainframe.


🚀 O SYSREXX COMO “DEVOPS INVISÍVEL”

Hoje falam:

  • DevOps
  • GitOps
  • AIOps
  • Platform Engineering

Mas o z/OS já possuía:

  • automação sistêmica
  • workers paralelos
  • filas
  • eventos
  • execução assíncrona
  • automação declarativa

O SYSREXX era isso.


☕ O DETALHE MAIS BONITO DO SYSREXX

A IBM poderia ter criado:

  • linguagem nova
  • engine nova
  • framework novo

Mas ela escolheu:

REXX.

Porque:

  • simples
  • legível
  • humana
  • rápida
  • poderosa

🔥 CONCLUSÃO

O SYSREXX é uma das tecnologias mais subestimadas do z/OS.

Ele transformou o REXX em:

  • infraestrutura
  • automação enterprise
  • motor operacional
  • plataforma sistêmica
  • interface programável do Mainframe

E talvez o mais impressionante:

☕ O mundo moderno reinventou muitos conceitos que o Mainframe já dominava há décadas.

Enquanto muita gente ainda estava aprendendo a automatizar servidores distribuídos…

🔥 o z/OS já executava automações inteligentes dentro do próprio coração do sistema operacional. 🔥

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ê.” 🚀☕

domingo, 9 de novembro de 2025

☕🔥 REXX PARSE: A ARTE MAINFRAME DE DESMONTAR O CAOS EM SEGUNDOS 🔥☕

 

Bellacosa Mainframe apresenta a instrução Parse no REXX

☕🔥 REXX PARSE: A ARTE MAINFRAME DE DESMONTAR O CAOS EM SEGUNDOS 🔥☕

“Enquanto muita linguagem ainda está procurando o delimitador… o REXX já terminou o trabalho.”

Existe um momento na vida de todo profissional de mainframe em que ele percebe uma verdade inevitável:

Quase tudo no z/OS é texto.

JCL é texto.
SYSOUT é texto.
JESMSGLG é texto.
LISTCAT é texto.
SMF textualizado é texto.
Parâmetros TSO são texto.
Mensagens do CICS são texto.
Relatórios batch são texto.
Até o operador nervoso digitando comando errado no console vira texto.

E então surge uma das instruções mais elegantes já criadas pela engenharia IBM:

PARSE

Uma instrução tão poderosa que parece magia negra escrita em EBCDIC.


🧠 O QUE É O PARSE?

A IBM define PARSE como:

“Resolver algo em suas partes componentes.”

Traduzindo para o dialeto Bellacosa Mainframe:

“Pegar aquele Frankenstein textual horroroso e transformar em variáveis organizadas sem sofrer.”


😱 O TRAUMA UNIVERSAL DO PARSING

Todo programador já passou por isso:

Em outras linguagens…

linha = "JOAO:30:SAOPAULO"

dados = linha.split(":")

Funciona.

Mas aí aparece:

JOAO|30|SAOPAULO

Depois:

JOAO,30,SAOPAULO

Depois:

JOAO     30SP

E de repente você está escrevendo:

  • parser,
  • regex,
  • tokenizer,
  • scanner,
  • terapia emocional.

😎 O REXX OLHA PARA ISSO E DIZ:

Parse Var linha nome ':' idade ':' cidade

Pronto.

Acabou.

Vai tomar café.


☕ O PARSE É O VERDADEIRO OPERADOR DO MAINFRAME

Porque ele aguenta:

✔ JES2
✔ IDCAMS
✔ DFSORT
✔ IEHLIST
✔ TSO
✔ ISPF
✔ RACF
✔ VTAM
✔ CICS
✔ Outputs monstruosos de utilitários IBM

Enquanto você ainda está tentando descobrir onde começa a coluna 72.


🏛️ A FILOSOFIA IBM ESCONDIDA NO PARSE

O PARSE nasceu numa época em que:

  • memória era cara,
  • CPU era preciosa,
  • programador precisava produzir rápido,
  • automação era sobrevivência.

Então a IBM criou algo brilhante:

Um parser declarativo.

Você descreve o formato.

O REXX faz o resto.


🔥 EXEMPLO 1 — O PARSE “WORD BY WORD”


Entrada

COBOL DB2 CICS JES2

Código

linha = "COBOL DB2 CICS JES2"

Parse Var linha lang1 lang2 subsystem spool

Say lang1
Say lang2
Say subsystem
Say spool

Resultado

COBOL
DB2
CICS
JES2

😏 O DETALHE GENIAL

A última variável recebe o resto.

Isso parece pequeno…

Até você perceber quantos milhões de linhas de parsing isso economizou no planeta.


💀 O TERROR DOS ARQUIVOS FIXOS

Quem nunca recebeu um arquivo assim:

000123JOAO SILVA       000045SP

…nunca sofreu de verdade no mainframe.


😎 O REXX RESPONDE COM TRANQUILIDADE

registro = "000123JOAO SILVA       000045SP"

Parse Var registro ,
1 id 7 nome 25 saldo 31 uf

Say id
Say nome
Say saldo
Say uf

RESULTADO

000123
JOAO SILVA
000045
SP

☠️ EASTER EGG MAINFRAME #1

Se você trabalhou com:

  • copybook COBOL,
  • VSAM KSDS,
  • GDG,
  • DFSORT OUTREC,

seu cérebro provavelmente já começou automaticamente a contar colunas lendo o exemplo acima.

Você não escolheu o fixed-length life.

O fixed-length life escolheu você.


🚀 PARSE COM DELIMITADOR


Entrada

CLIENTE|ATIVO|PREMIUM|BRASIL

Código

linha = "CLIENTE|ATIVO|PREMIUM|BRASIL"

Parse Var linha ,
tipo '|' ,
status '|' ,
categoria '|' ,
pais

Say tipo
Say status
Say categoria
Say pais

RESULTADO

CLIENTE
ATIVO
PREMIUM
BRASIL

🧨 ISSO ERA REVOLUCIONÁRIO

Lembre:

REXX surgiu nos anos 70.

Muitas linguagens da época ainda estavam brigando com manipulação básica de strings.

O PARSE já fazia parsing inteligente.


🤯 PARSE COM DELIMITADOR DINÂMICO

Agora vem a parte onde o REXX começa a parecer tecnologia alienígena.


EXEMPLO

delim = ';'

linha = "DB2;CICS;MQ;IMS"

Parse Var linha ,
a (delim) ,
b (delim) ,
c (delim) ,
d

RESULTADO

DB2
CICS
MQ
IMS

😳 O DELIMITADOR VEIO DE UMA VARIÁVEL

Sim.

O parser se adapta sozinho.


☕ EASTER EGG MAINFRAME #2

Todo profissional z/OS já viu isso:

IKJ56228I DATA SET NOT IN CATALOG

E imediatamente pensou:

“Hmm… isso aí daria um PARSE VAR bonito…”

Isso é sinal claro de exposição excessiva ao TSO/E.


🧠 PARSE SOURCE — O EXEC AUTOCONSCIENTE

Essa funcionalidade é absurdamente subestimada.


Código

Parse Source ,
ambiente ,
tipo ,
exec ,
ddname ,
dataset

Say ambiente
Say tipo
Say exec
Say dataset

ISSO É INSANO

Seu EXEC consegue descobrir:

✔ como foi chamado
✔ de onde veio
✔ qual dataset o contém
✔ em qual ambiente está rodando

É quase um pequeno HAL 9000 do z/OS.

Só que mais estável.


☢️ O PODER REAL DO PARSE

O PARSE não é apenas parsing.

Ele é:

  • automação,
  • observabilidade,
  • integração,
  • produtividade,
  • sobrevivência operacional.

🎯 EXEMPLO REALISTA — PARSING DE LISTCAT


Saída IDCAMS

CLUSTER -------- USER.TEST.KSDS

Código

linha = "CLUSTER -------- USER.TEST.KSDS"

Parse Var linha . '--------' dsname

Say dsname

Resultado

USER.TEST.KSDS

😎 TRÊS SEGUNDOS

Sem regex.
Sem loop.
Sem sofrimento existencial.


📼 O CLIMA DOS ANOS 80

Imagine um operador em 1987:

  • terminal verde,
  • VTAM no ar,
  • JES2 fervendo,
  • fita magnética rodando,
  • café duvidoso,
  • e um EXEC REXX automatizando tudo com PARSE.

Cyberpunk corporativo raiz.


🧨 ARMADILHA CLÁSSICA — O “UPPER”

Muita gente esquece disso:

Parse Arg nome

automaticamente faz:

PARSE UPPER ARG

RESULTADO

Entrada:

Joao

Saída:

JOAO

😅 O INICIANTE PENSA:

“Meu programa converteu sozinho!”

Sim.

O REXX gosta de surpresas.


☕ EASTER EGG MAINFRAME #3

Se você já:

  • colocou TRACE ?R,
  • esqueceu um PULL,
  • entrou em loop infinito no ISPF,
  • ou derrubou um EXEC porque um PARSE pegou coluna errada…

Parabéns.

Você foi oficialmente batizado pelo espírito ancestral do TSO/E.


🚀 O PARSE MODERNO

Hoje o PARSE ainda é extremamente relevante.

Especialmente para:

✔ automação DevOps no z/OS
✔ parsing de REST
✔ USS scripting
✔ logs JSON simplificados
✔ outputs Unix no OMVS
✔ integração híbrida
✔ automação ISPF moderna


🏆 O QUE TORNA O PARSE GENIAL?

✔ Declarativo
✔ Compacto
✔ Legível
✔ Elegante
✔ Poderoso
✔ Natural para automação
✔ Perfeito para o mundo textual IBM


☕ CONCLUSÃO

O PARSE é uma das maiores obras-primas do REXX.

Ele representa perfeitamente a filosofia clássica da IBM:

Resolver problemas reais com elegância absurda.

Enquanto muitas linguagens ainda exigem dezenas de linhas para quebrar texto…

o REXX faz isso quase como uma conversa.

E talvez seja exatamente por isso que décadas depois ele continua vivo no coração do mainframe.

Porque no fim das contas…

O z/OS pode até parecer complexo.

Mas um bom PARSE VAR sempre coloca ordem no caos.