Translate

Mostrar mensagens com a etiqueta Automation. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Automation. 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. 🔥

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.


sábado, 8 de novembro de 2025

☕🚀 REXX NO MODO TURBO: O DIA EM QUE O EXECIO VIROU UM CANHÃO DE AUTOMAÇÃO NO z/OS 🚀☕

 


Bellacosa Mainframe Lendo e gravando dataset em REXX

☕🚀 REXX NO MODO TURBO: O DIA EM QUE O EXECIO VIROU UM CANHÃO DE AUTOMAÇÃO NO z/OS 🚀☕

“Quem domina I/O em REXX deixa de escrever scripts… e começa a construir infraestrutura invisível dentro do mainframe.”

— Bellacosa Mainframe


📚 Introdução

Existe um momento específico na jornada de qualquer profissional mainframe em que tudo muda.

Até então:

  • o REXX parecia apenas uma linguagem de comandos,
  • alguns SAY,
  • uns PARSE,
  • um loop aqui,
  • um LISTDSI ali.

Mas então surge ele:

🔥 EXECIO 🔥

E junto dele:

  • datasets,
  • streams,
  • automação JES,
  • geração dinâmica de JCL,
  • pipelines batch,
  • processamento massivo,
  • e aquele sentimento perigoso de:

“Acho que agora consigo automatizar o datacenter inteiro…”

E sinceramente?

Talvez consiga mesmo.


🏛️ O VERDADEIRO PODER DO REXX

Muita gente acha que o poder do mainframe está:

  • no COBOL,
  • no CICS,
  • no DB2,
  • ou no JES2.

Mas existe um herói silencioso escondido no TSO:

⚡ O REXX ⚡

Porque ele conecta tudo.

O REXX:

  • conversa com datasets,
  • conversa com JES,
  • conversa com ISPF,
  • conversa com SDSF,
  • conversa com USS,
  • conversa com RACF,
  • conversa com operadores,
  • conversa com o sysprog,
  • e às vezes…
  • conversa até com entidades sobrenaturais chamadas ABENDs.

💾 O PRIMEIRO CONTATO COM O EXECIO

O programador iniciante vê isso:

"EXECIO * DISKR INDD (STEM REC. FINIS"

E pensa:

“Ok… parece simples.”

O sysprog experiente olha o mesmo comando e pensa:

“Esse cidadão acabou de carregar 12 milhões de linhas na memória…”


☠️ O ASTERISCO QUE DESTRÓI REGIÕES

Vamos falar sobre o famoso:

*

No EXECIO ele significa:

“Leia TUDO.”

Parece inocente.

Mas imagine executar isso em:

  • um SYSLOG gigantesco,
  • um dump textual,
  • um relatório SMF,
  • ou uma saída monstruosa de SORT.

Resultado:

IEF374I REGION BELOW 16M EXHAUSTED

Ou pior:

S878

O momento em que o operador começa a procurar seu userid no console…


🧠 O SEGREDO DOS PROFISSIONAIS: STEM VARIABLES

A IBM acertou em cheio aqui.

O uso de STEM transforma o REXX em algo elegantíssimo.


📦 Exemplo

/* LEITURA DE DATASET */

"ALLOC FI(INPUT) DA('USER.TEST.DATA') SHR"

"EXECIO * DISKR INPUT (STEM DADOS. FINIS"

SAY "TOTAL DE REGISTROS:" DADOS.0

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

"FREE FI(INPUT)"

🔍 O DETALHE QUE MUITA GENTE NÃO PERCEBE

DADOS.0

NÃO é um registro.

Ele contém:

  • a quantidade de linhas lidas.

Isso virou praticamente um padrão “sagrado” no universo REXX.


🧙‍♂️ O FEITICEIRO DOS DATASETS

Depois de algum tempo usando EXECIO, acontece algo curioso.

Você para de pensar em:

  • datasets

E começa a pensar em:

  • fluxos,
  • pipelines,
  • transformação de dados,
  • automação operacional.

O REXX começa a parecer um mini shell Unix dentro do z/OS.

E isso NÃO é coincidência.


🌊 STREAMS — QUANDO O REXX DESCOBRE O UNIX

A chegada das Stream Functions foi revolucionária.

Antes:

  • tudo era “registro”.

Depois:

  • tudo virou “fluxo”.

📜 Exemplo com LINEIN()

ARQ = STREAM("'USER.INPUT.DATA'","C","OPEN READ")

DO WHILE LINES(ARQ)

LINHA = LINEIN(ARQ)

SAY LINHA

END

CALL STREAM ARQ,"C","CLOSE"

Isso parece:

  • shell scripting,
  • C,
  • Python,
  • Perl,
  • Unix clássico.

A IBM basicamente trouxe a filosofia POSIX para dentro do REXX.


🤯 O DIA EM QUE O REXX VIRA DEVOPS

Agora observe isso:

JOB.1="//TESTJOB JOB (ACCT),'REXX'"
JOB.2="//STEP1 EXEC PGM=IEFBR14"
JOB.0=2

SAY SUBMIT("JOB.")

Sim.

Você acabou de:

  • gerar um JOB,
  • montar o JCL,
  • submeter para o JES2,
  • tudo dinamicamente.

☕ EASTER EGG #1 — O “SKYNET JES2”

Em algum momento da carreira todo profissional REXX cria um loop acidental assim:

DO FOREVER

SAY SUBMIT("JOB.")

END

Cinco minutos depois:

$HASP375 JOB99999 ESTIMATED LINES EXCEEDED

E nasce uma nova lenda no CPD.


⚡ EXECIO vs STREAMS

EXECIO

Modo clássico mainframe:

  • robusto
  • tradicional
  • extremamente usado

STREAMS

Modo moderno:

  • mais portátil
  • mais elegante
  • mais próximo de Unix/Linux

🏗️ O MAINFRAME É UM ECOSSISTEMA DE I/O

O z/OS inteiro gira em torno de:

  • datasets,
  • buffers,
  • canais,
  • spool,
  • VSAM,
  • logs,
  • streams,
  • records.

Quem domina I/O:

  • domina automação.

Quem domina automação:

  • domina operação.

Quem domina operação:

  • vira indispensável.

💥 O ERRO CLÁSSICO DO INICIANTE

"EXECIO * DISKR HUGEFILE (STEM BIG."

Quando:

  • HUGEFILE tem 48 milhões de registros.

O storage começa a evaporar.

O SDSF fica lento.

O operador abre incidente.

O sysprog começa a investigar.

E você:

  • apenas queria “dar uma olhadinha no arquivo”.

🧠 O PADRÃO PROFISSIONAL REAL

Os veteranos fazem assim:

DO FOREVER

"EXECIO 100 DISKR INPUT (STEM REC."

IF RC <> 0 THEN LEAVE

DO I = 1 TO REC.0

SAY REC.I

END

END

Isso:

  • escala melhor,
  • consome menos memória,
  • evita tragédias operacionais.

☕ EASTER EGG #2 — O “FINIS ESQUECIDO”

Poucas coisas assustam mais um sysprog do que descobrir:

"EXECIO * DISKR INPUT (STEM REC."

Sem:

FINIS

O dataset continua aberto…

E às vezes:

  • lockado,
  • preso,
  • pendurado,
  • amaldiçoado pelo espírito ancestral do ENQ.

👻 O FANTASMA DO DATASET EM USO

Todo mundo já viu:

DATA SET IN USE

E passou 40 minutos procurando:

  • TSO preso,
  • ISPF órfão,
  • batch zombie,
  • ou um REXX abandonado.

🚀 BPXWDYN — O SUPER SAIYAJIN DO ALLOC

Depois vem ele:

BPXWDYN

O allocation moderno do z/OS.


📜 Exemplo

CALL BPXWDYN "ALLOC FI(INPUT) DA(USER.TEST) SHR"

Muito mais poderoso que:

  • ALLOC tradicional.

Mais elegante.
Mais flexível.
Mais “Unixificado”.


🌌 O REXX COMO LINGUAGEM UNIVERSAL DO z/OS

Poucas linguagens conseguem:

  • operar JES,
  • ler spool,
  • manipular datasets,
  • chamar ISPF,
  • usar USS,
  • conversar com RACF,
  • abrir sockets,
  • automatizar operações.

O REXX consegue.

E faz isso há décadas.


☕ EASTER EGG #3 — O SYSADM OCULTO

Existe uma regra não escrita no mainframe:

“Se um ambiente está funcionando perfeitamente há 20 anos… provavelmente existe um REXX misterioso sustentando tudo.”

Ninguém sabe:

  • quem escreveu,
  • quando escreveu,
  • ou como funciona.

Mas todos têm medo de apagar.


🧬 O DNA DO MAINFRAME MODERNO

Hoje:

  • DevOps,
  • automação,
  • pipelines,
  • integração contínua,
  • observabilidade,
  • self-healing systems…

Tudo isso já existia conceitualmente no z/OS há muito tempo.

E o REXX participou disso silenciosamente.


🎯 Conclusão

Aprender:

  • EXECIO,
  • STREAMS,
  • LINEIN,
  • LINEOUT,
  • BPXWDYN,
  • SUBMIT,

não é apenas aprender I/O.

É aprender:

como o mainframe respira.

Porque no fundo:

  • o z/OS é movimento de dados,
  • fluxo de informação,
  • buffers,
  • registros,
  • streams,
  • spool,
  • mensagens,
  • eventos.

E o REXX é uma das linguagens que melhor conversa com esse universo.


☕ Bellacosa Mainframe Final Advice

Se você realmente quiser evoluir em REXX:

Pare de fazer apenas:

  • scripts.

Comece a construir:

  • automações,
  • frameworks,
  • pipelines,
  • ferramentas operacionais,
  • inteligência operacional.

Porque é aí que o REXX deixa de ser linguagem…

E vira:

infraestrutura invisível do mainframe.