💾 COBOL + DB2: O Encontro de Gigantes Que Ainda Move o Mundo
Salve jovem padawan, vamos aprofundar um pouco mais na Stack Mainframe, hoje farei uma pequena preview sobre dados estruturados e um dos melhores SGBD do mercado. Você pode até achar que o COBOL é coisa do passado. Mas e se eu te dissesse que mais de 70% das transações financeiras do mundo ainda passam por código COBOL rodando em sistemas mainframe com DB2? 🤯 Aposentados, funcionários públicos, correntistas bancários e muito mais, sem essa dupla do barulho, o serviço seria mais lento e custoso para a comunidade.
Sim, enquanto você faz um PIX, passa o cartão ou declara seu imposto de renda, há grandes chances de um programa COBOL estar trabalhando por trás — e muito provavelmente lendo ou gravando dados num banco DB2, não podemos esquecer do VSAM, mas isso é tema para outro artigo.
Se você está começando no universo do Mainframe, entender como COBOL acessa dados no DB2 é um divisor de águas. Seja num processo Batch ou Online. Vamos nessa?
🧠 Entendendo os Personagens
O que é COBOL?
COBOL (Common Business Oriented Language) é uma linguagem robusta, legível e usada há décadas para processamento de dados em larga escala.
E o que é DB2?
DB2 é o sistema de gerenciamento de banco de dados relacional da IBM, otimizado para Mainframe (z/OS). É o parceiro natural do COBOL em ambientes corporativos de missão crítica.
🧩 Como COBOL conversa com o DB2?
A mágica acontece por meio do SQL embutido (Embedded SQL). É como se você colocasse comandos SQL direto no meio do seu programa COBOL, usando um conceito que lembra macros, mas no final tudo é convertido em COBOL chamando seu parceiro de longa data o PLI.
Veja um exemplo simples de SELECT em um programa COBOL:
EXEC SQL
SELECT NOME, CPF
INTO :WS-NOME, :WS-CPF
FROM CLIENTES
WHERE ID = :WS-ID
END-EXEC.
🔍 Aqui, :WS-NOME, :WS-CPF, :WS-ID são host variables — variáveis COBOL usadas para receber ou passar valores ao SQL. Sim, as variaveis tem que serem traduzidas entre o COBOL e DB2, um pouco confuso, mas por serem programas com idades diferentes, temos que dar uma mãozinha e sermos pacientes.
⚙️ Etapas para usar DB2 com COBOL
- Escreva seu código COBOL com comandos SQL embutidos
- Compile com o pré-processador DB2 (DSNHPC) — ele separa os comandos SQL do COBOL
- Compile o código COBOL resultante normalmente
- Inclua o módulo DBRM (Database Request Module) no BIND
- Execute com um plano (PLAN) associado à transação CICS Online ou JCL Batch
- Com a ajuda do RACF para garantir a segurança e o controle de acesso
📌 Dicas de Ouro
✅ Use sempre o SQLCODE após comandos SQL para validar o resultado, a proposito ele vem declarado no SQLCA:
IF SQLCODE = 0
DISPLAY 'Consulta OK'
ELSE
DISPLAY 'Erro no SELECT: ' SQLCODE
END-IF.
✅ **Evite SELECT *— além de custoso, pode causar problemas se a estrutura mudar.
✅ Crie uma cópia da estrutura do banco (DCLGEN) para garantir que as variáveis COBOL estejam alinhadas com as colunas DB2.
✅ Teste a query no Spufi, QMF ou mesmo DBeaver
✅ Nos IDEs ISPF, Eclipse, Zowe ou mesmo Kdz
✅ Use CURSOR para processar múltiplos registros:
EXEC SQL
DECLARE C1 CURSOR FOR
SELECT CPF FROM CLIENTES
END-EXEC.
✅ Trate bem o NULL! Variáveis DB2 podem ter valores nulos. Use INDICATOR variables para evitar surpresas.
🔍 Curiosidade Rápida
🧓 COBOL nasceu em 1959. 🏛️ DB2 surgiu em 1983. ⚡ E juntos, continuam atualizados e integrados a APIs REST, microsserviços e containers zCX. Quem disse que legado não pode ser moderno?
🚀 Comece Agora
Quer praticar? Algumas ideias:
- Crie um programa que consulte o nome de um cliente pelo CPF
- Implemente um INSERT via COBOL para uma tabela de log
- Explore o uso de CURSOR para listar todos os pedidos de um cliente
- pode tentar usar HLASM, REXX ou PLI para os mais audaciosos
E o melhor: com plataformas como IBM Z Xplore, você pode praticar gratuitamente num mainframe real via browser!
O ZOWE está disponível para quem não gosta da tela verde de um emulador de terminal 3270.
🧭 Conclusão
Dominar COBOL com DB2 é como ter uma chave mestra para entrar nos bastidores da infraestrutura financeira e governamental do mundo. Enquanto muitos ainda descobrem essa stack, você já está dando seus primeiros passos onde os dados realmente importam.
💬 E você?
Já teve contato com COBOL ou DB2? Que tal compartilhar sua experiência ou dúvida nos comentários?




Depende muito de projeto a projeto, mas normalmente sou mais vocacionado a Batch, atualmente a parte online tem sofrido de uma metamorfose, onde o CICS é um provedor e tecnologias de Baixa Plataforma se encarregam do Front-end, afinal o usuário quer icones e botões numa interface amigável.
Vagner, Parabéns pela aula.
Comecei meu aprendizado em COBOL na época dos Mainframes, mas não tive a sorte de conhece-los mais de perto. Trabalhei anos com COBOL em ambiente Unix e aplicações MS-DOS, depois fui migrando para plataformas altas.
Continuei os estudos off-line do mundo Cobol, JCL, TSO, REXX mas não cheguei a colocar em prática. Fiquei só na saudade.
Mais uma vez obrigado pelo conteúdo e pela oportunidade de me manter atualizado sobre este fantástico mundo dos Mainframes. Já estou ansioso pelo seu próximo artigo.
Quem sabe um futuro bootcamp de ambiente Mainframe aqui na DIO.
ML
CONSULTA DE CLIENTES POR CPF
CPF: 12345678900
NOME: JOAO DA SILVA DATA NASCIMENTO: 15/05/1988
ANALISE DE MARKETING (IA): SEGMENTO: Cliente Ouro SUGESTAO: Oferecer Investimento Premium XPTO
PF3=SAIR
Vagner, que aula! Sua explicação sobre a integração entre COBOL e DB2 está simplesmente impecável. Você conseguiu transformar um tema que costuma parecer intimidador em algo acessível e até instigante para quem está começando na stack de mainframe.
O destaque que você deu ao uso de SQL embutido, aos detalhes técnicos como o pré-processador e o uso do SQLCODE, além das dicas práticas com ferramentas como Zowe e IBM Z Xplore, mostra o quanto você domina o assunto e está comprometido em incentivar novos profissionais a explorarem esse universo tão fundamental e ainda super relevante.
Você costuma trabalhar mais com processos batch ou online via CICS?