| Bellacosa Mainframe Laboratorio de Logica de Programação Mainframe |
☕💣 “SEU PRIMEIRO PLANTÃO NO MAINFRAME” — LABORATÓRIO COMPLETO DE LÓGICA DE PROGRAMAÇÃO IBM Z PARA INICIANTES 💣☕
Aprenda a pensar como um programador de alta plataforma antes mesmo de dominar COBOL
🔥 OBJETIVO DO LABORATÓRIO
Neste laboratório você irá aprender:
✅ Como pensar em lógica Mainframe
✅ Como funciona o raciocínio batch
✅ Variáveis
✅ Validações
✅ Estruturas de repetição
✅ Sections e Paragraphs
✅ Procedures
✅ Subrotinas
✅ Modularização
✅ Boas práticas de alta plataforma
✅ Erros clássicos de iniciantes
✅ Como programadores IBM Z organizam sistemas reais
☕ CENÁRIO DO LABORATÓRIO
Você foi contratado para trabalhar em um banco.
Sua missão:
💣 PROCESSAR UM ARQUIVO DE CLIENTES
Cada registro possui:
NOME
IDADE
SALDO
STATUS
O programa deve:
Ler registros
Validar dados
Calcular bônus
Gerar relatório
Exibir totais
🔥 PRIMEIRA LIÇÃO — PENSAR COMO MAINFRAME
Antes do código:
☕ O PROGRAMADOR MAINFRAME PENSA EM FLUXO
Entrada
Arquivo de clientes
Processamento
Validar
Calcular
Atualizar
Contabilizar
Saída
Relatório
Arquivo atualizado
Totais
💣 ISSO É O DNA DO BATCH
No Mainframe:
entrada
processamento
saída
são sagrados.
☕ ETAPA 1 — DECLARANDO VARIÁVEIS
No Mainframe tudo precisa ser previsível.
🔥 TIPOS MAIS COMUNS
Texto
01 WS-NOME PIC X(30).
Número inteiro
01 WS-IDADE PIC 9(03).
Valores monetários
01 WS-SALDO PIC 9(07)V99.
Indicadores lógicos
01 WS-FIM-ARQUIVO PIC X VALUE 'N'.
☕ DICA BELLACOSA MAINFRAME
🔥 Nome de variável precisa explicar a intenção
RUIM:
01 A PIC 9(5).
BOM:
01 WS-TOTAL-CLIENTES PIC 9(5).
💣 O MAINFRAME SOBREVIVE POR LEGIBILIDADE
Quem mantém sistemas bancários precisa entender rápido o código.
☕ ETAPA 2 — ESTRUTURA DO PROGRAMA
O COBOL corporativo normalmente segue:
IDENTIFICATION DIVISION
ENVIRONMENT DIVISION
DATA DIVISION
PROCEDURE DIVISION
🔥 O CORAÇÃO DA LÓGICA
PROCEDURE DIVISION
Aqui vive:
fluxo
validação
cálculos
repetições
☕ ETAPA 3 — SECTIONS E PARAGRAPHS
SECTION
Agrupa grandes áreas do programa.
PARAGRAPH
Divide tarefas menores.
💣 EXEMPLO CORPORATIVO
PROCESSAMENTO-SECTION.
PERFORM LE-ARQUIVO
PERFORM VALIDA-DADOS
PERFORM CALCULA-BONUS
PERFORM GRAVA-RELATORIO.
☕ VANTAGEM DISSO
✅ Organização
✅ Manutenção
✅ Reuso
✅ Facilidade de debugging
✅ Clareza
🔥 ETAPA 4 — LEITURA DE REGISTROS
Todo batch gira em torno disso.
💣 MODELO CLÁSSICO MAINFRAME
PERFORM UNTIL WS-FIM-ARQUIVO = 'S'
PERFORM LE-REGISTRO
IF WS-FIM-ARQUIVO NOT = 'S'
PERFORM PROCESSA-REGISTRO
END-IF
END-PERFORM.
☕ O QUE O INICIANTE PRECISA ENTENDER
O batch:
lê
processa
repete
até acabar o arquivo.
🔥 ETAPA 5 — LAÇOS DE REPETIÇÃO
☕ 1. PERFORM UNTIL
Mais usado em batch.
Exemplo
PERFORM UNTIL WS-FIM = 'S'
Repete até condição ser verdadeira.
☕ 2. PERFORM VARYING
Semelhante ao FOR.
Exemplo
PERFORM VARYING WS-INDICE FROM 1 BY 1
UNTIL WS-INDICE > 10
☕ 3. PERFORM TIMES
Executa quantidade fixa.
Exemplo
PERFORM 5 TIMES
DISPLAY 'MAINFRAME'
END-PERFORM.
💣 ERRO CLÁSSICO DE INICIANTE
Criar loop infinito.
Exemplo perigoso:
PERFORM UNTIL WS-FIM = 'S'
Sem alterar WS-FIM.
Resultado:
CPU presa
JOB travado
consumo absurdo
☕ ETAPA 6 — VALIDAÇÕES
🔥 MAINFRAME AMA VALIDAÇÃO
Sistemas bancários precisam ser paranoicos.
☕ TIPOS DE VALIDAÇÃO
Campo vazio
IF WS-NOME = SPACES
Número inválido
IF WS-IDADE IS NUMERIC
Faixa permitida
IF WS-IDADE >= 18
Status permitido
IF WS-STATUS = 'A'
💣 DICA CORPORATIVA
Sempre valide:
entrada
arquivo
cálculo
retorno
integração
☕ ETAPA 7 — CÁLCULO DE BÔNUS
Regra:
Se saldo > 1000:
bônus = 10%
🔥 EXEMPLO
IF WS-SALDO > 1000
COMPUTE WS-BONUS = WS-SALDO * 0.10
ELSE
MOVE 0 TO WS-BONUS
END-IF.
☕ ETAPA 8 — MODULARIZAÇÃO
💣 O SEGREDO DOS SISTEMAS GIGANTES
Separar responsabilidades.
🔥 EXEMPLO
LEITURA
VALIDAÇÃO
PROCESSAMENTO
RELATÓRIO
FINALIZAÇÃO
☕ ISSO REDUZ
✅ Bugs
✅ Retrabalho
✅ Confusão
✅ Dependência de pessoas
☕ ETAPA 9 — SUBROTINAS
Grandes empresas usam MUITO isso.
🔥 O QUE É SUBROTINA?
Programa auxiliar reutilizável.
Exemplo
CALCULA-JUROS
VALIDA-CPF
FORMATA-DATA
💣 VANTAGEM
Um único módulo pode ser usado por:
banco
cartão
seguros
investimentos
☕ CHAMADA DE SUBROTINA
CALL 'CALCJURO'
☕ ETAPA 10 — FUNÇÕES
Funções retornam valores.
🔥 EXEMPLO
FUNCTION CURRENT-DATE
☕ MUITAS FUNÇÕES MODERNAS COBOL
data
matemática
string
conversão
💣 O QUE O INICIANTE PRECISA EVITAR
🔥 1. GOTO EM EXCESSO
Código vira espaguete.
🔥 2. NOMES RUINS
Dificultam manutenção.
🔥 3. DUPLICAÇÃO
Mesmo código repetido.
🔥 4. FALTA DE VALIDAÇÃO
Causa bugs perigosos.
🔥 5. TENTAR FAZER TUDO NUM BLOCO
Divida em procedures.
☕ LABORATÓRIO PRÁTICO — FLUXO COMPLETO
💣 OBJETIVO
Processar 3 clientes.
🔥 PASSO 1 — INICIALIZAÇÃO
MOVE 0 TO WS-TOTAL
MOVE 'N' TO WS-FIM
🔥 PASSO 2 — LOOP PRINCIPAL
PERFORM UNTIL WS-FIM = 'S'
🔥 PASSO 3 — LEITURA
READ CLIENTE-ARQ
🔥 PASSO 4 — VALIDAÇÃO
IF WS-SALDO IS NUMERIC
🔥 PASSO 5 — PROCESSAMENTO
COMPUTE WS-BONUS = WS-SALDO * 0.10
🔥 PASSO 6 — ACUMULADOR
ADD WS-BONUS TO WS-TOTAL
🔥 PASSO 7 — RELATÓRIO
DISPLAY WS-TOTAL
☕ RESULTADO FINAL ESPERADO
O programa:
processa clientes
valida dados
calcula bônus
gera total
💣 ISSO É O INÍCIO DA ENGENHARIA MAINFRAME
Você acabou de praticar:
✅ lógica imperativa
✅ lógica procedural
✅ lógica estruturada
☕ COMO PROGRAMADORES MAINFRAME PENSAM?
Eles perguntam:
O dado entrou correto?
O arquivo está íntegro?
A rotina está modularizada?
O batch aguenta milhões de registros?
O operador conseguirá diagnosticar erro?
🔥 ISSO É ALTA PLATAFORMA
Não é apenas programar.
É:
previsibilidade
confiabilidade
rastreabilidade
engenharia
☕ CURIOSIDADES DO MUNDO REAL
💣 Muitos bancos ainda usam lógica escrita nos anos 80
E continuam funcionando.
💣 Um erro de loop pode consumir milhões em CPU
Por isso revisão é levada extremamente a sério.
💣 COBOL foi desenhado para manutenção humana
Legibilidade sempre foi prioridade.
💣 Grandes batches processam bilhões de registros
Tudo baseado nessa lógica.
☕ DESAFIO FINAL PARA O ALUNO
Tente adicionar:
✅ validação de idade
✅ tratamento de saldo negativo
✅ contador de clientes inválidos
✅ relatório final formatado
✅ cálculo de média
🔥 MISSÃO CONCLUÍDA
Você deu os primeiros passos no raciocínio que move:
bancos
governos
cartões
seguradoras
bolsas financeiras
💣 A GRANDE VERDADE DO MAINFRAME
Antes de aprender comandos…
Sem comentários:
Enviar um comentário