Translate

quinta-feira, 5 de março de 2026

O Computador Que Nunca Dorme: Jovem Padawan, Você Está Pronto Para Descobrir o Mainframe?

Bellacosa Mainframe apresenta ao jovem padawan o IBM Mainframe Z17


O Computador Que Nunca Dorme: Jovem Padawan, Você Está Pronto Para Descobrir o Mainframe?

Salve jovem padawan, se você chegou até aqui achando que mainframe é coisa de museu, prepare-se para o primeiro momento “puta que pariu” deste artigo. 😄

Todos os dias, quando você:

  • paga algo com cartão

  • faz um PIX

  • consulta seu saldo

  • compra uma passagem aérea

  • usa o aplicativo do banco

… existe uma probabilidade enorme de um mainframe estar trabalhando silenciosamente nos bastidores.

Sim, aquele computador gigante que muita gente acha que morreu nos anos 80 continua mais vivo do que nunca.

Aliás, ele não só está vivo como é responsável por algumas das transações mais críticas do planeta.

Bem-vindo, jovem padawan.
Hoje você vai conhecer a Stack Mainframe.


🧠 Primeiro: o que diabos é um Mainframe?

Imagine um computador que foi criado com um único objetivo:

Nunca parar.

Enquanto seu notebook trava.
Enquanto servidores reiniciam.
Enquanto clusters quebram.

O mainframe simplesmente continua.

Não estamos falando de uptime de 99%.
Estamos falando de 99.999% ou mais.

Esse tipo de máquina foi projetado para:

  • bancos

  • seguradoras

  • companhias aéreas

  • governos

  • bolsas de valores

Ou seja: lugares onde parar significa perder milhões por minuto.

Curiosidade rápida:

Um único mainframe moderno pode processar milhões de transações por segundo.

Sim.

Milhões.

E com consistência absurda.


🚀 O segundo momento “puta que pariu”

Sabia que grande parte das transações financeiras do planeta passam por mainframes?

Algumas estimativas indicam que:

  • 90% das transações de cartão de crédito

  • grande parte das transações bancárias globais

passam por sistemas rodando em mainframe.

Ou seja:

Quando você paga um café ☕
um mainframe pode estar validando aquela transação.


🏛️ A Stack Mainframe (O Ecossistema)

Agora vamos falar da Stack Mainframe.

Pense nela como um ecossistema de tecnologias extremamente robustas.

Um ambiente clássico pode ter:

Hardware

  • IBM Z Systems

Sistema Operacional

  • z/OS

Linguagens

  • COBOL

  • PL/I

  • Assembler

  • REXX

Bancos de Dados

  • DB2

  • IMS

Monitor Transacional

  • CICS

Processamento em Lote

  • JCL + Batch

Armazenamento

  • VSAM

Sim.

Parece muita coisa.

Mas calma, jovem padawan.

A força vem com o tempo.


🧙‍♂️ A Arquitetura Jedi do Mainframe

No mundo distribuído você pensa em:

  • servidor

  • aplicação

  • banco

No mainframe o pensamento é diferente.

Ele é um ecossistema altamente integrado.

Temos dois grandes modos de processamento:

🟢 Online (transacional)

Quando você:

  • consulta saldo

  • faz transferência

  • compra algo

Isso geralmente roda em:

CICS + DB2

E tudo acontece em milissegundos.


🔵 Batch (processamento em lote)

Agora imagine:

  • cálculo de milhões de extratos

  • fechamento bancário

  • processamento de folha

Isso roda em Batch Jobs.

E quem controla isso?

Uma pequena coisa chamada:

JCL (Job Control Language).

Sim.

Uma linguagem criada nos anos 60 que ainda controla processos gigantescos hoje.


🤯 Easter Egg Tecnológico

Aqui vai uma curiosidade que sempre faz alunos arregalarem os olhos.

O console que liga e gerencia o mainframe chama-se:

HMC — Hardware Management Console

Agora segura essa:

Boa parte da interface dele roda com tecnologias modernas.

Sim.

Java.
JavaScript.

Ou seja:

O computador que processa bilhões de dólares por dia pode ser ligado por uma interface web rodando Java e JS.

Pausa dramática.

Respira.

Puta que pariu, né?


🧑‍💻 O que um Jovem Padawan precisa aprender?

Se você quer entrar nesse mundo, não precisa aprender tudo de uma vez.

Comece pelos pilares da Stack Mainframe.


1️⃣ TSO/ISPF

É o ambiente clássico de trabalho.

Ali você:

  • navega datasets

  • edita código

  • submete jobs

  • analisa logs

Parece um editor antigo.

Mas é absurdamente produtivo.


2️⃣ JCL

JCL é o orquestrador do batch.

Com ele você define:

  • quais programas rodar

  • quais arquivos usar

  • qual ordem executar

Pense nele como um maestro de orquestra de processamento.


3️⃣ COBOL

O rei do processamento de negócios.

Criado em 1959.

E ainda hoje rodando sistemas críticos globais.

Por quê?

Porque ele é:

  • extremamente confiável

  • perfeito para regras de negócio

  • fácil de ler

E sim.

Existe muito COBOL moderno integrado com APIs e JSON.


4️⃣ DB2

O banco de dados relacional do mundo mainframe.

Rápido.
Robusto.
Integrado.

E usado em aplicações gigantes.


5️⃣ CICS

Esse é o coração das aplicações online.

O CICS (Customer Information Control System) é o monitor transacional que:

  • gerencia milhares de usuários simultâneos

  • executa programas

  • controla transações

Ele é praticamente um servidor de aplicações ultra otimizado.


🧩 Curiosidades que poucos contam

Aqui vão algumas pérolas da cultura mainframe.

💡 Curiosidade 1

Mainframes podem rodar Linux também.

Sim.

Linux no mainframe.


💡 Curiosidade 2

Uma única máquina pode rodar centenas de sistemas isolados usando virtualização.

Muito antes da moda do cloud.


💡 Curiosidade 3

O conceito de transação ACID forte nasceu e amadureceu fortemente no mundo mainframe.

Muito do que usamos hoje em bancos distribuídos veio dali.


💡 Curiosidade 4

Existem sistemas COBOL que rodam há mais de 40 anos sem reescrita completa.

Porque funcionam.

E funcionam bem.


🧠 O verdadeiro segredo do Mainframe

Agora vem a parte que pouca gente fala.

Mainframe não é apenas tecnologia.

É engenharia de confiabilidade.

Tudo nele foi pensado para:

  • não perder dados

  • não parar

  • escalar absurdamente

  • manter consistência

É um mundo onde erros custam caro.

Por isso o nível de engenharia é altíssimo.


🧑‍🚀 Oportunidade para novos Jedi

Existe algo muito interessante acontecendo agora.

O mercado precisa de nova geração de profissionais mainframe.

Porque muitos especialistas estão:

  • aposentando

  • migrando de carreira

E as empresas continuam dependendo dessas plataformas.

Resultado?

Uma oportunidade gigante para quem entra agora.

Sim.

Você pode aprender tecnologias modernas.

Mas também pode aprender a engenharia que sustenta a economia global.


🌌 O Convite

Se você chegou até aqui, jovem padawan, talvez algo tenha despertado.

Talvez curiosidade.

Talvez surpresa.

Talvez aquele pensamento:

“Caramba… eu não fazia ideia que isso existia.”

E isso é só o começo.

O universo mainframe tem:

  • arquitetura fascinante

  • sistemas gigantes

  • engenharia elegante

  • histórias incríveis

Então fica aqui o convite.

Venha conhecer a Stack Mainframe.

Aprenda:

  • JCL

  • COBOL

  • CICS

  • DB2

  • z/OS

Explore.

Pergunte.

Experimente.

Porque atrás daquela tela preta com letras verdes existe um dos ambientes computacionais mais poderosos já criados.

E quem sabe…

Da próxima vez que alguém perguntar:

“Mainframe ainda existe?”

Você possa sorrir e responder:

“Existe… e provavelmente está processando o dinheiro do seu café agora.” ☕💻






















https://www.linkedin.com/pulse/o-computador-que-nunca-dorme-jovem-padawan-voc%25C3%25AA-est%25C3%25A1-pronto-vagner-ru0ve



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.