Translate

Mostrar mensagens com a etiqueta Programação COBOL. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Programação COBOL. Mostrar todas as mensagens

segunda-feira, 2 de março de 2026

☕ “CALL ‘SABEDORIA’ USING PADAWAN” — O Guia Definitivo de Subprogramação COBOL Que Separa Aprendizes de Mestres do Mainframe

 

Bellacosa Mainframe exemplifica call no Cobol

☕ “CALL ‘SABEDORIA’ USING PADAWAN” — O Guia Definitivo de Subprogramação COBOL Que Separa Aprendizes de Mestres do Mainframe

Se você acha que subprogramação em COBOL é só “CALL e pronto”… prepare-se.
Você está prestes a atravessar a porta que leva do programador de exercícios para o engenheiro de sistemas que mantém bancos funcionando 💎

Neste artigo, vou falar com você — jovem Padawan do mainframe — no melhor estilo Bellacosa: direto, prático, cheio de contexto real, curiosidades históricas e aquelas “armadilhas invisíveis” que só aparecem em produção às 3h da manhã.

Pegue seu café ☕. Vamos lá.


🧠 Por que subprogramação é o coração do COBOL?

Grandes sistemas COBOL NÃO são programas gigantes.

Eles são:

👉 Redes de módulos especializados
👉 Bibliotecas corporativas compartilhadas
👉 Camadas de negócio reutilizáveis
👉 Serviços internos antes da palavra “microservice” existir

Um sistema bancário típico executa milhares de subprogramas por segundo.


🧩 O que é um Subprograma, afinal?

Um subprograma é um programa COBOL independente que:

✔ Pode ser chamado por outro
✔ Executa uma tarefa específica
✔ Recebe dados
✔ Retorna resultados
✔ Continua existindo sozinho

Em termos modernos:

É como uma função gigante com superpoderes de desempenho.


📞 O ritual sagrado: CALL

Programa principal (Caller)

CALL "CALCJURO" USING WS-VALOR WS-RESULT

Subprograma (Callee)

LINKAGE SECTION.
01 VALOR PIC 9(7)V99.
01 RESULT PIC 9(7)V99.

PROCEDURE DIVISION USING VALOR RESULT.
COMPUTE RESULT = VALOR * 1.05
GOBACK.

💥 Pronto. Comunicação entre programas.


🔗 Easter Egg #1 — COBOL já fazia “APIs internas” nos anos 70

Antes de REST, SOAP, gRPC…

Mainframes já tinham bibliotecas de serviços corporativos reutilizáveis.


📦 O segredo oculto: LINKAGE SECTION

Padawan, grave isto na pedra:

Sem LINKAGE SECTION, não há parâmetros.

Ela define a interface do subprograma — o “contrato”.


🔄 Como os dados são passados?

🔹 BY REFERENCE (padrão)

👉 Mesma área de memória
👉 Alterações retornam

CALL "PGM" USING WS-DATA

💎 Rápido, eficiente, poderoso… e perigoso.


🔹 BY CONTENT

👉 Cópia do valor
👉 Caller não vê mudanças

CALL "PGM" USING BY CONTENT WS-DATA

🔹 BY VALUE

👉 Valor literal — comum com C/Java


⚠️ Easter Egg #2 — A causa invisível de bugs fantasma

90% dos “dados misteriosamente alterados” em sistemas antigos são BY REFERENCE mal usado.


🧭 Quem é o Main Program?

Plot twist:

👉 O código não define.
👉 O ambiente define.

No batch:

➡ O programa do EXEC no JCL é o principal.

Em CICS:

➡ O ambiente decide.

O mesmo módulo pode ser:

✔ Main hoje
✔ Subprograma amanhã
✔ Serviço compartilhado depois


🧩 Embedded vs External — A Guerra dos Módulos

🧱 Embedded (Contained)

✔ Dentro do mesmo source
✔ Compilado junto
✔ Uso local

MAIN
└─ SUB-A (no mesmo arquivo)

🌐 External

✔ Fonte separado
✔ Compilado independente
✔ Reutilizável

👉 Padrão dominante nas empresas.


🏦 Curiosidade real

Alguns subprogramas bancários:

💰 Executam bilhões de vezes
📅 Estão em produção há décadas
🧠 São mais antigos que muitos programadores


🛑 Como terminar um programa corretamente?

Padawan, memorize isso:

ComandoSubprogramaMain Program
GOBACKRetornaEncerra
EXIT PROGRAMRetorna❌ Não usar
STOP RUN💀 Mata tudoEncerra

⚠️ Easter Egg #3 — O botão nuclear

Um STOP RUN dentro de um subprograma compartilhado pode derrubar:

💥 Transações online
💥 Jobs batch inteiros
💥 Sistemas críticos

Sim, já aconteceu.


📡 Comunicação entre Programas — Três níveis de poder

🟦 Local

Só dentro do programa.

👉 Padrão.


🌍 Global

Programa + subprogramas embutidos.


🌐 External

Todos os programas da run unit.

👉 Use com extremo cuidado.


⚠️ Regra de Ouro Corporativa

Prefira parâmetros explícitos a variáveis globais.

Isso é engenharia profissional.


📥 RETURNING — O modo “função moderna”

Alguns compiladores permitem retorno explícito:

CALL "SUB"
USING IN-DATA
RETURNING OUT-DATA

Subprograma:

PROCEDURE DIVISION USING IN-DATA
RETURNING OUT-DATA.

💎 Menos comum, mas elegante.


🏦 Padrão real de mercado

Quase sempre:

CALL "SERVICO"
USING REQUEST-BLOCK
RESPONSE-BLOCK

Porque sistemas grandes preferem estruturas completas.


🧪 Passo a passo para criar um subprograma robusto

1️⃣ Defina interface clara (LINKAGE)

2️⃣ Use estruturas, não campos soltos

3️⃣ Documente a ordem dos parâmetros

4️⃣ Use GOBACK

5️⃣ Evite GLOBAL/EXTERNAL sem necessidade

6️⃣ Teste isoladamente


💎 Easter Egg Final — O verdadeiro poder do COBOL

Subprogramação é a razão pela qual:

🏦 Bancos não param
✈️ Sistemas de reserva funcionam
📊 Processamento massivo é possível
🕰️ Código sobrevive por décadas


☕ Mensagem do Mestre para o Padawan

Se você dominar subprogramação COBOL, você deixa de ser apenas um programador.

Você se torna:

🏛️ Um arquiteto de sistemas críticos

Porque o mainframe não é sobre código pequeno.

É sobre:

👉 Confiabilidade
👉 Desempenho
👉 Longevidade
👉 Engenharia disciplinada

quinta-feira, 11 de dezembro de 2025

💥 CEMT NÃO MORREU — MAS O CICS EXPLORER DOMINA: Como Manipular Dados no CICS Explorer no IBM z17 (Guia Definitivo para Dev COBOL Sênior)

 

Bellacosa Mainframe em aquilo que não tem contaram sobre CICS Explorer Data

💥 CEMT NÃO MORREU — MAS O CICS EXPLORER DOMINA: Como Manipular Dados no CICS Explorer no IBM z17 (Guia Definitivo para Dev COBOL Sênior)

Se você vive de COBOL em CICS, já sabe:
o terminal 3270 moldou gerações — mas o jogo mudou.

No IBM z17 com CICS Explorer, você não apenas “consulta recursos”…
👉 você visualiza, filtra, manipula e governa o runtime em tempo real.

E mais: com muito mais segurança, contexto e velocidade.

Este guia é direto ao ponto, profundo e prático — do jeito que um dev COBOL sênior precisa.


🧠 De onde veio o CICS Explorer (e por que ele importa)

Antes:

  • CEMT INQ TRANS
  • CEDA DEFINE
  • CEMT SET FILE
  • Telas fragmentadas
  • Memorização pesada
  • Contexto limitado

Agora:

👉 Interface baseada em Eclipse
👉 Integração com CMCI
👉 Visão consolidada
👉 Operação gráfica + inteligente

💡 O Explorer não substitui o CEMT — ele o abstrai e potencializa.


🔥 O que significa “Manipulating CICS Explorer Data”

No Explorer, “dados” não são só registros.

São recursos vivos do CICS:

  • Transações
  • Programas
  • Arquivos VSAM
  • Filas TS/TD
  • Tasks
  • Conexões
  • Métricas runtime
  • Definições BAS/CSD

👉 Você está manipulando o estado do sistema em produção.


🧩 1) Views: seu novo painel operacional

Cada view é uma tabela dinâmica:

  • Linha = recurso
  • Coluna = atributo

Exemplo (Local Transactions):

NAME | STATUS | PROGRAM | PRIORITY | USE COUNT | DUMPING

💡 Isso substitui múltiplos comandos CEMT.


⚡ Personalização que muda o jogo

Você pode:

✔ Mostrar/ocultar colunas
✔ Reordenar (drag & drop)
✔ Filtrar dados
✔ Ordenar por qualquer atributo


💥 Exemplo real

Você está investigando lentidão:

ANTES:
NAME | GROUP | DESCRIPTION | PROGRAM | PRIORITY | STATUS

DEPOIS:
NAME | STATUS | PRIORITY | USE COUNT | RESPONSE TIME

👉 Em segundos, você enxerga o problema.


🔀 2) Drag & Drop: simples, poderoso, subestimado

Clique no cabeçalho → arraste → solte.

Parece trivial.

👉 Mas em produção isso economiza minutos — e minutos salvam SLA.


🔍 3) Filtering: o bisturi do operador

Ambientes reais têm:

  • Centenas de transações
  • Múltiplas regiões
  • CICSPlex

Sem filtro = caos.

Com filtro:

NAME LIKE PAY*
STATUS = ENABLED
PRIORITY > 200

👉 Você reduz milhares de linhas para o que importa.


📊 4) Sorting: enxergando padrões invisíveis

Clique na coluna → ordena.

Use para:

  • Identificar gargalos
  • Ver consumo alto
  • Detectar anomalias

💡 Ordenar por USE COUNT ou CPU revela muito mais do que logs.


✏️ 5) Editor View: onde o poder mora

Duplo clique em um recurso → abre o Editor.

Aqui você:

  • Visualiza todos os atributos
  • Modifica valores
  • Aplica mudanças em tempo real

🧠 Tipos de atributos

🔽 Lista (seguro)

  • ENABLED / DISABLED
  • TRANDUMP / NOTRANDUMP

⌨️ Freeform (perigoso 😅)

  • PRIORITY
  • TIMEOUT
  • Limites

💥 Exemplo prático (vida real)

Transação com abend intermitente:

  1. Abrir Editor
  2. Alterar:
DUMPING = TRANDUMP
  1. Ctrl + S
  2. Reproduzir erro
  3. Analisar dump

👉 Sem restart. Sem JCL. Sem drama.


🟡 O famoso “>” — detalhe que salva carreira

Se aparecer:

> PRIORITY = 255

👉 Significa:

⚠️ Alterado
⚠️ NÃO salvo

💡 Esse símbolo já causou incidentes reais.


💾 Salvamento — onde muitos erram

Você só aplica mudanças com:

✔ Ctrl + S
✔ Ícone de disquete
✔ Fechar + confirmar

👉 Enter NÃO salva.


🛡️ Validação: o guardião silencioso

Se você tentar algo inválido:

❌ Não salva
❌ Mostra erro
❌ Protege o CICS

Exemplo:

PRIORITY = 9999 → rejeitado

📚 Help do CICS Explorer — sua arma secreta

Aqui está um diferencial absurdo.


⚡ F1: magia instantânea

Em uma view:

👉 Explica a tela

Em um atributo:

👉 Explica o campo

  • Significado
  • Valores válidos
  • Impacto
  • Dependências

💬 Infopop (easter egg de produtividade)

Pop-up rápido com ajuda contextual.

👉 Não abre janela
👉 Não quebra fluxo
👉 Fecha com ESC

💡 É como um “Google interno do CICS”.


🔎 Busca avançada

Você pode buscar:

  • Termos técnicos
  • Mensagens
  • Atributos
  • Procedimentos

🏢 Easter egg corporativo (nível elite)

Você pode integrar documentação interna:

  • Runbooks
  • Playbooks
  • Procedimentos
  • Guias de incidente

👉 E pesquisar tudo via Help.

🔥 Isso transforma o Explorer em um portal DevOps mainframe.


📜 Error Log — a caixa preta do Explorer

Acesse:

Window > Show View > Error Log

Mostra:

  • Informational
  • Warning
  • Error

💥 Quando usar

  • Conexão falha
  • Operação não funciona
  • Comportamento estranho
  • Debug de ambiente

🧠 Dica de ouro

Leia nessa ordem:

  1. Error
  2. Warning
  3. Info

👉 Isso conta a história do problema.


🏆 Workflow completo (nível sênior)

Situação: problema em produção.

Você:

  1. Filtra a view
  2. Reorganiza colunas
  3. Ordena por impacto
  4. Identifica recurso
  5. Abre Editor
  6. Ajusta atributo
  7. Salva
  8. Monitora
  9. Usa Help se necessário
  10. Consulta Error Log

👉 Tudo no Explorer.

Sem sair. Sem 3270.


🤯 Curiosidades que poucos sabem

  • O Explorer é baseado em Eclipse RCP
  • Usa CMCI (HTTP) para comunicação
  • Pode integrar docs internas
  • Funciona como cliente DevOps
  • Substitui dezenas de comandos CEMT
  • Permite operação multi-região (CICSPlex)

💎 Conclusão (sem romantizar)

👉 O CEMT não morreu.
👉 Mas o Explorer mudou o jogo.

Para um dev COBOL sênior:

  • Não é só UI
  • É produtividade
  • É segurança
  • É velocidade
  • É visão sistêmica

🚀 Em uma frase

👉 Quem domina CICS Explorer não opera CICS — governa o ambiente.


terça-feira, 5 de outubro de 2010

🔥☕ JSON: O “COBOL DOS DADOS MODERNOS”? — A Linguagem Invisível Que Dominou APIs, Nuvem e Até o Mainframe ☕🔥

 

Bellacosa Mainframe explica o JSON


🔥☕ JSON: O “COBOL DOS DADOS MODERNOS”? — A Linguagem Invisível Que Dominou APIs, Nuvem e Até o Mainframe ☕🔥

“Enquanto muita gente ainda pensava em arquivos texto… o JSON já estava preparando o planeta para microserviços, APIs e integração global.”


🚀 Introdução — O Formato Que Conquistou o Mundo

Se existe algo que une JavaScript, Python, Java, Node.js, Kubernetes, APIs REST, Open Banking, cloud e até o z/OS… esse algo é o JSON.

Sim…

Aquele bloco aparentemente simples:

{
"cliente": "BELLACOSA",
"conta": 12345,
"saldo": 9999.99
}

Hoje parece trivial.

Mas o impacto do JSON na computação foi monstruoso.

Ele virou:

  • o idioma oficial das APIs,
  • a “cola” da internet moderna,
  • o padrão universal de troca de dados,
  • e uma das maiores revoluções silenciosas da computação corporativa.

E o mais curioso?

O JSON nasceu de forma extremamente simples… quase como um “truque elegante” dentro do JavaScript.


🧠 Quem Criou o JSON?

O JSON foi criado por:

👨 Douglas Crockford

Programador, arquiteto de software e evangelista JavaScript.


📅 Data de Criação

O JSON começou a ganhar forma por volta de:

📌 2001

E foi oficialmente popularizado entre:

📌 2002–2005


🌍 O Problema Que o JSON Resolveu

Antes do JSON, integração era quase sempre baseada em:

  • XML
  • CSV
  • Arquivos posicionais
  • Protocolos binários
  • EDI
  • Mensagens proprietárias

O problema?

Tudo era:

  • pesado,
  • verboso,
  • lento,
  • difícil de ler,
  • difícil de debugar.

Exemplo de XML:

<cliente>
<nome>BELLACOSA</nome>
<saldo>9999.99</saldo>
</cliente>

Agora compare com JSON:

{
"nome": "BELLACOSA",
"saldo": 9999.99
}

Menos ruído.
Mais legibilidade.
Mais velocidade.
Mais simplicidade.

E o mercado enlouqueceu.


⚡ O Grande Segredo do JSON

O JSON nasceu inspirado diretamente nos objetos JavaScript.

Na prática:

var cliente = {
nome: "BELLACOSA",
saldo: 9999.99
}

Douglas Crockford percebeu:

“E se isso virar um formato universal de troca de dados?”

E virou.


🔥 O JSON Explodiu Com as APIs REST

Quando APIs REST começaram a dominar o mercado…

o JSON virou praticamente obrigatório.

Porque:

  • era leve,
  • rápido,
  • fácil de parsear,
  • perfeito para internet,
  • amigável para humanos.

Resultado?

O XML começou a perder espaço rapidamente.


☕ O Mainframe Não Ficou de Fora

Aqui começa a parte interessante para o mundo COBOL.

Muita gente achava:

“Mainframe nunca vai falar JSON.”

Erro histórico.

Hoje o z/OS conversa JSON o tempo inteiro:

  • APIs REST
  • z/OS Connect
  • CICS Web Services
  • MQ
  • Kafka
  • Open Banking
  • Microsserviços
  • Cloud híbrida

O JSON virou peça fundamental da modernização mainframe.


🧠 COBOL + JSON = O Casamento Corporativo Moderno

A IBM percebeu rapidamente:

Se o mainframe quisesse continuar reinando…
precisaria falar JSON nativamente.

E então vieram recursos modernos como:

📌 JSON PARSE

e

📌 JSON GENERATE

no Enterprise COBOL.


🚀 Exemplo COBOL Moderno Com JSON

Gerando JSON

IDENTIFICATION DIVISION.
PROGRAM-ID. GERJSON.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 CLIENTE.
05 NOME PIC X(20) VALUE 'BELLACOSA'.
05 SALDO PIC 9(5)V99 VALUE 99999.99.

01 JSON-SAIDA PIC X(200).

PROCEDURE DIVISION.

JSON GENERATE JSON-SAIDA
FROM CLIENTE

DISPLAY JSON-SAIDA.

STOP RUN.

Saída:

{"NOME":"BELLACOSA","SALDO":99999.99}

🔥 Parsing JSON no COBOL

Recebendo API REST

JSON PARSE JSON-ENTRADA
INTO CLIENTE

Isso foi revolucionário no z/OS.

Porque eliminou:

  • parsers manuais,
  • tratamentos absurdos,
  • lógica artesanal,
  • conversões complexas.

🧠 O Que Tornou o JSON Tão Poderoso?

📌 1. Legibilidade Humana

Até operador consegue entender.


📌 2. Estrutura Hierárquica

Permite:

  • objetos,
  • listas,
  • arrays,
  • árvores complexas.

📌 3. Independência de Linguagem

Funciona em:

  • COBOL
  • Java
  • Python
  • Go
  • Node.js
  • Rust
  • RPG
  • PL/I

📌 4. Perfeito Para APIs

JSON praticamente virou:

“o TCP/IP da integração moderna.”


⚠️ Desvantagens do JSON

Nem tudo são flores.


❌ 1. Sem Tipagem Forte

JSON puro não define:

  • decimal fixo,
  • packed decimal,
  • COMP-3,
  • datas reais.

Isso gera problemas em integrações financeiras.


❌ 2. Overhead de Texto

JSON é texto.

Protocolos binários podem ser mais rápidos.


❌ 3. Segurança

Parsing inseguro pode causar:

  • injection,
  • payload malicioso,
  • consumo excessivo de memória.

❌ 4. Precisão Numérica

Problema clássico:

  • valores financeiros,
  • arredondamentos,
  • IEEE floating point.

O mainframe sofre muito menos disso graças ao decimal packed.


🔥 Curiosidades Históricas

☕ JSON NÃO É Linguagem

Apesar do nome:

JavaScript Object Notation

JSON NÃO é uma linguagem de programação.

É apenas um formato de dados.


☕ O JSON Virou Padrão Oficial

RFC oficial:

📌 RFC 8259


☕ XML Dominava Absolutamente

Antes do JSON:

  • SOAP,
  • WSDL,
  • XML Schema,
  • namespaces,
  • tags gigantescas.

Parecia um ritual mágico corporativo.

JSON chegou como uma motosserra.


💣 Easter Egg Histórico

Douglas Crockford chegou a remover referências perigosas do JavaScript porque:

📌 JSON podia executar código involuntariamente

No começo muita gente fazia:

eval(json)

Isso virou um pesadelo de segurança.

Daí nasceram parsers seguros.


🚀 JSON no Mundo Mainframe Moderno

Hoje o JSON está em todo lugar no z/OS:

TecnologiaUso
z/OS ConnectAPIs REST
CICSWeb Services
IMSIntegração moderna
MQMensageria
KafkaStreaming
Db2 RESTAPIs corporativas
Open BankingPayloads financeiros
Cloud híbridaMicrosserviços



🔥 O JSON Mudou o Papel do Programador COBOL

Antigamente:

  • COBOL manipulava arquivos,
  • VSAM,
  • copybooks,
  • EBCDIC.

Hoje o COBOL moderno:

  • consome APIs,
  • gera REST,
  • fala HTTP,
  • troca JSON,
  • integra cloud,
  • conversa com Kubernetes.

O programador COBOL virou:

engenheiro de integração corporativa.


☕ Comparação Filosófica: JSON vs Copybook COBOL

Curiosamente…

JSON lembra MUITO a ideia dos copybooks.

Veja:

Copybook

01 CLIENTE.
05 NOME PIC X(20).
05 SALDO PIC 9(5)V99.

JSON

{
"NOME": "BELLACOSA",
"SALDO": 99999.99
}

Ambos descrevem estrutura de dados.

A diferença?

O JSON atravessa internet, nuvem e APIs.


🧠 O Verdadeiro Motivo do Sucesso do JSON

Não foi tecnologia.

Foi simplicidade.

O JSON venceu porque:

  • humanos entendem,
  • programadores gostam,
  • APIs adoram,
  • clouds dependem,
  • empresas inteiras padronizaram nele.

💣 Conclusão — O JSON Virou a “Nova Linguagem Universal”

O JSON não matou o COBOL.

Na verdade…

Ele ajudou o COBOL a sobreviver à era cloud.

Hoje o mainframe continua relevante porque aprendeu:

  • REST,
  • APIs,
  • microsserviços,
  • containers,
  • integração moderna,
  • e principalmente…
  • JSON.

E talvez essa seja a maior ironia da computação:

O formato que nasceu no JavaScript acabou ajudando o z/OS a continuar dominando o coração financeiro do planeta.


☕ Frase Final no Estilo Bellacosa Mainframe

“O COBOL continua processando bilhões… mas agora conversa com o mundo em JSON.” 🔥🚀