📘 TUTORIAL COMPLETO DE COBOL
📘 TUTORIAL COMPLETO DE COBOL
(Do básico ao profissional)
🧠 O que é COBOL?
COBOL (Common Business-Oriented Language) é uma linguagem criada para processamento de dados comerciais, usada até hoje em:
Bancos
Seguradoras
Governo
Mainframes (IBM z/OS)
💡 Mais de 70% das transações bancárias mundiais ainda passam por COBOL.
🏗️ Onde o COBOL roda?
Mainframe IBM (z/OS)
Linux / Windows (OpenCOBOL / GnuCOBOL)
Integração com C, Java, APIs e Banco de Dados
🧩 Estrutura de um programa COBOL
Todo programa COBOL é dividido em DIVISIONS:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
DISPLAY "Olá, mundo COBOL!".
STOP RUN.
🔹 Divisions principais
IDENTIFICATION → nome do programa
ENVIRONMENT → arquivos, dispositivos
DATA → variáveis e estruturas
PROCEDURE → lógica do programa
🧮 Tipos de dados em COBOL
01 NOME PIC X(30).
01 IDADE PIC 9(03).
01 SALARIO PIC 9(07)V99.
01 ATIVO PIC X VALUE 'S'.
📌 Explicação
X→ texto9→ númeroV→ vírgula implícitaPIC→ picture (formato do dado)
📂 Estruturas (níveis)
01 CLIENTE.
05 ID-CLIENTE PIC 9(05).
05 NOME PIC X(40).
05 EMAIL PIC X(50).
✔ Muito usado para banco e arquivos
🔁 Estruturas de controle
IF / ELSE
IF IDADE >= 18
DISPLAY "Maior de idade"
ELSE
DISPLAY "Menor de idade"
END-IF.
PERFORM (loop)
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 10
DISPLAY I
END-PERFORM.
📁 Manipulação de arquivos
COBOL é fortíssimo em arquivos sequenciais.
Definição
SELECT ARQ-CLIENTE ASSIGN TO "clientes.dat"
ORGANIZATION IS LINE SEQUENTIAL.
Leitura
READ ARQ-CLIENTE
AT END DISPLAY "Fim do arquivo"
END-READ.
🗄️ COBOL com Banco de Dados (SQL)
Usa SQL embutido (Embedded SQL)
Exemplo (DB2 / Oracle)
EXEC SQL
SELECT NOME, SALARIO
INTO :NOME, :SALARIO
FROM CLIENTES
WHERE ID = :ID-CLIENTE
END-EXEC.
🔹 : indica variável COBOL
🔹 Muito usado em bancos
📑 COPYBOOK (fundamental)
Arquivo reutilizável de estruturas de dados.
01 CLIENTE.
05 ID PIC 9(05).
05 NOME PIC X(40).
Usando:
COPY CLIENTE.
✔ Mantém padrão entre sistemas
✔ Integra COBOL com outras linguagens
🔗 Integração com sistemas modernos
COBOL + Java
Via arquivos
Via banco
Via chamadas C
COBOL + APIs
REST via middleware
Mainframe ↔ Microserviços
COBOL + Python
Python processa dados
COBOL mantém core bancário
⚙️ Compiladores COBOL
Mainframe
IBM Enterprise COBOL
Windows / Linux
GnuCOBOL (Open Source) ⭐
cobc -x programa.cob
🧪 Debug e testes
DISPLAY para debug
Logs em arquivo
Testes batch
🏢 Padrões corporativos
✔ Programas pequenos e bem definidos
✔ Uso intenso de COPYBOOK
✔ Banco como contrato
✔ Mudanças controladas
❌ Erros comuns
❌ Alterar copybook sem impacto
❌ Lógica misturada com SQL
❌ Falta de versionamento
❌ Ignorar tratamento de erro SQLCODE
🚀 Caminho profissional (passo a passo)
1️⃣ Aprender sintaxe básica
2️⃣ Trabalhar com arquivos
3️⃣ SQL embutido
4️⃣ COPYBOOKs
5️⃣ Integração com banco
6️⃣ Sistemas legados
7️⃣ Integração moderna (APIs)
💼 Mercado de trabalho
Poucos profissionais
Alta demanda
Salários altos
Sistemas críticos
💰 COBOL = legado que paga bem
No COBOL, as "fórmulas" não são escritas apenas com símbolos matemáticos como em outras linguagens. Elas seguem uma sintaxe chamada Verbos Aritméticos, desenhada para que um gerente de banco em 1960 conseguisse ler o código e entender a regra de negócio.
Aqui estão as principais formas de realizar cálculos:
1. Verbos Aritméticos Básicos
Estes são os comandos diretos para operações simples.
| Operação | Comando COBOL | Equivalente (Python/C#) |
| Soma | ADD A TO B GIVING C. | c = a + b |
| Subtração | SUBTRACT A FROM B GIVING C. | c = b - a |
| Multiplicação | MULTIPLY A BY B GIVING C. | c = a * b |
| Divisão | DIVIDE A BY B GIVING C. | c = a / b |
| Resto | DIVIDE A BY B GIVING C REMAINDER R. | c = a // b; r = a % b |
Nota: Se você não usar o
GIVING C, o COBOL atualizará o valor diretamente na segunda variável. Por exemplo:ADD 10 TO SALARIOaumenta o salário em 10.
2. O Verbo COMPUTE (Para Fórmulas Complexas)
Quando a conta é grande (como a nossa Hipotenusa), usar os verbos acima fica confuso. Para isso, o COBOL tem o COMPUTE, que aceita operadores matemáticos comuns:
+(Soma)-(Subtração)*(Multiplicação)/(Divisão)**(Potência)
Exemplo da Hipotenusa em COBOL:
COMPUTE HIPOTENUSA = (CATETO-A ** 2 + CATETO-B ** 2) ** 0.5.
3. Arredondamento e Erros (ROUNDED e SIZE ERROR)
No setor financeiro, a precisão é tudo. O COBOL tem cláusulas nativas para isso que são muito poderosas:
ROUNDED: Se o resultado for10.556e sua variável só aceita 2 casas, o COBOL arredonda para10.56automaticamente.ON SIZE ERROR: Um "seguro" caso o número seja maior do que a variável aguenta (overflow).
Exemplo Prático:
MULTIPLY VALOR-BRUTO BY IMPOSTO
GIVING VALOR-LIQUIDO ROUNDED
ON SIZE ERROR
DISPLAY "ERRO: VALOR MUITO GRANDE PARA O CAMPO!".
4. Funções Intrínsecas (FUNCTION)
Versões modernas do COBOL (COBOL-85 em diante) possuem funções prontas para estatística e matemática avançada:
FUNCTION SQRT(A): Raiz quadrada.FUNCTION MEAN(A B C): Média aritmética.FUNCTION MAX(A B C): Retorna o maior valor.FUNCTION CURRENT-DATE: Pega a data e hora do sistema.
Exemplo de uma "Fórmula Financeira" Completa
Se fôssemos calcular um juro simples:
* JUROS = CAPITAL * TAXA * TEMPO
COMPUTE VALOR-JUROS = CAPITAL * (TAXA / 100) * TEMPO.
ADD VALOR-JUROS TO CAPITAL GIVING TOTAL-DEVIDO.
Veja um exemplo de fórmulas para calcular algo específico, como um holerite ou média de notas:
Vamos criar um programa em COBOL que simula um Processamento de Folha de Pagamento (Holerite). Este exemplo é perfeito porque utiliza ADD, SUBTRACT, COMPUTE e as regras de formatação de casas decimais.
Programa: Calculadora de Salário Líquido
Este código calcula o salário bruto, desconta o INSS (fixo em 11% para o exemplo) e exibe o resultado final.
IDENTIFICATION DIVISION.
PROGRAM-ID. CALC-HOLERITE.
AUTHOR. GEMINI-AI.
DATA DIVISION.
WORKING-STORAGE SECTION.
* Variaveis de entrada (PIC 9 significa numero)
01 NOME-FUNC PIC X(30).
01 SALARIO-HORA PIC 9(04)V99.
01 HORAS-TRAB PIC 9(03).
* Variaveis de calculo
01 SALARIO-BRUTO PIC 9(06)V99.
01 VALOR-INSS PIC 9(05)V99.
01 SALARIO-LIQUIDO PIC 9(06)V99.
* Variavel de edicao (Z oculta zeros a esquerda e virgula)
01 MASK-SALARIO PIC ZZZ.ZZ9,99.
PROCEDURE DIVISION.
001-INICIO.
DISPLAY "--- SISTEMA DE FOLHA DE PAGAMENTO ---".
DISPLAY "NOME DO FUNCIONARIO: " WITH NO ADVANCING.
ACCEPT NOME-FUNC.
DISPLAY "VALOR DA HORA: " WITH NO ADVANCING.
ACCEPT SALARIO-HORA.
DISPLAY "HORAS TRABALHADAS: " WITH NO ADVANCING.
ACCEPT HORAS-TRAB.
* USANDO COMPUTE PARA CALCULO MULTIPLO
COMPUTE SALARIO-BRUTO = SALARIO-HORA * HORAS-TRAB.
* USANDO MULTIPLY PARA DESCONTO
MULTIPLY SALARIO-BRUTO BY 0.11 GIVING VALOR-INSS ROUNDED.
* USANDO SUBTRACT PARA LIQUIDO
SUBTRACT VALOR-INSS FROM SALARIO-BRUTO GIVING SALARIO-LIQUIDO.
* EXIBICAO DOS RESULTADOS
DISPLAY "-------------------------------------".
DISPLAY "CONTRA-CHEQUE DE: " NOME-FUNC.
MOVE SALARIO-BRUTO TO MASK-SALARIO.
DISPLAY "SALARIO BRUTO: R$ " MASK-SALARIO.
MOVE VALOR-INSS TO MASK-SALARIO.
DISPLAY "DESCONTO INSS: R$ " MASK-SALARIO.
MOVE SALARIO-LIQUIDO TO MASK-SALARIO.
DISPLAY "SALARIO LIQUIDO: R$ " MASK-SALARIO.
DISPLAY "-------------------------------------".
STOP RUN.
Explicação dos Conceitos Chave
PIC 9(04)V99: Isso define um número de 4 dígitos inteiros e 2 decimais. OVé uma vírgula implícita (o COBOL guarda a posição, mas não gasta espaço de memória com o caractere vírgula).PIC ZZZ.ZZ9,99: Chamamos isso de Máscara de Edição. No COBOL, você não pode imprimir uma variável de cálculo diretamente se quiser que ela fique bonita (com vírgulas e pontos). Você "move" o valor para essa máscara para exibição.WITH NO ADVANCING: Faz com que o cursor fique na mesma linha da mensagem, igual aoend=""do Python.
Como rodar este código?
Se você tiver o GnuCOBOL instalado, salve o código como holerite.cob e rode:
Compilar:
cobc -x holerite.cobExecutar:
./holerite(ouholerite.exeno Windows)
Show 🚀 então vamos avançar do jeito certo, como quem está se preparando pra trabalhar com COBOL de verdade, não só estudar teoria.
👉 PRÓXIMO PASSO: COBOL NA PRÁTICA (MÃO NA MASSA)
A partir daqui, o caminho profissional se divide em etapas claras. Vamos pela Etapa 1, que é obrigatória.
🟢 ETAPA 1 — MONTAR O AMBIENTE COBOL (PC NORMAL)
Vamos usar GnuCOBOL, que é o padrão fora do mainframe.
✅ Opção 1: Windows
Baixe GnuCOBOL
Durante a instalação:
Marque Add to PATH
Teste no Prompt:
cobc -v
✅ Opção 2: Linux (Ubuntu / Debian)
sudo apt update
sudo apt install gnucobol
Teste:
cobc -v
🟢 ETAPA 2 — SEU PRIMEIRO PROGRAMA “PROFISSIONAL”
Crie o arquivo cliente.cob:
IDENTIFICATION DIVISION.
PROGRAM-ID. CLIENTE01.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NOME PIC X(30).
01 WS-IDADE PIC 9(03).
PROCEDURE DIVISION.
DISPLAY "Digite o nome: "
ACCEPT WS-NOME
DISPLAY "Digite a idade: "
ACCEPT WS-IDADE
IF WS-IDADE >= 18
DISPLAY "Cliente maior de idade"
ELSE
DISPLAY "Cliente menor de idade"
END-IF
STOP RUN.
Compile e execute:
cobc -x cliente.cob
🟢 ETAPA 3 — ENTENDER O QUE VOCÊ ACABOU DE FAZER
✔ Criou variáveis
✔ Leu dados do usuário
✔ Tomou decisão
✔ Compilou como sistema real
👉 Isso já é nível júnior em COBOL.
🟢 ETAPA 4 — ARQUIVOS (MUITO IMPORTANTE)
Agora você vai aprender o que COBOL faz melhor: processar arquivos.
Definição de arquivo
SELECT ARQ-CLIENTES ASSIGN TO "clientes.dat"
ORGANIZATION IS LINE SEQUENTIAL.
Registro
01 REG-CLIENTE.
05 ID PIC 9(05).
05 NOME PIC X(30).
Gravação
WRITE REG-CLIENTE.
🟢 ETAPA 5 — PRÓXIMA AULA (ESCOLHA)
Agora vem a parte chave pra mercado. Escolhe um caminho 👇
🔹 Opção A — Arquivos + Batch (bancário)
Processamento em lote
Milhões de registros
Base de bancos
🔹 Opção B — COBOL + Banco de Dados (SQL)
DB2 / Oracle / PostgreSQL
O que mais emprega
🔹 Opção C — COBOL + Sistemas modernos
COBOL + Java
COBOL + APIs REST
Migração de legado


