| Bellacosa Mainframe apresenta logica de programacao em mainframe |
☕ Um Café no Bellacosa Mainframe
Lógica de Programação no Mainframe
O Guia Definitivo para um Programador Padawan Entender Como Pensar em COBOL Antes Mesmo de Escrever uma Linha de Código
"A diferença entre um programador júnior e um programador experiente raramente está na linguagem. Está na forma como ele pensa antes de começar a programar."
Introdução
Existe um mito que acompanha praticamente todo iniciante em Mainframe.
Muitos acreditam que aprender COBOL significa decorar comandos como MOVE, IF, PERFORM, READ, WRITE e COMPUTE.
Não.
Isso é parecido com decorar palavras de um idioma sem aprender a formar frases.
Programar não é escrever código.
Programar é resolver problemas.
O computador apenas executa a solução que você imaginou.
Quanto melhor for sua lógica, menor será seu código.
Quanto pior for sua lógica, maior será o desastre.
Curiosamente, essa afirmação vale ainda mais no mundo Mainframe.
Em um sistema bancário, um erro lógico pode movimentar milhões de reais para a conta errada.
Um erro de apenas um operador relacional pode impedir milhares de aposentadorias de serem pagas.
A máquina faz exatamente aquilo que você pediu.
Nunca aquilo que você queria.
Afinal, o que é lógica de programação?
Lógica é a capacidade de organizar pensamentos em uma sequência de passos capazes de resolver um problema.
Em outras palavras:
Entrada → Processamento → Saída
Todo programa do planeta funciona assim.
Sempre.
Sem exceções.
Imagine fazer café.
Entrada:
água
café
filtro
Processamento:
aquecer água
passar pelo pó
Saída:
café pronto
Um programa COBOL faz exatamente isso.
Entrada:
Arquivo de clientes
↓
Processamento
↓
Arquivo atualizado
Nada muda.
Apenas o problema é diferente.
O computador é extremamente inteligente...
...para fazer exatamente o que você mandar.
E extremamente burro para adivinhar.
Se você esquecer um caso específico...
Ele esquecerá também.
Exemplo
Você deseja aprovar clientes maiores de idade.
Errado:
SE IDADE > 18
O cliente com exatamente 18 anos será recusado.
O correto seria
IDADE >= 18
Esse pequeno detalhe pode causar milhares de erros.
A lógica mora justamente nesses detalhes.
O primeiro segredo dos grandes programadores
Eles passam muito mais tempo pensando do que digitando.
Um programador experiente pode gastar:
70%
pensando
20%
planejando
10%
escrevendo
Já o iniciante faz exatamente o contrário.
Antes do COBOL existe o algoritmo
Todo programa começa com uma receita.
Exemplo.
Problema:
Calcular média de um aluno.
Passos.
Receber nota 1
↓
Receber nota 2
↓
Somar
↓
Dividir por 2
↓
Mostrar resultado
Isso é um algoritmo.
COBOL vem depois.
Aprenda primeiro estas estruturas
Toda programação procedural é formada por apenas três estruturas.
Sim.
Somente três.
Todo software do mundo nasce delas.
1 — Sequência
Faça isto
Depois aquilo
Depois aquilo outro
Exemplo
Leia salário
Calcule imposto
Mostre salário líquido
Nada complicado.
2 — Seleção
Agora aparece a primeira decisão.
SE saldo > 0
então saque permitido
senão
saque negado
No COBOL isso aparece como
IF
ELSE
END-IF
A vida inteira você fará isso.
3 — Repetição
Enquanto existir trabalho...
Continue trabalhando.
PERFORM UNTIL
PERFORM VARYING
São os famosos loops.
Curiosidade
Os três pilares da programação estruturada foram formalizados por Edsger W. Dijkstra, Ole-Johan Dahl e C. A. R. Hoare na década de 1960. A ideia revolucionária era simples: qualquer programa poderia ser construído usando apenas sequência, seleção e repetição, reduzindo drasticamente o uso de GOTO e tornando o software mais confiável.
Como um programa COBOL pensa?
Imagine um funcionário de banco.
Ele chega.
Recebe documentos.
Confere informações.
Atualiza cadastro.
Emite comprovante.
Vai embora.
Um programa COBOL trabalha exatamente assim.
Entrada
READ
ACCEPT
LINKAGE
Processamento
MOVE
ADD
SUBTRACT
MULTIPLY
DIVIDE
COMPUTE
STRING
UNSTRING
Saída
DISPLAY
WRITE
REWRITE
RETURN
SEND
O cérebro do programa
A PROCEDURE DIVISION.
Ela é composta por:
Parágrafos
Sections
Sentenças
Comandos
Cada um possui sua responsabilidade.
Parágrafos
Pense em capítulos de um livro.
CALCULAR-JUROS.
VALIDAR-DADOS.
ATUALIZAR-SALDO.
Cada um resolve uma única tarefa.
Essa organização melhora leitura, manutenção e testes.
Sections
São grupos de parágrafos relacionados.
Muito usadas em programas legados e ainda presentes em diversos ambientes corporativos.
VALIDACAO SECTION
PROCESSAMENTO SECTION
FINALIZACAO SECTION
Hoje, muitos times preferem programas menores e menos dependentes de SECTION, mas você encontrará ambos os estilos no mercado.
PERFORM é seu melhor amigo
Nunca copie código.
Faça um parágrafo.
Execute quando necessário.
PERFORM VALIDAR-CLIENTE
Muito melhor que repetir cinquenta linhas.
Variáveis
Uma variável representa um espaço reservado para armazenar informações.
Exemplo
Nome
Saldo
CPF
Data
Valor
Cada variável deve representar apenas uma ideia.
Não misture responsabilidades.
Um bom nome vale ouro
Ruim
A
X
TEMP
VAR1
Bom
WS-CLIENTE-SALDO
WS-VALOR-TOTAL
WS-DATA-PAGAMENTO
Você agradecerá daqui a dez anos.
E quem der manutenção também.
Expressões
Expressões representam cálculos.
A + B
SALDO - SAQUE
JUROS * TAXA
VALOR / PARCELAS
No COBOL moderno, COMPUTE simplifica expressões complexas, tornando o código mais legível.
Expressões booleanas
São perguntas.
IDADE >= 18
SALDO > 0
CPF = CPF-INFORMADO
Resultado?
VERDADEIRO
ou
FALSO
Toda programação gira em torno dessas respostas.
Operadores importantes
Igual
Maior
Menor
Maior ou igual
Menor ou igual
Diferente
AND
OR
NOT
Eles parecem simples.
Mas definem todo o comportamento do programa.
Fluxo de execução
Imagine uma estrada.
O programa começa.
Segue em frente.
Em alguns momentos:
vira
repete
retorna
encerra
Esse caminho é chamado fluxo.
Um fluxo claro é um programa fácil de manter.
O perigo do GO TO
Nos anos 70 era comum.
Hoje deve ser evitado.
Por quê?
Porque destrói o fluxo natural.
Cria o famoso:
"espaguete"
Linhas indo para todos os lados.
Difícil testar.
Difícil entender.
Difícil manter.
Por isso:
PERFORM
END-IF
EVALUATE
substituem praticamente todos os antigos GO TO.
EVALUATE
É o "switch" do COBOL.
Muito mais elegante que dezenas de IF aninhados.
Exemplo conceitual:
Cliente Ouro
↓
desconto
Cliente Prata
↓
desconto menor
Cliente Bronze
↓
sem desconto
Código mais limpo.
Mais fácil de ler.
Loops
No Mainframe você processará arquivos enormes.
Milhares.
Milhões.
Bilhões de registros.
Você não faz:
READ
READ
READ
READ
Você faz
PERFORM UNTIL EOF
Até chegar ao fim do arquivo.
EOF
Uma das primeiras variáveis que todo programador COBOL aprende.
WS-FIM-ARQUIVO
88 EOF VALUE "S"
Quando ela muda...
O loop termina.
Quase todo processamento batch funciona assim.
Subprogramas
Grandes bancos dividem responsabilidades.
Programa principal
↓
Chama
Subprograma
↓
Retorna resultado
Assim nasce software reutilizável.
Em COBOL isso ocorre com CALL.
O conceito de responsabilidade única
Cada parágrafo.
Cada rotina.
Cada subprograma.
Deve fazer apenas uma coisa.
Muito bem feita.
Esse conceito, hoje conhecido como Single Responsibility Principle, já aparecia naturalmente em muitos sistemas COBOL décadas antes de se popularizar na orientação a objetos.
Como pensar antes de programar
Faça estas perguntas.
Qual é o problema?
Quais dados entram?
Quais dados saem?
Quais regras existem?
Existem exceções?
O que acontece se faltar informação?
O arquivo pode estar vazio?
Pode existir duplicidade?
O valor pode ser negativo?
Quanto mais perguntas...
Menos bugs.
A diferença entre programar e desenvolver
Programar é escrever código.
Desenvolver é resolver problemas.
Um excelente desenvolvedor pode escrever poucas linhas.
Mas resolver um problema enorme.
O Mainframe muda sua forma de pensar
Aqui você aprende que:
dados são patrimônio;
performance importa;
I/O custa caro;
cada acesso a disco deve ser pensado;
processar um milhão de registros é rotina;
estabilidade vale mais que criatividade.
Essa mentalidade acompanha você por toda a carreira, mesmo trabalhando depois com Java, Python, Go ou JavaScript.
A disciplina do COBOL
COBOL obriga você a ser organizado.
Divisões bem definidas.
Dados separados da lógica.
Nomes claros.
Fluxo explícito.
Isso forma excelentes engenheiros de software.
Não por acaso, muitos arquitetos de grandes bancos começaram suas carreiras escrevendo COBOL.
Os erros mais comuns dos iniciantes
Programar antes de entender o problema.
Criar variáveis com nomes sem significado.
Misturar validação, cálculo e gravação na mesma rotina.
Usar
GO TOsem necessidade.Ignorar casos de erro e exceções.
Esquecer o tratamento de fim de arquivo.
Repetir código em vez de criar parágrafos reutilizáveis.
Não documentar regras de negócio complexas.
Alterar programas sem compreender seu fluxo completo.
Testar apenas o "caminho feliz", esquecendo entradas inválidas e situações de borda.
Trilha de estudos para um Padawan Mainframe
Uma sequência eficiente de aprendizado é:
Lógica de programação.
Algoritmos e fluxogramas.
Tipos de dados e variáveis.
Operadores e expressões.
Estruturas de decisão (
IFeEVALUATE).Estruturas de repetição (
PERFORM,UNTILeVARYING).Modularização com parágrafos,
SECTIONe subprogramas.Arquivos sequenciais e VSAM.
JCL e execução batch.
CICS, Db2, APIs e integração com o mundo moderno.
Easter Egg ☕
Existe uma velha brincadeira entre programadores veteranos.
Perguntaram a um desenvolvedor COBOL:
— Quantas linguagens você conhece?
Ele respondeu:
— Muitas.
— Então por que continua usando COBOL?
O veterano sorriu:
— Porque o banco prefere que o dinheiro continue chegando na conta certa.
A piada resume uma grande verdade: linguagens vêm e vão, mas a lógica permanece. Quem domina lógica aprende qualquer linguagem com muito mais facilidade.
Curiosidade histórica
Grace Hopper, uma das pioneiras da computação e uma das maiores influências para o COBOL, costumava dizer:
"A frase mais perigosa da linguagem é: 'Sempre fizemos assim'."
Embora COBOL seja uma linguagem com mais de seis décadas, ela continua evoluindo. Hoje suporta recursos modernos como JSON, XML, UTF-8, integração com APIs REST, chamadas a serviços, tratamento avançado de dados e otimizações para arquiteturas IBM Z. O que permanece imutável não é a sintaxe, mas a lógica por trás da solução.
Conclusão
Todo programador COBOL experiente conhece centenas de comandos.
Mas isso nunca foi o diferencial.
O diferencial sempre foi saber pensar.
A lógica de programação é a verdadeira linguagem universal da computação. Ela atravessa décadas, plataformas e paradigmas. O profissional que domina sequência, seleção, repetição, modularização, fluxo de execução e organização do pensamento será capaz de trabalhar não apenas com COBOL, mas também com Java, Python, C#, JavaScript, Go ou qualquer tecnologia que surgir no futuro.
No Mainframe, essa disciplina ganha um valor ainda maior. Cada programa processa informações críticas para bancos, seguradoras, hospitais, governos e empresas que movimentam bilhões de transações diariamente. Não há espaço para improvisação: clareza, simplicidade e previsibilidade são virtudes.
Lembre-se sempre desta máxima do Bellacosa Mainframe:
"O computador não premia quem escreve mais código. Ele recompensa quem pensa melhor. Antes de aprender COBOL, aprenda a organizar suas ideias. Depois disso, a linguagem será apenas uma ferramenta nas mãos de um verdadeiro engenheiro de software."