Translate

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.


Sem comentários:

Enviar um comentário