Translate

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

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.

quarta-feira, 6 de agosto de 2025

🧠 Comandos TSO/ISPF - Modo Edit/View

 

🧠 Comandos TSO/ISPF - Modo Edit/View

4,424 followers

Salve jovem padawan em complemento ao nosso curso do ISPF e Z/OS, listo abaixo uma pequena listagem com os comandos de linha, mais comuns no TSO ISPF, esses comando ajudam na produtividade, configurando a IDE para melhorar a apresentação, editar entre outras coisas.

Coloquei os comandos que repasso aos meus alunos no curso, com certeza faltam alguns outros, que esqueci ou desconheço. Agradeço toda contribuição para enriquecer ainda mais esta lista.

COMANDOS TSO ISPF

AUTOSAVE ON/OFF

Habilita ou desabilita o salvamento automático ao sair com F3. Com ON, as alterações são salvas automaticamente.

CAPS ON/OFF

Força a digitação em letras maiúsculas no editor ISPF, útil para padronizar código em COBOL, JCL, etc.

HEX ON/OFF

Exibe o conteúdo do arquivo no formato hexadecimal (EBCDIC + HEX), útil para análise de dados binários ou caracteres ocultos.

HLITE COBOL/JCL/SQL/OFF

Ativa realce de sintaxe no editor para a linguagem indicada. Torna o código mais legível com cores diferentes para palavras-chave.

NUMBER ON/OFF STD/COBOL

Ativa ou desativa a numeração de linhas. STD mostra números simples, COBOL usa colunas específicas (A, B, etc.).

AUTONUM ON/OFF

Liga ou desliga a numeração automática de linhas ao inserir. Útil para manter sequências numéricas válidas no código.

AUTOLIST ON/OFF

Ativa/desativa a exibição automática de membros ao navegar por bibliotecas (DSNs).

STATS ON/OFF

Ativa/desativa a gravação automática de estatísticas (última modificação, usuário, data/hora, etc.) em um membro.

VERSION xxx

Define o número de versão a ser incluído nos dados de estatísticas do membro (usado com STATS).

PROFILE

Exibe o perfil atual do editor ISPF, incluindo configurações como CAPS, NUMBER, HEX, etc.

START

Inicia uma nova sessão ou janela ISPF (como uma aba).

SPLIT

Divide a tela atual em duas janelas (vertical), útil para ver dois arquivos ou duas partes do mesmo.

SWAP

Alterna entre as janelas abertas (após START ou SPLIT).

SWAPLIST

Mostra uma lista de todas as sessões ISPF ativas.

SWAPBAR

Exibe ou esconde a barra inferior (linha 24) com as sessões abertas.

SCRNAME nome

Renomeia a janela ISPF atual. Muito útil ao trabalhar com múltiplas sessões.

RESET ou RES

Remove mensagens de erro, alertas ou marcações da tela. Faz uma “limpeza visual”.

SUB

Submete o job JCL em edição para o JES2 (spool), iniciando sua execução.

SAVE

Salva manualmente as alterações do arquivo em edição.

SRCHFOR texto

Pesquisa no membro atual (ou biblioteca, se SRCHFOR ALL) por uma string específica.

FIND texto (Complementar)

Localiza a primeira ocorrência de um texto no membro atual.

CHANGE old new (Complementar)

Substitui um texto por outro.

NULLS ON/OFF

Ativa ou desativa os “nulls” — regiões sem dados em branco. Quando ON, os espaços vazios são representados como nulls (sem preenchimento visível).

TABS ON/OFF

Habilita o uso de tabulação e define a posição dos tabs com TABS xx yy.

BOUNDS xx yy

Define os limites de edição no editor. Útil para evitar digitação fora das colunas permitidas (ex: 8 a 72 para COBOL).

UP

Rola uma página para cima no editor.

DOWN

Rola uma página para baixo no editor.

EXCLUDE ALL

Exclui todas as linhas da visualização (não apaga do membro).

RESET FIND

Remove marcações de pesquisa FIND anteriores.

TSO ISRDDN

Mostra as bibliotecas atribuídas dinamicamente via STEPLIB, ISPLLIB, etc. (muito útil).

TSO ISRFIND

Utilitário de busca de texto por datasets, bibliotecas e membros.

TSO SDSF

Acessa a interface do spool JES2 (para ver jobs, outputs, status, etc).

TSO 3.4

Lista datasets, um atalho direto para utilitários.

Espero ter ajudado e caso algum Jedi sinta falta de algum outro comando, me avise inbox ou nos comentários para deixarmos esta lista o mais completa possível.

Obrigado.


Article content

Mini-curso sobre TSO ISPF


Article content

Mini-curso sobre DATASET no TSO


Article content

Mini-curso sobre Z/OS Mainframe

💡 Extra pra enriquecer


No ISPF, os comandos se dividem em dois mundos poderosos:

  • Primary commands → atuam no dataset inteiro (ex: FIND, CHANGE, SORT)
  • Line commands → atuam linha a linha (ex: C, M, D, I)

E o detalhe ninja:
👉 O modo VIEW parece EDIT… mas é uma armadilha elegante — não salva nada