image

Accede a bootcamps ilimitados y a más de 650 cursos para siempre

60
%OFF
Article image
Vagner Bellacosa
Vagner Bellacosa01/07/2025 04:44
Compartir

💾 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

    1. Escreva seu código COBOL com comandos SQL embutidos
    2. Compile com o pré-processador DB2 (DSNHPC) — ele separa os comandos SQL do COBOL
    3. Compile o código COBOL resultante normalmente
    4. Inclua o módulo DBRM (Database Request Module) no BIND
    5. Execute com um plano (PLAN) associado à transação CICS Online ou JCL Batch
    6. 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.

    👉 https://ibm.biz/zxplore

    👉 https://www.zowe.org/

    🧭 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?

    Compartir
    Recomendado para ti
    Randstad - Análise de Dados
    BairesDev - Machine Learning Training
    Savegnago - Lógica de Programação
    Comentarios (3)
    Sergio Santos
    Sergio Santos - 01/07/2025 14:06

    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

    Marcelo Laranjeira - 01/07/2025 09:43
    # Minha primeira tentativa: Integração COBOL/CICS/DB2 com IA
    
    
    ## Objetivo
    Demonstrar como um sistema legado pode consumir inteligência artificial via API, segmentando clientes bancários em tempo real.
    
    
    ## Estrutura do Projeto
    
    hackathon-cics-ia/
    │
    ├── copy/
    │   ├── DCLCLT.cpy         (Estrutura do cliente)
    │   ├── DCLAPIREQ.cpy      (Request JSON)
    │   └── DCLAPIRES.cpy      (Response JSON)
    │
    ├── src/
    │   └── CONCPROG.cbl       (Programa principal CICS)
    │
    ├── bms/
    │   └── CONCMAP.bms        (Mapa de tela CICS)
    │
    ├── ddl/
    │   └── TB_CLIENTES.sql    (DDL da tabela DB2)
    │
    ├── api/
    │   ├── app.py             (API de IA simulada em Python)
    │   ├── run_api.bat        (Script para Windows)
    │   └── run_api.sh         (Script para Linux/Mac)
    │
    ├── jcl/
    │   ├── COMPILA_CONCPROG.jcl   (Compilação COBOL)
    │   ├── COMPILA_CONCMAP.jcl    (Compilação MAPSET)
    │   └── DEFINE_URIMAP.jcl      (Definição URIMAP)
    │
    └── README.md
    
    
    
    ## Componentes
    - **COBOL/CICS:** Interface transacional, busca dados no DB2, monta JSON, consome API de IA, exibe resultado na tela.
    - **DB2:** Tabela de clientes.
    - **API de IA (Python/Flask):** Simula um modelo de clusterização.
    - **Tela CICS (BMS):** Interface para consulta por CPF.
    
    
    ## Fluxo
    1. Usuário digita CPF na tela CICS.
    2. COBOL busca dados do cliente no DB2.
    3. Calcula idade, monta JSON e chama API de IA via CICS WEB.
    4. Processa resposta JSON e exibe segmento e sugestão de produto na tela.
    
    
    ## Como instalar e testar
    
    
    ### 1. Suba a API Python
    - Instale o Flask: `pip install flask`
    - No Windows: execute `api\run_api.bat`
    - No Linux/Mac: execute `sh api/run_api.sh`
    
    
    ### 2. Crie a tabela e insira dados no DB2
    - Execute o script em `ddl/TB_CLIENTES.sql` no seu ambiente DB2.
    
    
    ### 3. Compile e instale o programa COBOL e o MAPSET
    - Use os JCLs em `jcl/COMPILA_CONCPROG.jcl` e `jcl/COMPILA_CONCMAP.jcl`.
    
    
    ### 4. Configure o URIMAP no CICS
    - Use o JCL `jcl/DEFINE_URIMAP.jcl` e ajuste o HOST para o IP/DNS da API.
    
    
    ### 5. Execute a transação no CICS
    - Digite um CPF cadastrado e veja o resultado da segmentação IA na tela.
    
    
    ## Exemplo de tela
    

    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

    
    
    ## Diferenciais para a banca
    - **Padronização dos copybooks**: Todos os níveis 01 alinhados à esquerda, conforme padrão COBOL.
    - **Uso direto do copybook na resposta da API**: Elimina redundância e facilita manutenção.
    - **Comentários explicativos no COBOL**: Código mais didático e fácil de entender para avaliadores.
    - Integração real entre legado (COBOL/CICS/DB2) e IA moderna (API Flask).
    - Facilidade de expansão para outros modelos de IA.
    - Demonstração clara de modernização sem reescrita do legado.
    
    
    ---
    Se precisar de slides ou roteiro de apresentação, peça aqui! 
    
    
    
    DIO Community
    DIO Community - 01/07/2025 09:37

    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?