| Bellacosa Mainframe laboratorio pratico engenharia de software mainframe |
🔥☕ O BATCH VAI FECHAR EM 40 MINUTOS!
LABORATÓRIO PRÁTICO DE ENGENHARIA DE SOFTWARE PARA PROGRAMADOR COBOL JUNIOR NO IBM Z 💣💾
🏛️ Missão Enterprise
Você acaba de entrar no plantão noturno de um grande banco.
O fechamento batch começou.
O JES2 está carregado.
O DB2 processando milhões de transações.
O operador já abriu chamado.
O scheduler está pressionando a janela batch.
E agora…
💥 um programa COBOL começou a falhar em produção.
Sua missão:
✅ diagnosticar
✅ corrigir
✅ melhorar
✅ estabilizar
✅ preparar o sistema para sobreviver no mundo enterprise
🎯 OBJETIVOS DO LAB
Ao final deste laboratório você entenderá:
✅ mentalidade enterprise no IBM Z
✅ engenharia de software aplicada ao COBOL
✅ análise de ABEND
✅ legibilidade de código
✅ modularização
✅ tratamento de erro
✅ observabilidade
✅ restartabilidade
✅ debugging operacional
⏱️ Duração estimada: 30 a 40 minutos
☕ CENÁRIO DO AMBIENTE
Plataforma
| Item | Tecnologia |
|---|---|
| Sistema Operacional | z/OS |
| Linguagem | COBOL |
| Batch | JES2 |
| Banco | DB2 |
| Online | CICS |
| Segurança | RACF |
| Scheduler | Control-M |
🚨 INCIDENTE INICIAL
O operador envia a seguinte mensagem:
JOB FINCLOSE ABEND S0C7
STEP001 FAILED
☕ O QUE É S0C7?
💥 erro de conversão numérica
Normalmente causado por:
campo inválido
lixo em variável
dado alfanumérico em campo numérico
corrupção de entrada
🔥 MISSÃO #1 — ANALISAR O CÓDIGO LEGADO
PROGRAMA RECEBIDO
IDENTIFICATION DIVISION.
PROGRAM-ID. FIN001.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-TOTAL PIC 9(09)V99 VALUE 0.
01 WS-VALOR PIC 9(05)V99.
PROCEDURE DIVISION.
MOVE 'ABCDE' TO WS-VALOR.
ADD WS-VALOR TO WS-TOTAL.
DISPLAY WS-TOTAL.
STOP RUN.
🎯 ATIVIDADE
Identifique:
✅ o problema
✅ o risco operacional
✅ o impacto em produção
✅ SOLUÇÃO
MOVE 'ABCDE' TO WS-VALOR
causa:
💥 S0C7
Porque:
WS-VALOR é numérico
ABCDE é alfanumérico
☕ DICA MAINFRAME
No mundo enterprise:
um campo inválido pode parar uma cadeia inteira de batch.
🔥 MISSÃO #2 — CRIANDO VALIDAÇÃO ENTERPRISE
REFATORAÇÃO
IF WS-ENTRADA NUMERIC
MOVE WS-ENTRADA TO WS-VALOR
ELSE
DISPLAY 'ERRO DADO INVALIDO'
MOVE 0 TO WS-VALOR
END-IF.
🎯 O QUE FOI MELHORADO?
✅ proteção operacional
✅ estabilidade
✅ previsibilidade
✅ observabilidade
☕ CURIOSIDADE MAINFRAME
Muitos incidentes bancários históricos começaram com:
💀 um único campo inválido
🔥 MISSÃO #3 — O MONSTRO DAS 15 MIL LINHAS
Você recebeu um programa com:
☠️ GO TO
☠️ IF aninhado
☠️ sem comentários
☠️ sem modularização
EXEMPLO RUIM
IF A = 1
IF B = 2
IF C = 3
MOVE 1 TO X.
🎯 ATIVIDADE
Refatore para estilo enterprise.
✅ SOLUÇÃO
IF CLIENTE-ATIVO
PERFORM PROCESSA-CLIENTE
END-IF.
☕ DICA MAINFRAME
Código enterprise precisa ser:
✅ legível
✅ auditável
✅ sustentável
✅ fácil de alterar
🔥 MISSÃO #4 — ANALISANDO PERFORMANCE
O JOB ESTÁ DEMORANDO 5 HORAS
O operador reclama:
BATCH WINDOW ESTOURANDO
🎯 O QUE INVESTIGAR?
✅ SORT excessivo
✅ leitura duplicada
✅ acesso DB2
✅ EXCP
✅ loops
✅ índices
☕ DICA MAINFRAME
No IBM Z:
💸 CPU = dinheiro real
🔥 MISSÃO #5 — TRATAMENTO DE SQLCODE
CÓDIGO RECEBIDO
EXEC SQL
SELECT NOME
INTO :WS-NOME
FROM CLIENTES
END-EXEC.
🎯 PROBLEMA
Nenhum tratamento de erro.
✅ SOLUÇÃO ENTERPRISE
EXEC SQL
SELECT NOME
INTO :WS-NOME
FROM CLIENTES
END-EXEC.
IF SQLCODE = 100
DISPLAY 'CLIENTE NAO ENCONTRADO'
ELSE
IF SQLCODE NOT = 0
DISPLAY 'ERRO DB2'
DISPLAY SQLCODE
END-IF
END-IF.
☕ CURIOSIDADE
SQLCODE -911
Pode indicar:
💥 deadlock
💥 timeout
💥 rollback automático
🔥 MISSÃO #6 — OBSERVABILIDADE
CÓDIGO SEM LOG
PERFORM PROCESSA.
🎯 PROBLEMA
Quando falhar:
☠️ ninguém entende o que aconteceu
✅ SOLUÇÃO
DISPLAY 'INICIO PROCESSAMENTO'
PERFORM PROCESSA
DISPLAY 'FIM PROCESSAMENTO'
☕ REGRA DE OURO
Se não logou…
não aconteceu.
🔥 MISSÃO #7 — ENGENHARIA DE SOFTWARE REAL
O QUE O JUNIOR PENSA
“Meu programa compilou.”
O QUE O ENGENHEIRO PENSA
✅ restart
✅ rollback
✅ auditoria
✅ rastreabilidade
✅ suporte
✅ manutenção
✅ observabilidade
✅ performance
☕ DESAFIO FINAL
O banco informa:
“Agora o programa processará 80 milhões de registros.”
O QUE VOCÊ ANALISA?
✅ batch window
✅ EXCP
✅ buffering
✅ índices DB2
✅ paralelismo
✅ checkpoint/restart
✅ SORT
✅ consumo CPU
🏛️ LIÇÃO FINAL DO LAB
No IBM Z:
☕ COBOL não é apenas linguagem.
É engenharia de sobrevivência enterprise.
💣 FRASE FINAL
“O verdadeiro programador mainframe não escreve apenas código.
Ele sustenta o mundo invisível que continua funcionando enquanto bilhões dormem.” ☕🔥