Translate

Mostrar mensagens com a etiqueta abend s0c7. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta abend s0c7. Mostrar todas as mensagens

quarta-feira, 12 de novembro de 2025

🔥☕ O BATCH VAI FECHAR EM 40 MINUTOS! LABORATÓRIO PRÁTICO DE ENGENHARIA DE SOFTWARE PARA PROGRAMADOR

 

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

ItemTecnologia
Sistema Operacionalz/OS
LinguagemCOBOL
BatchJES2
BancoDB2
OnlineCICS
SegurançaRACF
SchedulerControl-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.” ☕🔥

segunda-feira, 20 de outubro de 2025

PADAWAN, O PROBLEMA NÃO ESTÁ ONDE O ABEND ACONTECEU! Executando Root Cause Analysis (RCA) em Ambiente Mainframe

Bellacosa Mainframe e root cause analysis


☕💣🚨 PADAWAN, O PROBLEMA NÃO ESTÁ ONDE O ABEND ACONTECEU!

Executando Root Cause Analysis (RCA) em Ambiente Mainframe

Como Encontrar a Verdadeira Causa do Incidente e Não Apenas o Sintoma

Uma das maiores armadilhas no mundo Mainframe é acreditar que o erro está exatamente onde ele apareceu.

O operador vê um S0C7.

O desenvolvedor vê um SQLCODE -911.

O analista vê um JOB FAILED.

O gerente vê um SLA perdido.

Mas o verdadeiro culpado pode estar escondido horas, dias ou até semanas antes do incidente.

É exatamente para isso que existe a Root Cause Analysis (RCA).


O Que é Root Cause Analysis?

Root Cause Analysis é um processo estruturado utilizado para descobrir:

  • O que aconteceu

  • Por que aconteceu

  • Como aconteceu

  • Como impedir que aconteça novamente

O objetivo NÃO é:

❌ Encontrar culpados

O objetivo é:

✅ Encontrar causas

Existe uma enorme diferença entre:

Sintoma

e

Causa Raiz

Exemplo:

Sintoma:

JOB ABC123 ABEND S0C7

Causa raiz:

Arquivo recebido com campo numérico inválido

Sem RCA você corrige o programa.

Com RCA você corrige o processo.


O Modelo Bellacosa de RCA

Costumo ensinar que a investigação deve seguir 5 perguntas:

1. O que falhou?
2. Onde falhou?
3. Quando começou?
4. O que mudou?
5. Qual evento iniciou a cadeia?

A quinta pergunta normalmente encontra a causa raiz.


Caso Real Simulado

Imagine o seguinte cenário:

Às 03:15 da manhã:

JOB FINPAY01
ABEND S0C7

Sistema financeiro parado.

Pagamento não processado.

Telefone do plantão toca.

Você entra na guerra.


Passo 1 – Não Entre em Pânico

Primeiro erro dos iniciantes:

ABEND → Corrigir programa

Errado.

Primeiro precisamos coletar evidências.


Passo 2 – Capturar Informações Básicas

Anote:

Job Name
Step Name
Programa
Hora
Sistema
Código de retorno

Exemplo:

JOB:
FINPAY01

STEP:
CALCPAY

PROGRAMA:
PAYROLL

ABEND:
S0C7

HORA:
03:15

Agora temos o ponto inicial.


Passo 3 – Analisar JESMSGLG

Abrir:

SDSF
ST
?

Verificar:

JESMSGLG

Perguntas:

  • Houve mensagens antes do abend?

  • Dataset estava disponível?

  • Houve timeout?

  • Houve atraso?

Exemplo:

RECORD READ SUCCESSFULLY

Logo antes do erro:

INVALID DATA DETECTED

Primeira pista encontrada.


Passo 4 – Analisar SYSOUT

Agora olhamos:

SYSOUT
SYSPRINT
SYSUDUMP
CEEDUMP

Dependendo da aplicação.

Encontramos:

FIELD SALARY
VALUE = ABC123

O campo deveria ser numérico.


Passo 5 – Confirmar no Dump

No dump:

OFFSET X'03A2'

Instrução:

PACK

O programa tentou converter:

ABC123

para número.

Resultado:

S0C7

Até aqui temos:

O QUE aconteceu

Mas ainda não temos:

POR QUE aconteceu

Erro Comum da Equipe

Muitas equipes param aqui.

Produzem um relatório:

Causa:
Campo inválido.

Isso NÃO é RCA.

Isso é apenas descrição do sintoma.


Passo 6 – Rastrear a Origem do Dado

Pergunta:

Quem criou esse registro?

Abrimos o fluxo.

FINPAY01
↓
FINLOAD
↓
FTPIN
↓
Arquivo Externo

Agora começamos a enxergar a cadeia de eventos.


Passo 7 – Reconstruir a Linha do Tempo

Uma RCA boa sempre monta uma timeline.

01:00 Arquivo recebido

01:05 FTP concluído

01:10 Processo de carga

03:15 Abende S0C7

Agora investigamos:

O que mudou entre ontem e hoje?

Passo 8 – Procurar Mudanças

A pergunta mais poderosa da RCA:

O que mudou?

90% dos incidentes começam aqui.

Verificamos:

  • Mudança de software

  • Novo fornecedor

  • Nova versão

  • Alteração de layout

  • Mudança de parâmetro

Descobrimos:

Fornecedor alterou layout do arquivo

Ontem:

SALARY PIC 9(8)

Hoje:

SALARY PIC X(8)

E começou a enviar:

ABC123

Finalmente Encontramos a Causa Raiz

Sintoma:

S0C7

Causa imediata:

Campo não numérico

Causa raiz:

Mudança de layout
não comunicada
pelo fornecedor

Agora sim temos RCA.


Técnica dos 5 Porquês

Muito utilizada em bancos e seguradoras.

Pergunte repetidamente:

Por que houve S0C7?

Porque havia valor inválido.

Por que havia valor inválido?

Porque o campo veio alfanumérico.

Por que veio alfanumérico?

Porque o layout mudou.

Por que o layout mudou?

Porque fornecedor implantou nova versão.

Por que ninguém percebeu?

Porque não existia validação de layout.

Causa raiz:

Ausência de validação contratual
do arquivo recebido

Observe:

Não era COBOL.

Não era Mainframe.

Não era operador.

Era falha de processo.


Técnica do Diagrama de Ishikawa

Também chamado:

Fishbone Diagram

Categorias comuns:

Pessoas
Processos
Tecnologia
Dados
Infraestrutura
Mudanças

Exemplo:

S0C7
│
├── Dados
│   └ Campo inválido
│
├── Processo
│   └ Sem validação
│
├── Mudança
│   └ Layout alterado
│
└── Governança
    └ Sem comunicação

Esse modelo é excelente para incidentes complexos.


RCA em Problemas de Performance

Outro exemplo.

Sintoma:

Batch passou de
20 minutos para 4 horas

Investigação:

CPU normal
Memória normal
I/O elevado

Descoberta:

Índice DB2 ficou REORG pendente

Sintoma:

Batch lento

Causa raiz:

Janela de manutenção não executada

Novamente:

A causa raiz não era o batch.


RCA em Problemas de CICS

Sintoma:

AICA

Timeout.

Investigação:

CICS esperando DB2

DB2 esperando:

Lock

Lock causado por:

Batch noturno

Batch preso por:

Dataset indisponível

Causa raiz:

Dataset não montado

O AICA era apenas o último dominó da cadeia.


Estrutura de um Relatório RCA Profissional

INCIDENTE:
Batch FINPAY01 falhou.

IMPACTO:
Pagamento não processado.

SINTOMA:
ABEND S0C7.

CAUSA IMEDIATA:
Campo SALARY inválido.

CAUSA RAIZ:
Fornecedor alterou layout sem aviso.

AÇÃO CORRETIVA:
Correção do layout.

AÇÃO PREVENTIVA:
Validação automática de arquivo.

RESPONSÁVEL:
Equipe de Integração.

PRAZO:
15 dias.

O Segredo dos Grandes Especialistas Mainframe

Os profissionais mais experientes não são aqueles que sabem mais comandos.

São aqueles que conseguem responder:

Por que isso aconteceu?

Porque o verdadeiro trabalho de um especialista não é apagar incêndios.

É descobrir quem acendeu o fósforo.

Quando você domina RCA, deixa de ser apenas alguém que resolve abends e passa a ser alguém que elimina problemas da raiz, reduz incidentes recorrentes e se torna uma das pessoas mais valiosas dentro da operação Mainframe.

E é exatamente nesse momento que você deixa de ser um simples operador de mensagens e passa a pensar como um verdadeiro detetive de sistemas IBM Z. ☕🚀🔎