Translate

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

quinta-feira, 26 de março de 2026

☕ O Segredo Mais Importante do z/OS Que Quase Ninguém Explica: Address Spaces & Tasks (O “Multiverso” do Mainframe)

 

Bellacosa Mainframe explorando address spaces & tasks

☕ O Segredo Mais Importante do z/OS Que Quase Ninguém Explica: Address Spaces & Tasks (O “Multiverso” do Mainframe)

🧙‍♂️ Padawan, aproxime-se.
Se você entender profundamente Address Spaces e Tasks, você atravessa a porta de entrada do mundo Sysprog. Sem isso, z/OS parece magia. Com isso, vira engenharia.

Pegue seu café. Vamos abrir o capô do mainframe. ☕


🌌 Capítulo 1 — O z/OS Não Executa Programas. Executa Universos.

Em um PC comum você pensa:

“Vou rodar um programa.”

No z/OS, o raciocínio é outro:

⭐ “Vou criar um ambiente isolado onde programas poderão existir.”

Esse ambiente é o:

🏢 Address Space

Ele contém:

  • Memória virtual privada
  • Identidade de segurança
  • Recursos
  • Estruturas de controle
  • Tasks (unidades de execução)
  • Programas rodando

👉 Tudo roda dentro de um address space.

Exceto funções internas do kernel — e isso é assunto para um Jedi Master.


🔎 Como ver o “multiverso” ao vivo

Abra o SDSF:

SDSF → DA

Cada linha é um universo independente:

  • MASTER
  • JES2
  • TCPIP
  • IBMUSER
  • CICS
  • Jobs batch
  • Processos UNIX

Um sistema real pode ter centenas.

🥚 Easter Egg #1:
O MASTER é sempre ASID 1.
Se ele cair… você tem problemas maiores do que um dump.


🔒 Capítulo 2 — O Isolamento Que Salvou o Mainframe

Cada address space tem memória privada.

Um programa em A NÃO pode acessar a memória de B.

Isso evita:

  • Corrupção entre aplicações
  • Vazamento de dados
  • Quedas sistêmicas
  • Caos total

🧠 Mas há um truque genial…

Cada espaço acha que possui toda a memória.

Sim. Toda.


🧭 Virtual Memory — A Ilusão Controlada

Dois programas podem usar o mesmo endereço:

x'2795'

E acessar memórias físicas diferentes.

Isso ocorre graças à:

⭐ DAT — Dynamic Address Translation

Virtual → Page Tables → Real Memory

👉 Daí o nome Address Space.

Cada universo tem seus próprios endereços.


🤝 Compartilhamento? Só com permissão

Quando necessário:

  • Common Storage (CSA/ECSA)
  • Cross-memory services
  • Program Call
  • Serviços autorizados

Exemplo clássico:

CICS falando com DB2.


🧵 Capítulo 3 — Dentro do Universo: Tasks

Um address space sozinho não executa nada.

Quem executa são:

🧵 Tasks (TCBs ou SRBs)

⭐ Task = menor unidade despachável

O dispatcher agenda tasks nos CPUs.


⚡ Paralelismo real

Se houver 10 CPUs → até 10 tasks executando simultaneamente.

Mas…

🥚 Easter Egg #2:
A maioria das tasks está esperando algo — não executando.

Porque sistemas corporativos são I/O-bound.


⏳ Estados típicos

🟢 Running

No CPU agora

🟡 Ready

Quer CPU, mas aguarda

🔴 Waiting

Esperando evento:

  • I/O
  • Lock
  • Resposta externa
  • Timer
  • Memória

📦 Uma task pode executar vários programas

Mas:

❗ Apenas um por vez

Exemplo COBOL clássico:

MAIN
CALL VALIDATE
CALL CALCULATE
CALL UPDATE
CALL PRINT
STOP RUN

Tudo na mesma task.


⚙️ Quer paralelismo? Crie novas tasks.

ATTACH → nova TCB

Exemplo batch paralelo:

Task A → Arquivo1
Task B → Arquivo2
Task C → Arquivo3

🐧 Padawans vindos do UNIX

Boa analogia:

z/OSUNIX
Address SpaceProcess
Task (TCB)Thread

E sim:

⭐ Cada thread USS é uma task.


👑 Capítulo 4 — A Task Raiz: RCT

Quando um address space nasce:

  1. Cria-se a Region Control Task (RCT)
  2. Outras tasks são iniciadas
  3. Programas executam nelas

Hierarquia:

Address Space
└── RCT
├── Task A
└── Task B

🥚 Easter Egg #3:
Se a RCT terminar… o address space inteiro termina.

Sem órfãos. Sem bagunça.


⚡ Capítulo 5 — O Primo Ninja: SRB

Existem dois tipos de tasks:

🧵 TCB — normal

Aplicações, batch, TSO, etc.

⚡ SRB — especial

Serviços do sistema.

Diferenças fundamentais:

TCBSRB
Pode esperarGeralmente não
Longo prazoCurto
LocalPode ser cross-memory
AplicaçõesSistema

SRBs são criados via:

SCHEDULE

Não automaticamente.


🧠 Capítulo 6 — Memória Compartilhada entre Tasks

Dentro do mesmo address space:

👉 Tasks compartilham memória.

Isso permite cooperação rápida.

Mas também risco.

Programas autorizados podem proteger áreas — aplicações comuns raramente fazem isso.


🏛️ Capítulo 7 — Como Address Spaces Nascem

Criados quando surge um workload independente:

  • IPL do sistema
  • START de serviço
  • Logon TSO
  • Job batch selecionado pelo JES
  • Processo UNIX iniciado

❌ NÃO quando:

  • Um programa começa
  • Um comando TSO é digitado
  • Uma subrotina é chamada

🥚 Easter Egg #4:
Criar address space é caro. z/OS evita fazer isso sem necessidade.


🧾 Capítulo 8 — ASCB, ASID e Jobname

Cada address space é registrado por um:

⭐ ASCB — Address Space Control Block

Contém:

  • ASID (ID interno)
  • Jobname (nome visível)
  • Ponteiros para TCBs
  • Estado
  • Dados de gerenciamento

Operador vê:

👉 JOBNAME

Sistema usa:

👉 ASID


👨‍💼 Capítulo 9 — Administração na Vida Real

Operadores controlam address spaces, não tasks.

Comandos típicos:

S TCPIP
P CICS
C JOB123
F JES2,QUIESCE

Tasks só entram em cena quando algo dá errado.


💥 Capítulo 10 — Por Que Isso Faz o Mainframe Ser o Mainframe

Essa arquitetura permite:

✔ Escalabilidade massiva
✔ Isolamento forte
✔ Alta disponibilidade
✔ Throughput absurdo
✔ Recuperação controlada
✔ Multi-tenant seguro


🏆 O Insight Jedi

🏢 Address Space = Ambiente

🧵 Task = Execução

💻 Program = Código executado

Ou, no idioma Bellacosa:

“O z/OS não roda programas.
Ele mantém universos onde programas vivem.”


☕ Missão do Padawan

Se você entendeu este artigo, já ultrapassou 80% dos iniciantes em mainframe.

O próximo passo é dominar:

  • Dispatching e WLM
  • Storage Manager
  • JES internals
  • Subsystems architecture
  • Dump analysis

💬 Último conselho

🧙‍♂️ “Quem entende Address Spaces e Tasks não apenas usa o z/OS… começa a pensar como ele.”


 

sexta-feira, 20 de março de 2026

🚀 Do COPY ao CORE Bancário: A Jornada Jedi de um Programa COBOL no z/OS (ou: como um .CBL vira dinheiro no mundo real)

Bellacosa Mainframe apresenta COBOL LE Enterprise


🚀 Do COPY ao CORE Bancário: A Jornada Jedi de um Programa COBOL no z/OS (ou: como um .CBL vira dinheiro no mundo real)

“Padawan, muitos escrevem código. Poucos entendem como ele realmente vive.” 💙

Se você acha que COBOL é só um DISPLAY "HELLO", prepare-se.
No mainframe, um programa não nasce pronto — ele passa por uma verdadeira linha de produção industrial de software.

Hoje vamos percorrer essa jornada completa, estilo Bellacosa Mainframe™, com:

🔥 Passo a passo real
🧠 Conceitos que diferenciam dev júnior de arquiteto
💎 Easter eggs históricos
🏦 Exemplos do mundo bancário
⚙️ Bastidores que ninguém te conta


🧙‍♂️ Capítulo 1 — O nascimento: o código fonte

Tudo começa com um membro em um PDS ou PDSE:

USER.COBOL.SOURCE(PROG1)

Exemplo simples:

IDENTIFICATION DIVISION.
PROGRAM-ID. CPRIME.

PROCEDURE DIVISION.
DISPLAY "MAY THE MAINFRAME BE WITH YOU".
STOP RUN.

💡 Curiosidade Jedi:
COBOL foi criado para ser legível por pessoas de negócio. Por isso parece “verbal”.


📚 Capítulo 2 — COPY: os pergaminhos antigos

Nenhum sistema corporativo vive sem COPYBOOKS.

COPY CLIENT-RECORD.

Esses artefatos ficam nas bibliotecas apontadas por:

//SYSLIB DD DSN=CORP.COPYLIB

💎 Easter egg:
Grandes bancos têm copybooks mais antigos que muitos desenvolvedores.


⚙️ Capítulo 3 — Compilação: o forno industrial (IGYCRCTL)

Agora entra o compilador Enterprise COBOL.

//COMPILE EXEC PGM=IGYCRCTL

📥 Entradas principais

DDFunção
SYSINCódigo fonte
SYSLIBCopybooks
SYSUTxÁrea de trabalho

📤 Saídas

DDResultado
SYSPRINTMensagens
SYSLINObject code

👉 O objeto ainda NÃO é executável.


🧠 Analogia moderna

MainframeLinux
Compilegcc -c
Objeto.o

💥 Capítulo 4 — O Binder: alquimia digital (IEWL)

Agora o objeto vira programa executável.

//LKED EXEC PGM=IEWL

📥 Entrada

SYSLIN → objeto compilado

📤 Saída

SYSLMOD → executável final

💎 Easter egg:
Antes do Binder moderno, isso se chamava “link-edit”.


📦 Program Object: o formato moderno

Hoje o resultado normalmente é um:

👉 Program Object em PDSE

Não mais um load module antigo.


🧬 Capítulo 5 — O espírito invisível: Language Environment (LE)

Aqui está o segredo que separa aprendizes de mestres.

💥 Programas COBOL não rodam sozinhos.

Eles precisam do LE.

O LE fornece:

✔️ Memória
✔️ Inicialização
✔️ Tratamento de erros
✔️ Serviços runtime
✔️ Interoperabilidade


🧠 Analogia suprema

PlataformaRuntime
JavaJVM
.NETCLR
z/OS⭐ LE

⚙️ Capítulo 6 — Opções de runtime (CEEOPTS)

Exemplo famoso:

ALL31(ON)

Permite usar memória acima da linha de 16 MB.

🧪 Override via JCL

//CEEOPTS DD *
ALL31(ON)
/*

🚫 Nunca no código COBOL.


🏦 Capítulo 7 — Onde o programa pode rodar?

Um único executável pode viver em vários mundos:

AmbienteUso típico
BatchProcessamento massivo
CICSTransações online
IMSSistemas críticos
Db2 SPLógica no banco
TSOExecução interativa
USSScripts UNIX

❌ System exit — proibido (sem LE)


🐧 Capítulo 8 — USS e o mundo moderno

Você também pode compilar no UNIX do z/OS:

cob2 -q'RENT,LIST' pgm1.cbl

💡 O mainframe também fala “Linux”.


🧩 Capítulo 9 — Compatibilidade histórica (o verdadeiro poder)

Enterprise COBOL consegue recompilar código:

✔️ VS COBOL II (anos 80)
✔️ COBOL for OS/390

Mas não diretamente:

❌ OS/VS COBOL
❌ COBOL-68 / COBOL-74

💥 Isso é o que mantém sistemas funcionando por décadas.


🧙‍♂️ Capítulo 10 — A verdadeira força do mainframe

Um programa COBOL pode:

💥 Processar milhões de transações por segundo
💥 Rodar por décadas sem reescrita
💥 Integrar com APIs modernas
💥 Conviver com código de 40 anos atrás


🏆 Pipeline final — a jornada completa

Source (.CBL)

Compile (IGYCRCTL)

Object module

Binder (IEWL)

Program Object

Execution (Batch / CICS / IMS / etc.)

💎 Easter egg final

💰 Grande parte do dinheiro do planeta passa por sistemas exatamente assim.

Cada saque, compra com cartão ou transferência:

👉 Pode estar executando código COBOL semelhante ao seu.


🧠 Conclusão 

Padawan, aprender COBOL não é aprender uma linguagem.

É entender uma arquitetura de computação empresarial completa, refinada por mais de meio século.

🚀 O código é apenas o começo.
🏗️ O processo é o verdadeiro poder.
💙 O mainframe é a fábrica invisível do mundo moderno.



sábado, 14 de março de 2026

☕ “Você NÃO sabe COBOL (ainda)” — O Caminho Secreto que Separa um Programador de um Jedi do Mainframe

 

Bellacosa Mainframe mostra algo que você não sabe sobre Cobol

☕ “Você NÃO sabe COBOL (ainda)” — O Caminho Secreto que Separa um Programador de um Jedi do Mainframe

Se você acha que terminou COBOL porque passou nos módulos… sente-se. O treinamento agora começa de verdade.


🧙‍♂️ Padawan, parabéns… mas cuidado com a ilusão

Você completou a trilha de COBOL Programming Series.

Pontuações altas. Mastery Tests vencidos. Badges conquistados.

Isso é excelente.

Mas aqui vai a verdade que ninguém conta nos cursos:

🎯 Saber COBOL acadêmico não é o mesmo que sobreviver ao COBOL de produção.

No mundo real do z/OS, o código que move bancos, seguradoras e governos não é bonito, nem simples, nem didático.

Ele é:

  • Antigo e moderno ao mesmo tempo
  • Otimizado para hardware específico
  • Cheio de convenções invisíveis
  • Integrado a um ecossistema gigantesco

Bem-vindo ao verdadeiro treinamento.


🗺️ O mapa do território mainframe

Você dominou os fundamentos:

✔ Estrutura do programa
✔ Controle de fluxo
✔ Arquivos sequenciais, indexados e relativos
✔ Tabelas e indexação
✔ Sort
✔ Subprogramas
✔ OO COBOL

Isso equivale a aprender a pilotar… num simulador.

Agora entram os sistemas reais:

🧩 Enterprise COBOL

O compilador corporativo — onde performance e compatibilidade mandam.

🗄️ IMS + DL/I

Banco hierárquico que ainda roda sistemas críticos.

🧠 Language Environment (LE)

O “sistema nervoso” que gerencia runtime, memória e interoperabilidade.

💡 Easter egg mainframe: LE é o motivo pelo qual programas COBOL, PL/I e C podem coexistir no z/OS.


⚔️ O primeiro choque do mundo real

Padawan, em produção você encontrará coisas como:

  • Programas com 20.000 linhas
  • COPYBOOKs gigantes
  • Convenções locais obscuras
  • Dependências invisíveis
  • Arquivos com layouts herdados de décadas

E o mais importante:

🧨 Você não escreve do zero. Você mantém o que já existe.


🧪 Exemplo realista (bem diferente do livro)

Nos cursos, você viu algo assim:

READ CLIENT-FILE
AT END MOVE "Y" TO EOF
END-READ

No mundo real, pode virar algo como:

READ ARQCLI INTO WS-REG-CLI
INVALID KEY
MOVE 16 TO WS-ABEND-CODE
PERFORM 9000-TRATA-ERRO
NOT INVALID KEY
ADD 1 TO WS-QTD-LIDOS
END-READ

🧠 O que mudou?

  • Tratamento de erro corporativo
  • Contadores operacionais
  • Integração com rotinas padrão
  • Preparação para auditoria
  • Possível integração com CICS ou batch control

👉 O código não está só “lendo um arquivo”.
👉 Ele está participando de um ecossistema.


🪄 Passo a passo para evoluir de Padawan → Cavaleiro

🥇 Passo 1 — Domine o compilador Enterprise COBOL

Não basta saber a linguagem.

Você precisa entender:

  • Opções de compilação
  • Otimizações
  • Compatibilidade com versões antigas
  • Impacto no runtime

💡 Curiosidade: mudar uma flag de compilação pode alterar performance em ordens de magnitude.


🥈 Passo 2 — Entenda o Language Environment

LE controla:

  • Stack
  • Heap
  • Condições de erro
  • Interoperabilidade entre linguagens

Sem LE, você depura no escuro.


🥉 Passo 3 — Aprenda acesso a bancos reais

Principalmente:

  • DB2 (relacional)
  • IMS (hierárquico)

Exemplo DL/I (IMS)

CALL 'CBLTDLI' USING
GU
PCB-MASK
SEGMENT-AREA
SSA.

Sim, parece críptico.
Sim, move sistemas gigantes.

🗄️ Easter egg histórico: IMS nasceu para o programa Apollo da NASA.


🧩 Por que IMS ainda existe?

Porque ele é:

  • Extremamente rápido
  • Ultra estável
  • Determinístico
  • Ideal para workloads massivos

E substituir sistemas críticos custa bilhões.


🧠 O segredo que separa os mestres

Programadores iniciantes pensam:

“Como escrever código COBOL?”

Especialistas pensam:

“Como este programa se encaixa no sistema?”

Isso inclui:

  • JCL
  • Agendadores
  • Segurança (RACF)
  • Arquivos VSAM
  • Logs
  • Recovery
  • Performance batch

COBOL é apenas uma peça.


☕ Curiosidades que poucos contam

🔹 OO COBOL existe desde 2002 e quase ninguém usa
🔹 Muitas empresas ainda compilam código escrito nos anos 80
🔹 O z/OS consegue rodar programas de décadas atrás sem recompilar
🔹 Batch noturno ainda move trilhões de dólares por dia

💰 Se o mainframe parar, o mundo financeiro sente.


🧙‍♂️ Teste do Padawan

Se você consegue responder a estas perguntas, está evoluindo:

  • Como o programa será executado? (batch, online, IMS, CICS)
  • Onde estão os dados?
  • Qual o volume esperado?
  • O que acontece se falhar?
  • Como recuperar?

Se não sabe… ainda está no templo Jedi.


🏁 Conclusão — O verdadeiro início

Você não terminou COBOL.

Você desbloqueou o acesso ao mundo real.

🚀 O caminho agora é Enterprise COBOL → LE → DB2/IMS → CICS → Performance

Quando dominar isso, você não será apenas um programador.

Será um guardião de sistemas que sustentam economias inteiras.


☕ Mensagem final ao Padawan

Se você chegou até aqui:

👉 Continue.
👉 Aprofunde.
👉 Explore o stack completo.

Porque no universo mainframe:

💎 Experiência vale mais que hype.
💎 Estabilidade vale mais que novidade.
💎 Conhecimento profundo vale mais que moda.

E lembre-se…

O mainframe não é antigo. Ele é eterno.

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

terça-feira, 17 de fevereiro de 2026

🔥 criar versão COBOL hands-on (CICS + DB2)

 

Bellacosa Mainframe lab seu cics sob ataque


🔥💀 COBOL SECURITY LAB — “SEU CICS SOB ATAQUE”

Hands-on prático com CICS + DB2 para aprender segurança na marra


☕ INTRODUÇÃO

Você não vai só aprender…

👉 você vai:

  • explorar vulnerabilidade
  • corrigir
  • validar

💣 exatamente como um atacante faria


🧪 LAB 1 — SQL INJECTION NO DB2

🎯 Objetivo

Mostrar como um COBOL pode ser vulnerável


💻 Código vulnerável

IDENTIFICATION DIVISION.
PROGRAM-ID. LOGIN.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-USER PIC X(20).
01 WS-PASS PIC X(20).

PROCEDURE DIVISION.

EXEC SQL
SELECT NAME INTO :WS-USER
FROM USERS
WHERE NAME = :WS-USER
AND PASSWORD = :WS-PASS
END-EXEC.

💣 Ataque

Input:

' OR '1'='1

💥 Resultado

👉 bypass de autenticação


✅ Correção

IF WS-USER NOT ALPHABETIC
DISPLAY "INVALID INPUT"
STOP RUN
END-IF.

💬 Insight

👉 validação é a primeira defesa


🧪 LAB 2 — BUFFER / TAMANHO DE INPUT

🎯 Objetivo

Evitar overflow e dados inválidos


💻 Problema

01 WS-NAME PIC X(10).

Input:

AAAAAAAAAAAAAAAAAAAAAAAAAAAA

💥 Resultado

👉 truncamento / corrupção


✅ Correção

IF LENGTH OF WS-NAME > 10
DISPLAY "INPUT TOO LONG"
END-IF.

🧪 LAB 3 — HARDCODED PASSWORD

🎯 Objetivo

Eliminar segredo no código


❌ Código

MOVE "DB123456" TO WS-PASS.

💣 Problema

👉 vazamento garantido


✅ Correção

  • usar RACF
  • usar external security

👉 RACF


🧪 LAB 4 — VALIDAÇÃO DE COMMAREA (CICS)

🎯 Objetivo

Proteger entrada CICS


💻 Código vulnerável

MOVE DFHCOMMAREA TO WS-DATA.

💣 Problema

👉 dados maliciosos


✅ Correção

IF EIBCALEN = 0
DISPLAY "NO DATA"
RETURN
END-IF.

🧪 LAB 5 — LOGGING SEGURO

🎯 Objetivo

Evitar vazamento de dados


❌ Errado

DISPLAY "PASSWORD: " WS-PASS.

💣 Problema

👉 senha em log


✅ Correção

DISPLAY "LOGIN ATTEMPT".

🧪 LAB 6 — CONTROLE DE ACESSO (RACF)

🎯 Objetivo

Simular autorização


💻 Exemplo

CALL 'RACROUTE' USING ...

💬 Resultado

👉 só usuários autorizados acessam


🧪 LAB 7 — INTEGRAÇÃO COM API (RISCO REAL)

🎯 Objetivo

Simular API via CICS


💣 Problema

👉 input externo não confiável


✅ Solução

  • validar JSON
  • sanitizar campos

🧪 LAB 8 — TRATAMENTO DE ERRO

🎯 Objetivo

Não expor sistema


❌ Errado

DISPLAY SQLCODE.

💣 Problema

👉 revela estrutura interna


✅ Correto

DISPLAY "ERROR OCCURRED".

🧪 LAB 9 — CONTROLE DE TRANSAÇÃO

🎯 Objetivo

Evitar inconsistência


💻 Uso

EXEC CICS SYNCPOINT
END-EXEC.

💬 Importante

👉 protege integridade


🧪 LAB 10 — SIMULAR ATAQUE REAL

🎯 Objetivo

Mentalidade hacker


💻 Faça

  • testar inputs inválidos
  • tentar bypass
  • observar comportamento

💥 Resultado

👉 descobrir falhas reais


🧠 VISÃO FINAL

Você fez:

  • ataque
  • defesa
  • validação

👉 isso é segurança real


💬 FRASE FINAL

“Mainframe não é seguro por ser forte…
é seguro quando você fecha as portas certas.”