Translate

quinta-feira, 5 de março de 2026

O Que Todo Programador COBOL Padawan Precisa Saber Sobre as Três Camadas Fundamentais dos Agentes de IA

 

Bellacosa Mainframe introduz mcp rag e skills para ia

☕ Um Café no Bellacosa Mainframe

MCP vs RAG vs Skills

O Que Todo Programador COBOL Padawan Precisa Saber Sobre as Três Camadas Fundamentais dos Agentes de IA

Quando surgiram os primeiros chatbots, a arquitetura era extremamente simples.

Usuário


LLM

Resposta

Tudo dependia exclusivamente do conhecimento aprendido durante o treinamento do modelo.

O problema?

O modelo não conhecia:

  • documentos internos
  • sistemas da empresa
  • banco de dados
  • regras atualizadas
  • aplicações corporativas

Foi então que nasceram três tecnologias que hoje aparecem praticamente em todos os projetos modernos de IA.

Cada uma resolve um problema completamente diferente.


A grande confusão

Muitas pessoas imaginam algo assim:

MCP OU RAG OU Skills

Na realidade é:

            Agent

┌─────────────┐
│ LLM │
└──────┬──────┘

┌───────┼────────┐
│ │ │
RAG MCP Skills

Os três trabalham juntos.


O papel do RAG

RAG significa

Retrieval Augmented Generation

A ideia é extremamente elegante.

Ao invés de confiar apenas na memória do modelo, buscamos informações atualizadas antes da resposta.

Fluxo:

Pergunta



Busca documentos



Seleciona apenas os mais relevantes



Entrega os documentos ao LLM



LLM responde usando esse contexto

O modelo continua sendo o mesmo.

Quem muda é o contexto entregue a ele.


Analogia Mainframe

Imagine um operador perguntando:

Qual é o procedimento correto para recuperação do CICS?

O LLM não precisa decorar isso.

Ele consulta:

  • Manual IBM
  • Wiki interna
  • Procedimentos da empresa
  • Documentação operacional
  • PDFs
  • SharePoint

Depois responde.

Exatamente como um analista faria.


O pipeline do RAG

Pergunta



Embedding



Vector Database



Busca semântica



Top-K documentos



Prompt



LLM



Resposta

Observe que existe um banco vetorial.

Ele não guarda textos.

Guarda representações matemáticas dos textos.


O que são Embeddings?

Um embedding transforma texto em números.

Por exemplo

"COBOL"



[0.27, -0.88, 0.45, ...]

Assim documentos semelhantes ficam próximos matematicamente.

É por isso que o sistema consegue encontrar documentos parecidos mesmo quando a pergunta usa palavras diferentes.


Onde o RAG é excelente?

✔ FAQ

✔ Base de conhecimento

✔ Documentação

✔ Manual IBM

✔ Políticas internas

✔ Catálogo de APIs

✔ Documentação COBOL

✔ Contratos

✔ Wikis

✔ PDFs

✔ Emails

✔ Normas


Limitações do RAG

O RAG apenas recupera conhecimento.

Ele NÃO executa nada.

Ele não:

  • envia emails
  • consulta banco
  • abre chamados
  • cria tickets
  • reinicia servidores

Ele apenas fornece contexto.


Agora entra o MCP

MCP significa

Model Context Protocol

Criado pela Anthropic, rapidamente adotado por diversos frameworks, tornou-se um padrão para conectar LLMs a ferramentas e sistemas externos.

Enquanto o RAG fornece conhecimento, o MCP fornece ação.


Imagine um agente perguntando:

Quanto dinheiro há na conta?

RAG?

Não funciona.

O saldo muda a todo instante.

É preciso consultar o sistema.

Quem faz isso?

MCP.


O fluxo do MCP

Usuário



LLM



MCP Client



MCP Server



Sistema Externo



Resposta



LLM



Usuário

O MCP funciona como um tradutor universal.


Analogia Mainframe

Imagine um adaptador padrão entre IA e:

  • CICS
  • IMS
  • DB2
  • MQ
  • RACF
  • z/OSMF
  • APIs REST
  • SAP
  • Salesforce

Ao invés de cada ferramenta exigir uma integração diferente, todas expõem capacidades por meio de um protocolo comum.

O agente apenas descobre e utiliza essas capacidades.


O que um MCP Server pode oferecer?

Pode disponibilizar ferramentas como:

Consultar Cliente

Consultar Pedido

Executar SQL

Ler Arquivos

Enviar Slack

Criar Ticket

Executar Shell

Executar Python

Consultar GitHub

Pesquisar Web

Ler Calendário

Enviar Email

Tudo padronizado.


Benefícios do MCP

Padronização.

Descoberta automática de ferramentas.

Segurança.

Controle de permissões.

Menos integrações customizadas.

Reutilização.

Interoperabilidade entre diferentes agentes.


O que são Skills?

As Skills ficam em outra camada.

Elas representam comportamento.

São capacidades reutilizáveis.

Imagine uma Skill chamada

Abrir Incidente

Ela pode executar:

Consultar logs



Analisar erro



Consultar CMDB



Criar Ticket



Enviar Slack



Atualizar Dashboard

Tudo encapsulado.


Skill não é Prompt

Muita gente pensa:

Prompt = Skill

Não.

Prompt é apenas instrução.

Skill normalmente contém:

  • regras
  • fluxo
  • ferramentas
  • parâmetros
  • validações
  • memória
  • tratamento de erros
  • lógica de negócio

É praticamente um pequeno aplicativo.


Analogia COBOL

Uma Skill lembra muito um programa COBOL reutilizável.

PAYROLL



Recebe parâmetros



Executa regras



Consulta DB2



Atualiza registros



Retorna resultado

Você não reescreve tudo.

Você apenas chama.


Comparação completa

CaracterísticaRAGMCPSkills
ObjetivoBuscar conhecimentoConectar sistemasExecutar processos
Atua sobreInformaçãoFerramentasFluxos de trabalho
Atualiza dadosSimSimDepende
Executa açõesNãoSimSim
ReutilizaçãoMédiaAltaMuito Alta
Usa LLMSimSimSim
Pode usar banco vetorialSimNãoOpcional

Como tudo trabalha junto?

Imagine um banco.

O usuário pergunta:

Meu cartão foi bloqueado. O que aconteceu?

O agente executa:

Etapa 1 — Skill

Resolver Problema Cartão

Etapa 2 — MCP

Consulta

Sistema de Cartões

Obtém:

Status

Limite

Fraude

Eventos

Etapa 3 — RAG

Consulta

Manual de Bloqueios

Normas BACEN

Políticas internas

Etapa 4 — LLM

Combina

  • dados atuais
  • regras
  • conhecimento
  • contexto

E produz uma resposta clara e fundamentada.


Arquitetura completa

                Usuário


┌──────────┐
│ LLM │
└────┬─────┘

┌─────────────┼──────────────┐
│ │ │
▼ ▼ ▼
Skills RAG MCP
│ │ │
Fluxos Conhecimento Ferramentas
│ │ │
▼ ▼ ▼
Regras Vector DB APIs • DB2 • CICS
Workflows Documentos Git • Slack • ERP
PDFs • Wiki Shell • Python

Um exemplo no universo IBM Z

Suponha que um operador pergunte:

"Por que o JOB PAYROLL001 terminou em ABEND S0C7 e como posso corrigir isso?"

Um agente corporativo pode orquestrar as três camadas:

  1. Skill "Diagnosticar ABEND": coordena todo o fluxo de investigação.
  2. MCP: acessa SDSF para obter o JOBLOG, consulta o catálogo do JES2, lê registros SMF, executa uma consulta no DB2 e busca o código-fonte no Git.
  3. RAG: recupera documentação sobre S0C7, padrões de tratamento de dados numéricos, procedimentos internos da empresa e artigos da IBM.
  4. LLM: cruza os dados operacionais em tempo real com a documentação recuperada e apresenta uma explicação detalhada, indicando a provável causa (por exemplo, um campo NUMERIC contendo caracteres inválidos), os programas afetados e os passos recomendados para correção.

Sem o RAG, o agente não teria acesso às políticas e manuais atualizados. Sem o MCP, ele não conseguiria consultar os sistemas corporativos. Sem a Skill, cada investigação exigiria um novo prompt complexo e inconsistente.


A evolução da arquitetura de IA

A tendência é que agentes corporativos sejam compostos por várias camadas especializadas:

  • LLM: raciocínio e geração de linguagem.
  • Memória: histórico e contexto de longo prazo.
  • RAG: recuperação de conhecimento atualizado.
  • MCP: acesso padronizado a ferramentas e sistemas externos.
  • Skills: automação de processos recorrentes e reutilizáveis.
  • Planejamento: decomposição de objetivos em múltiplas etapas.
  • Observabilidade: logs, métricas, rastreamento e auditoria.

Essa combinação transforma um simples chatbot em um agente corporativo capaz de consultar informações, interagir com sistemas legados, executar processos complexos e aprender com o contexto, aproximando-se do que será o padrão da engenharia de software baseada em IA nos próximos anos.

Resumindo em uma frase

  • 🧠 RAG responde à pergunta: "O que o agente precisa saber?"
  • 🔌 MCP responde: "Com quais sistemas o agente pode conversar?"
  • ⚙️ Skills respondem: "O que o agente sabe fazer de forma consistente e reutilizável?"

Quando essas três camadas trabalham em conjunto, surgem agentes capazes de ir muito além de uma conversa: eles compreendem o contexto, acessam o mundo externo e executam tarefas reais, representando a base da próxima geração de aplicações inteligentes.


quarta-feira, 4 de março de 2026

🚀 LABORATÓRIO PYTHON — Missão Padawan: Desafio dos Scripts

 

Bellacosa Mainframe desafia para criação de Scripts em Python

🚀 LABORATÓRIO PYTHON — Missão Padawan: Desafio dos Scripts

Laboratorio Python

Bem-vindo, jovem padawan do código. Aqui não há sabres de luz… apenas teclado, café e determinação. Cada desafio abaixo é um micro-treinamento para despertar a Força do Python dentro de você — no melhor estilo Bellacosa Mainframe: prático, curioso e com histórias do mundo real. ☕


Desafio Python


🧮La001 -  Fatores Primos — O Crivo dos Antigos

Nos tempos dos computadores do tamanho de geladeiras, calcular fatores primos era quase um ritual matemático. 

Este desafio ensina a decompor números como um operador de mainframe desmonta um dump. Use laços, divisão e lógica eficiente — se fizer até √n, você já pensa como engenheiro.

Curiosidade: criptografia moderna depende diretamente de números primos gigantes. Easter egg: teste com 2, 3, 5, 7… a “família real” dos primos. 

Dica Bellacosa: otimize antes de complicar. Python adora soluções elegantes. 

Domine isso e você terá a base para segurança, performance e raciocínio algorítmico. A Força matemática despertará.



🔁La002 -  Palíndromos — O Espelho do Código

Um palíndromo lê igual de frente para trás — como certos logs que insistem em se repetir eternamente. Aqui você aprende slicing, comparação e limpeza de texto.

 História curiosa: operadores antigos testavam rotinas com palavras como “radar” ou “reviver”. 

Easter egg: frases com espaços e pontuação exigem pré-processamento — normalize tudo. Dica de mestre: texto[::-1] é praticamente um truque Jedi do Python. 

Explore frases grandes e descubra padrões ocultos. 

Esse exercício treina percepção, manipulação de strings e atenção a detalhes — habilidades críticas tanto em scripts quanto em análise de dados. 

Padawan que domina strings domina metade do universo Python.


🔤 La003 - Ordenando Palavras — O Bibliotecário Digital

Imagine organizar cartões perfurados ou volumes de logs impressos. Ordenar palavras é a versão moderna disso. 

Você praticará listas, ordenação e funções-chave. Python permite ordenar alfabeticamente, por tamanho ou por critérios personalizados — quase como WLM decidindo prioridades. 

Curiosidade histórica: ordenação foi um dos primeiros grandes problemas da computação. Easter egg: experimente ignorar maiúsculas usando key=str.lower

Dica Bellacosa: sempre pense no critério de negócio, não só no técnico. 

Explore diferentes idiomas e caracteres especiais. Esse exercício ensina organização de dados — habilidade essencial para relatórios, ETL e sistemas corporativos.


🔎Lab004 - Encontrando Índices — Rastreamento de Ocorrências

No mainframe, localizar registros específicos era missão crítica. 

Aqui você aprende a varrer listas e identificar posições exatas. Use enumerate() como se fosse um scanner de spool. 

Curiosidade: muitos algoritmos de busca modernos nasceram de necessidades administrativas simples. Easter egg: encontre todas as ocorrências, não apenas a primeira — isso muda completamente a lógica.

Dica do operador veterano: trate casos onde o item não existe. 

Explore listas grandes e observe desempenho. Esse desafio constrói mentalidade de diagnóstico — fundamental para debug, análise de dados e automação. 

Quem sabe onde algo está, controla o sistema.


⏳ Lab005 - Jogo de Espera — Tempo é Recurso

Mainframes vivem de agendamento e sincronização. Este mini-jogo ensina temporização, aleatoriedade e interação. Use time.sleep() e random para simular eventos imprevisíveis — como jobs aguardando recursos. 

Curiosidade: testes de tempo eram usados para avaliar reflexos humanos em interfaces antigas. Easter egg: variações pequenas de atraso mudam totalmente a experiência. 

Dica Bellacosa: nunca bloqueie sistemas reais com waits desnecessários. 

Explore contadores, pontuação e feedback ao usuário. Esse exercício introduz conceitos de concorrência e UX básica. 

Padawan que controla o tempo controla o fluxo de processamento.


📚 Lab006 - Salvando um Dicionário — Memória Persistente

Guardar dados é essencial — seja em fita magnética ontem ou JSON hoje. Aqui você aprende a serializar estruturas Python em arquivos. 

Dicionários representam registros estruturados, quase como tabelas DB2 simplificadas. Curiosidade: JSON tornou-se padrão universal de troca de dados. 

Easter egg: abra o arquivo salvo em um editor e veja que é legível por humanos. 

Dica de mestre: sempre valide leitura e escrita para evitar corrupção. 

Explore salvar configurações, inventários ou resultados. Esse exercício abre portas para APIs, automação e integração entre sistemas. 

Persistência é o que transforma scripts em soluções reais.


⏰ La007 - Agendando uma Função — O Job Scheduler Caseiro

Antes dos cron jobs e schedulers modernos, operadores controlavam execuções manualmente. Este desafio simula um agendador simples. 

Você aprenderá loops controlados por tempo e execução periódica. 

Curiosidade: sistemas corporativos dependem massivamente de tarefas programadas invisíveis ao usuário. 

Easter egg: tente registrar horários de execução para auditoria. 

Dica Bellacosa: scripts autônomos devem ser resilientes — trate interrupções. 

Explore automações como backups ou verificações de status. Esse exercício é a porta de entrada para DevOps e automação empresarial. Um padawan que agenda tarefas deixa de reagir e passa a orquestrar.


🎯 Lab008 - Jogo de Forca — Projeto Completo

Clássico absoluto. Aqui você integra lógica, estado, entrada e saída. 

É praticamente um mini-sistema interativo. 

Curiosidade: jogos simples sempre foram usados para ensinar programação desde os anos 70. 

Easter egg: implemente categorias de palavras ou níveis de dificuldade. 

Dica de veterano: separe lógica do jogo e interface — arquitetura importa. 

Explore placar, gráficos ASCII e persistência de resultados. Esse desafio mostra como pequenos componentes formam aplicações completas. 

Padawan que termina a Forca está pronto para projetos maiores.


🎲 Lab009 - Simulando Dados — Caos Controlado

Simular dados é como rodar cenários hipotéticos sem afetar produção.

Use geração aleatória para modelar eventos — lançamento de dados, probabilidades, testes estatísticos. 

Curiosidade: Monte Carlo é amplamente usado em finanças e física. 

Easter egg: rode milhares de simulações e observe convergência. 

Dica Bellacosa: números aleatórios são pseudoaleatórios — isso importa. 

Explore gráficos simples ou contagens de frequência. 

Esse exercício treina pensamento probabilístico e análise de resultados. 

Padawan que domina simulação consegue prever comportamentos complexos.


📖 Lab010 - Contando Palavras — Mineração de Texto

Processar texto é como analisar relatórios gigantes de sistema. 

Aqui você aprende a dividir, normalizar e contar ocorrências. 

Curiosidade: motores de busca começaram com técnicas simples de frequência. 

Easter egg: ignore pontuação para resultados mais precisos. 

Dica de mestre: use dicionários como tabelas de contagem. 

Explore livros, logs ou artigos e descubra padrões. 

Esse exercício é a base de NLP e análise de dados textuais. 

Padawan que entende texto entende comunicação digital.


🔐 Lab011 - Criando Senhas — Guardião do Acesso

Segurança começa com boas credenciais. 

Este desafio ensina geração aleatória segura e regras de complexidade. 

Curiosidade: a biblioteca secrets foi criada para substituir métodos inseguros. 

Easter egg: combine letras, números e símbolos para aumentar entropia. 

Dica Bellacosa: nunca armazene senhas em texto puro. 

Explore tamanhos e políticas diferentes. 

Esse exercício conecta programação com cibersegurança — área crítica no mundo moderno. 

Padawan que protege acessos protege sistemas inteiros.


📊 Lab012 - Unindo CSVs — ETL do Dia a Dia

CSV é o “cartão perfurado” do século XXI. 

Aqui você aprende a ler, combinar e consolidar dados tabulares. 

Curiosidade: grande parte da integração empresarial ainda passa por arquivos simples. 

Easter egg: teste arquivos com colunas diferentes e trate inconsistências. 

Dica de veterano: dados sujos são regra, não exceção. 

Explore bibliotecas padrão ou pandas. Esse exercício simula tarefas reais de BI e análise. 

Padawan que domina dados domina decisões.


🧩 Lab013 - Resolvendo Sudoku — O Desafio dos Mestres

Sudoku exige busca sistemática e backtracking — técnica poderosa usada em IA e otimização.

 Curiosidade: problemas de restrição aparecem em logística, planejamento e escalonamento. 

Easter egg: visualize o tabuleiro a cada tentativa para entender o processo. 

Dica Bellacosa: recursão é linda, mas pode consumir recursos — monitore. 

Explore versões maiores ou diferentes heurísticas. Esse exercício eleva seu raciocínio algorítmico a outro nível. 

Padawan que resolve Sudoku com código está próximo do grau Jedi.


📦 Lab014 - Criando Arquivos ZIP — Compactação Operacional

Compactar arquivos economiza espaço e facilita transporte — ontem em fitas, hoje em ZIP. 

Você aprenderá a agrupar e comprimir diretórios automaticamente. 

Curiosidade: backups automatizados dependem muito desse tipo de rotina. 

Easter egg: inclua timestamp no nome do arquivo para versionamento. 

Dica de mestre: verifique integridade após criar o ZIP. 

Explore exclusão de arquivos temporários e logs. Esse exercício é perfeito para scripts administrativos. 

Padawan que automatiza backups dorme tranquilo.


🌐 Lab015 - Baixando Arquivos Sequenciais — Robô da Rede

Aqui nasce o coletor automático de dados. 

Você aprenderá a baixar múltiplos arquivos seguindo um padrão — útil para relatórios diários ou datasets públicos. 

Curiosidade: muitas integrações corporativas ainda dependem de downloads programados. 

Easter egg: trate falhas de conexão e retomada. 

Dica Bellacosa: respeite limites e políticas dos servidores. 

Explore paralelismo leve para acelerar. Esse exercício é a base de scraping e ingestão de dados. 

Padawan que domina downloads domina informação.


🏁 Mensagem Final do Mestre

Padawan, Python não é apenas uma linguagem — é um canivete suíço digital. 

Cada script acima é uma peça do seu sabre de luz profissional. Pratique, quebre, melhore, automatize.

Código bom é código usado. Código excelente é código que resolve problema real.

terça-feira, 3 de março de 2026

☕ O Dia em que um Padawan COBOL Enfrentou o Teste Avançado… e Descobriu os Segredos do Mainframe

 

Bellacosa Mainframe e o teste de cobol para padawan

☕ O Dia em que um Padawan COBOL Enfrentou o Teste Avançado… e Descobriu os Segredos do Mainframe

“Muito antes de microservices, Kubernetes e modinhas passageiras, havia tabelas OCCURS, SORTs colossais e programas que movem bilhões… silenciosamente.”

Se você é um Padawan do COBOL, prepare seu café ☕ — hoje vamos atravessar uma jornada digna de Jedi Mainframe.

Este artigo é inspirado em um cenário real: um teste avançado de COBOL cobrindo tabelas, SORT, subprogramas, comunicação interprogramas e OO COBOL.

E sim… isso é exatamente o que sustenta bancos, seguradoras e governos.


🧠 Capítulo 1 — A Força das Tabelas OCCURS

Todo Padawan descobre cedo que:

COBOL não tem “arrays”… tem tabelas.

Exemplo clássico:

01 Salary-Table.
02 Salary PIC 9(4) OCCURS 100 TIMES.

Para zerar a tabela:

MOVE 1 TO Counter
PERFORM UNTIL Counter > 100
MOVE 0 TO Salary(Counter)
ADD 1 TO Counter
END-PERFORM

🧩 Easter Egg #1 — O jeito Jedi

Um Mestre COBOL faria:

INITIALIZE Salary-Table

💥 Mesma coisa. Menos CPU. Mais elegância.


🏥 Capítulo 2 — Tabelas Multinível: O Labirinto dos Índices

Considere:

01 Patient-Table.
02 Ward OCCURS 10 TIMES.
03 Patient OCCURS 120 TIMES.
04 Patient-Name PIC X(50).

Para acessar:

Patient-Name(ward-index, patient-index)

👉 Ordem: de fora para dentro

⚠️ Pegadinha mortal

Se errar a ordem ou quantidade de subscritos:

💥 Pode sobrescrever memória
💥 Pode causar S0C4
💥 Pode derrubar um batch inteiro às 3h da manhã


⚡ Capítulo 3 — Índices vs Subscripts: Velocidade da Luz

Padawans usam:

Salary(5)

Mestres usam:

SET idx TO 5
Salary(idx)

Porque:

CaracterísticaSubscriptIndex
TipoNúmeroOffset
PerformanceMédiaAlta
Uso em SEARCH ALL

🧩 Easter Egg #2

Índices não podem receber MOVE:

MOVE 1 TO idx *> ERRO
SET idx TO 1 *> CORRETO

🔍 Capítulo 4 — SEARCH vs SEARCH ALL

🐢 SEARCH (sequencial)

Procura um a um.

🚀 SEARCH ALL (binário)

Divide ao meio repetidamente.

Mas exige:

✔️ Tabela ordenada
✔️ Índice
✔️ Chave correta

Exemplo:

SEARCH ALL Stock
WHEN Stock-Symbol(idx) = "IBM"
PERFORM Found
END-SEARCH

🧩 Curiosidade histórica

Em grandes bancos:

SEARCH ALL pode reduzir milhões de comparações para poucas dezenas.


🔄 Capítulo 5 — SORT: O Motor Invisível do Batch

O SORT interno envolve três arquivos:

1️⃣ Entrada
2️⃣ Work file (SD)
3️⃣ Saída

SORT Sort-Work
ON ASCENDING KEY Customer-ID
USING Input-File
GIVING Output-File

🔥 Regra de ouro

O Sort Work File:

❌ Não é aberto
❌ Não é fechado
❌ Não é manipulado diretamente

👉 O sistema cuida disso.


🧪 Capítulo 6 — INPUT/OUTPUT PROCEDURE: Magia Avançada

Sem USING/GIVING, você controla tudo:

Entrada → RELEASE

RELEASE Sort-Record

Saída → RETURN

RETURN Sort-Work

💡 Isso permite filtrar, transformar ou gerar dados durante o SORT.


🧩 Capítulo 7 — Subprogramas: Modularidade Jedi

Chamador:

CALL "PROCESS-1" USING parm-area

Subprograma:

LINKAGE SECTION.
01 parm-area PIC X(100).

PROCEDURE DIVISION USING parm-area.

🔥 Regra importante

Por padrão:

👉 Parâmetros são BY REFERENCE
👉 Alterações retornam ao chamador


🌐 Capítulo 8 — Comunicação entre Programas

Tipos de dados compartilhados:

TipoEscopo
GLOBALPrograma + subprogramas embedded
EXTERNALTodo o run unit
LOCALApenas o programa

🧩 Easter Egg #3

EXTERNAL é como memória compartilhada “secreta” entre módulos.

Usar demais = pesadelo de manutenção.


🧬 Capítulo 9 — OO COBOL: O Lado Moderno da Força

Sim, COBOL também tem:

✔️ Classes
✔️ Objetos
✔️ Herança
✔️ Métodos
✔️ Factory

Exemplo simplificado:

CLASS-ID. Account.

FACTORY.
WORKING-STORAGE SECTION.
01 Interest PIC 9V99.

OBJECT.
WORKING-STORAGE SECTION.
01 Balance PIC 9(7)V99.

🔥 Diferença crucial

SeçãoPapel
FACTORYNível classe (static)
OBJECTNível instância

⚔️ Capítulo 10 — INVOKE vs CALL

Padawan erra:

CALL obj "method"

Mestre usa:

INVOKE obj "method"

👉 CALL → programas
👉 INVOKE → métodos OO


☕ Epílogo — O Verdadeiro Poder do COBOL

Após atravessar tabelas, SORTs, subprogramas e OO…

O Padawan percebe:

COBOL não é antigo.
COBOL é maduro.

Ele roda onde:

💰 O dinheiro circula
🏦 As transações acontecem
🌍 O mundo confia


🧠 Curiosidade Final (Easter Egg Supremo)

Estima-se que:

Mais de 70% das transações financeiras globais ainda passam por sistemas COBOL.

Enquanto você lia este artigo…

Provavelmente bilhões foram movimentados por código parecido com os exemplos acima.


🚀 Se você chegou até aqui…

Você já não é apenas um Padawan.

Está iniciando o caminho para:

🥋 Mestre do Mainframe

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

domingo, 1 de março de 2026

☕ Se você NÃO domina SORT em COBOL… o Batch vai te dominar

 

Bellacosa Mainframe dominando o sort em COBOL mesmo sem usar

☕ “Se você NÃO domina SORT em COBOL… o Batch vai te dominar”

O poder silencioso que move o coração do Mainframe (Guia para Padawans 🛰️)

“Ordenar dados não é detalhe. É infraestrutura invisível.”

Se você está começando no mundo do mainframe — jovem Padawan — prepare-se para descobrir uma das habilidades mais subestimadas e mais poderosas do COBOL clássico: File Sorting 💾🏛️.

Antes de bancos distribuídos, Spark, Data Lakes e buzzwords da moda…

👉 O mundo corporativo rodava — e ainda roda — sobre arquivos ordenados.

E no z/OS, isso é uma arte.


🧠 Por que SORT é tão importante?

Porque quase todo processamento batch depende disso:

🏦 Extratos bancários
💰 Fechamento contábil
📊 Consolidação de dados
📦 ETL legado
🧾 Billing
📡 Integração entre sistemas

Sem ordenação, você não consegue:

✔ Agrupar dados
✔ Detectar duplicidades
✔ Fazer merges eficientes
✔ Produzir relatórios sequenciais
✔ Atualizar arquivos mestre

Sorting é a base do processamento sequencial.


🏛️ O Modelo Sagrado dos 3 Arquivos

Todo Padawan deve decorar isto:

Input file → Sort work file → Output file
PapelDescriptor COBOLFunção
📥 EntradaFDDados brutos
🛠️ TrabalhoSDÁrea interna do sort
📤 SaídaFDDados ordenados

👉 O work file usa SD — Sort Description, não FD.

💡 Easter egg histórico: SD existe desde os primórdios do COBOL, muito antes do COBOL-85.


⚙️ Exemplo mínimo — SORT básico

🧱 Definições

FD Unsorted-Sales-File.
01 Unsorted-Sales-Record PIC X(100).

FD Sorted-Sales-File.
01 Sorted-Sales-Record PIC X(100).

SD Sort-Work-File.
01 Sort-Work-Record.
02 SalesClerk-ID PIC 9(6).
02 Filler PIC X(94).

🚀 O comando SORT

SORT Sort-Work-File
ON ASCENDING KEY SalesClerk-ID
USING Unsorted-Sales-File
GIVING Sorted-Sales-File.

Simples. Poderoso. Antigo. E ainda imbatível.


🔥 USING e GIVING — a força do fluxo

CláusulaSignificado
USINGArquivo de entrada
GIVINGArquivo de saída

👉 O SORT abre e fecha esses arquivos automaticamente.

💡 Curiosidade: você pode usar múltiplos arquivos em USING ou GIVING.


🧩 O verdadeiro poder: Sort Procedures

Quando você evolui de Padawan para Jedi Batch, descobre isto:

👉 Você pode controlar o sort antes e depois.


📥 INPUT PROCEDURE — o produtor

Fluxo:

Input file → Input Procedure → Sort

Serve para:

✔ Filtrar registros
✔ Combinar múltiplos arquivos
✔ Converter layouts
✔ Gerar dados dinamicamente

🔑 Comando obrigatório: RELEASE

MOVE Input-Record TO Sort-Work-Record
RELEASE Sort-Work-Record

Sem RELEASE → o sort não recebe nada.


📤 OUTPUT PROCEDURE — o consumidor

Fluxo:

Sort → Output Procedure → Output file

Serve para:

✔ Formatar saída
✔ Criar múltiplos arquivos
✔ Calcular totais
✔ Produzir relatórios

🔑 Comando obrigatório: RETURN

RETURN Sort-Work-File
AT END MOVE 'Y' TO EOF
NOT AT END
MOVE Sort-Work-Record TO Output-Record
WRITE Output-Record
END-RETURN

⚡ Regra Jedi: RELEASE vs RETURN

AçãoComando
Enviar ao sortRELEASE
Receber do sortRETURN

Se inverter isso… o Batch vai punir você.


🧪 Exemplo completo com procedures

SORT Sort-Work-File
ON ASCENDING KEY Customer-ID
INPUT PROCEDURE IS Load-Records
OUTPUT PROCEDURE IS Write-Records

🧠 Insight profundo: o SD é o “formato interno”

O sort não usa diretamente os layouts dos arquivos.

Fluxo real:

Input record(s)
↓ (movidos/construídos)
Sort-Work-Record (SD)

Ordenação pelas chaves do SD

Output record(s)

👉 Por isso as chaves devem existir no SD.


💎 Curiosidades que impressionam em entrevistas

✔ SORT COBOL usa o utilitário do sistema (DFSORT/SYNCSORT)
✔ Pode lidar com volumes absurdos de dados
✔ Muitas vezes supera soluções modernas em throughput sequencial
✔ É determinístico e confiável
✔ Existe há mais de 60 anos

💡 Easter egg: DFSORT já fazia “Big Data” quando esse termo nem existia.


🏆 Quando usar SORT COBOL vs DFSORT JCL?

SituaçãoMelhor opção
Sort simples e reutilizávelDFSORT no JCL
Lógica complexa no programaSORT COBOL
Transformações avançadasProcedures
Performance máxima puraDFSORT externo

Na vida real de produção:

👉 A maioria dos sorts massivos é feita fora do COBOL.


🧘 Conselhos do Mestre Bellacosa para Padawans

☕ “Aprenda SORT cedo. Você vai usá-lo mais do que imagina.”

✔ Domine SD vs FD
✔ Entenda USING/GIVING
✔ Memorize RELEASE/RETURN
✔ Saiba quando usar procedures
✔ Pense em fluxo sequencial


🛰️ Conclusão — O poder invisível

Sorting não aparece em demos bonitas.

Não vira post viral.

Não tem hype.

Mas sem ele…

👉 O batch não roda
👉 O fechamento não fecha
👉 O banco não fecha o dia
👉 O sistema não entrega resultados

SORT é infraestrutura silenciosa.

E quem domina isso domina o processamento de dados no mainframe.

Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , é IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiências profissionais, conhecimento técnico, história da computação e práticas do universo mainframe para aproximar novas gerações das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988
GitHub LinkedIn
Inicializando conteúdo...