Mostrar mensagens com a etiqueta 5.00. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta 5.00. Mostrar todas as mensagens

sábado, 21 de dezembro de 2013

📉 Checklist de Redução de MIPS Pós-Migração COBOL 5.00 — IBM Mainframe

 


📉 Checklist de Redução de MIPS

Pós-Migração COBOL 5.00 — IBM Mainframe

“Migrar é sobreviver. Reduzir MIPS é reinar.”


🟥 FASE 1 — MEDIÇÃO (sem medição é fé)

Antes de otimizar, medir

  • ☐ SMF 30 / 72 / 110 coletados

  • ☐ CPU por job / step

  • ☐ Elapsed vs CPU

  • ☐ Consumo em horário de pico

Ferramentas

  • RMF

  • OMEGAMON

  • MXG

  • SAS

  • SMF Dump Analyzer

💬 Fofoquinha:

Time que “acha” que reduziu MIPS geralmente aumentou.



🟧 FASE 2 — COMPILAÇÃO INTELIGENTE (ganho rápido)

⚙ Parâmetros que economizam CPU

OPTIMIZE(2) ← obrigatório TRUNC(BIN) ARITH(EXTEND) RULES DATA(31)

🧠 Avaliar com cuidado

NUMCHECK(ZON,BIN) SSRANGE INITCHECK

📉 Estratégia:

  • DEV/QA → ON

  • PROD → OFF somente se validado

💣 Erro comum:

Desligar NUMCHECK “pra ganhar CPU” sem limpar código.


🟨 FASE 3 — LIMPEZA DE CÓDIGO (onde mora o ouro)

🧹 Remover desperdícios clássicos

☑ DISPLAY em loop
☑ MOVE redundante
☑ IF aninhado desnecessário
☑ PERFORM THRU
☑ WORKING-STORAGE gigante não usada

📉 Impacto:

  • ↓ CPU

  • ↓ Cache miss

  • ↓ Path length

🥚 Easter-egg:

Um DISPLAY esquecido num batch grande já pagou um carro zero.


🟦 FASE 4 — ESTRUTURA DO PROGRAMA (pipeline feliz)

☑ Preferir:

  • PERFORM único

  • Parágrafos curtos

  • Fluxo previsível

☑ Evitar:

  • GO TO

  • PERFORM cruzando seções

  • Código “criativo”

🧠 COBOL 5 + z Architecture:

Código linear = melhor uso de pipeline e cache L1/L2


🟩 FASE 5 — DADOS E FORMATOS (CPU invisível)

💥 Erros caros

ErroCusto
DISPLAY usado como cálculoAlto
COMP mal definidoMédio
REDEFINES abusivoAlto
Conversão implícitaAltíssimo

☑ Use:

  • COMP / COMP-5 corretamente

  • PIC consistente

  • TRUNC(BIN)


🟪 FASE 6 — I/O: O ASSASSINO SILENCIOSO

☑ Minimizar:

  • Leitura redundante

  • WRITE desnecessário

  • SORT interno mal usado

☑ Melhorar:

  • Buffers maiores

  • Uso correto de SORT externo

  • VSAM tuning (CI/CA)

💬 Fofoquinha:

Muitas “otimizações de CPU” são na verdade I/O mal feito.


🟫 FASE 7 — JCL E EXECUÇÃO (ninguém olha, mas pesa)

☑ Revisar:

  • REGION excessivo

  • STEPLIB desnecessário

  • Programas antigos ainda rodando

☑ Avaliar:

  • Rodar batch pesado fora do pico

  • Paralelismo controlado

  • zIIP offload

📉 Ganho indireto:

CPU MSU fora do pico = custo menor


🟧 FASE 8 — zIIP / Offload (dinheiro esquecido)

☑ Verificar:

  • LE habilitado

  • Compilação compatível

  • Ambiente preparado

📉 O que pode ir pra zIIP:

  • XML

  • JSON

  • Serviços

  • Web Services

  • Partes do LE

💬 Fofoquinha:

Tem cliente pagando MIPS caro enquanto o zIIP dorme.


🟥 FASE 9 — REMOÇÃO DE CHECKS (só depois de adulto)

📌 Sequência correta:

  1. NUMCHECK ON

  2. Corrigir código

  3. Medir estabilidade

  4. NUMCHECK OFF

  5. Medir MIPS

❌ Pular etapa = incidente garantido


☠️ ERROS QUE MATAM ECONOMIA

ErroResultado
Otimizar sem SMFIlusão
OPTIMIZE(3) sem testeBug
Desligar checks cedoAbend
Ignorar I/OCPU sobe
Medir só elapsedFatura explode

🎓 RESUMO PADAWAN

✔ COBOL 5 pode reduzir MIPS
✔ Código limpo = CPU baixa
✔ Compilação correta = ganho imediato
✔ Medição manda, opinião não
✔ zIIP é dinheiro esquecido


🧠 FRASE FINAL BELLACOSA™

“Mainframe não é caro.
Caro é código ruim rodando rápido.”

 

domingo, 6 de outubro de 2013

📊 Tabela de Erros Comuns no COBOL 5.x

 



📊 Tabela de Erros Comuns no COBOL 5.x

(Quando o compilador resolve dizer a verdade)

“COBOL 5 não quebrou seu programa.
Ele apenas revelou o que sempre esteve errado.”

— Bellacosa


🟥 ERROS DE DADOS (o choque de realidade)

Erro comumO que mudou no COBOL 5Sintoma típicoImpacto
MOVE inválido alfa → numéricoNUMCHECK rigorosoErro de compilação ou runtimeJob aborta cedo
Campo não inicializadoINITCHECK ativoWarning/erroResultado imprevisível exposto
Uso de lixo em COMPValidação agressivaFalha imediataS0C7 antecipado
PIC incompatívelValidação estritaCompile errorCódigo não sobe
Truncamento inesperadoTRUNC mais explícitoValor incorretoErro contábil

🥚 Easter-egg:

O erro “novo” já existia no COBOL 4 — só não gritava.


🟧 ERROS DE CONTROLE DE FLUXO

Erro comumCOBOL 5 faz diferenteSintomaConsequência
PERFORM THRU mal definidoAnálise de fluxoWarning severoLógica rejeitada
GO TO cruzando blocosRestrição maiorErro de compilaçãoCódigo não compila
IF/END-IF inconsistentesEstrutura rígidaCompile errorRefatoração obrigatória
EXIT mal posicionadoRegras mais clarasErro lógicoFluxo interrompido

Bellacosa note:

Se o COBOL 5 reclama, o código está errado — ponto.



🟨 ERROS DE STORAGE E MEMÓRIA

Erro comumCOBOL 5 expõeSintomaResultado
REDEFINES mal alinhadoSSRANGE ativoRuntime errorS0C4
OCCURS fora de limiteChecagem ativaAbort imediatoProteção de memória
DEPENDING ON inválidoValidação em runtimeAbendCorrupção evitada
Índice mal usadoTipagem rígidaCompile errorCorreção forçada

🥚 Easter-egg técnico:

SSRANGE não cria erro — ele evita desastre.


🟦 ERROS DE ARQUIVOS (mais disciplina)

Erro comumDiferença no COBOL 5SintomaImpacto
FILE STATUS ignoradoWarning severoJob rejeitadoErro detectado cedo
READ sem AT ENDAnálise estáticaCompile warningLoop evitado
WRITE sem validaçãoChecagem formalRuntime errorIntegridade garantida
OPEN fora de ordemValidação rígidaAbendErro explícito

🟪 ERROS DE PERFORMANCE (o paradoxo)

Erro comumPor que aparece no COBOL 5SintomaEfeito
Código “lento” após migraçãoOtimização diferenteCPU aumentaAjustar OPTIMIZE
Dependência de MOVENova análiseCódigo inchadoRefatoração
DISPLAY em loopRuntime modernoBatch mais lentoRemover debug
Falta de INLINECompilação conservadoraPerformance ruimAjustar opções

Bellacosa truth:

COBOL 5 é mais rápido — se o código merecer.


🟫 ERROS DE COMPILAÇÃO (novos padrões)

Erro comumCOBOL 5 exigeSintomaAção
Código legado ambíguoSintaxe claraCompile errorRefatorar
Ignorar warningsWarnings viram errosBuild falhaCorrigir
TRUNC inconsistentePadronizaçãoValor erradoRevisar
Dependência de defaultsDefaults mudaramResultado inesperadoDefinir parms

☠️ ABENDS mais associados ao COBOL 5

ABENDMotivo
S0C7Detectado mais cedo
S0C4Proteção de memória
U4038INITCHECK / NUMCHECK
U4087Violação de range
U4093Lógica inválida

🎓 Resumo para Padawans

✔ COBOL 5 não tolera código sujo
✔ Erros aparecem mais cedo
✔ Migração revela dívidas técnicas
✔ Mais seguro, mais rápido, mais previsível


🧠 Frase Final Bellacosa™

“COBOL 4 confiava no programador.
COBOL 5 confia nos dados.”

domingo, 30 de junho de 2013

🟦 IBM Enterprise COBOL 5.0 no Mainframe

 


🟦 IBM Enterprise COBOL 5.0 no Mainframe

A virada de chave definitiva do COBOL moderno

(Análise Bellacosa Mainframe™ para Padawans)

“COBOL 5 não é uma nova versão.
É um novo contrato entre o código e o hardware.”

— Bellacosa


🕰️ Origem e data de lançamento

O IBM Enterprise COBOL for z/OS 5.0 foi lançado em junho de 2014.

Esse lançamento não foi incremental.
Foi uma ruptura controlada.

A IBM percebeu três verdades incômodas:

  1. O COBOL ainda movia o mundo 💰

  2. O hardware z havia evoluído absurdamente

  3. O compilador antigo não explorava o ferro

👉 O COBOL 5 nasce para casar código legado com silício moderno.



🔥 O que MUDA em relação ao COBOL 4.x

🧠 1. Novo compilador (rebuild total)

  • COBOL 4 = evolução do compilador antigo

  • COBOL 5 = compilador reescrito do zero

📌 Consequência direta:

  • Código mais eficiente

  • Geração de objeto completamente diferente

  • Menos tolerância a “código gambiarra”

🥚 Easter-egg:

Muito código que “funcionava há 30 anos” passou a falhar corretamente.


⚙️ 2. Foco total em hardware moderno

COBOL 5 só explora arquitetura moderna.

ItemCOBOL 4COBOL 5
Compiladorlegadonovo
Uso de CPUgenéricoespecífico
ARCHlimitadoobrigatório
Performanceboabrutal

🚫 3. Adeus retrocompatibilidade infinita

COBOL 5 removeu suporte a arquiteturas antigas.

Exemplos de coisas que não existem mais:

  • DATA(24)

  • Comportamentos indefinidos

  • Tolerância a lixo em campos numéricos

Bellacosa rule:

COBOL 5 não aceita mais “fé”.
Aceita código correto.



🖥️ Equipamento mainframe indicado

🔹 Requisitos mínimos práticos

  • zEC12 ou superior

  • Ideal: z13, z14, z15 ou z16

🔹 Por quê?

Porque COBOL 5:

  • Usa instruções modernas

  • Gera código específico por ARCH

  • Explora pipeline e cache da CPU

📌 Compilar COBOL 5 sem hardware moderno é:

comprar Ferrari para andar em estrada de terra.


⚡ Performance: onde o COBOL 5 humilha

Estudos reais da IBM mostram:

  • 10% a 40% menos CPU

  • Menos instruções por transação

  • Melhor uso de cache

🥚 Easter-egg técnico:

Muitas vezes o ganho vem sem mudar uma linha de código — só recompilando.


🧪 Parâmetros que viraram OBRIGATÓRIOS

No COBOL 5, PARM não é detalhe.

Exemplo mínimo decente:

RENT OPTIMIZE(2) ARCH(13)

⚠️ Compilar COBOL 5 sem ARCH é como:

pedir comida gourmet e comer fria.


🧨 Código legado: o choque de realidade

COBOL 5 expõe:

  • MOVE inválido

  • Dados sujos

  • Dependência de truncamento

  • Uso incorreto de COMP

👉 Por isso, migração ≠ recompilação.

Bellacosa truth:

Se o programa quebrou no COBOL 5,
ele já estava quebrado antes — só ninguém via.


📜 História resumida (linha do tempo)

  • 1960 – COBOL nasce (negócios)

  • Anos 80/90 – COBOL domina bancos

  • COBOL 3/4 – estabilidade e compatibilidade

  • 2014 – COBOL 5 – modernização real

  • Hoje – COBOL continua crítico, rápido e caro


🧑‍🎓 Primeiros passos para Padawans

1️⃣ Não migre tudo de uma vez

  • Comece por batch simples

  • Depois online

  • Depois sistemas críticos

2️⃣ Compile com tudo ligado

SSRANGE NUMCHECK FLAG(W)

3️⃣ Limpe warnings antes de produção

4️⃣ Só então ligue OPTIMIZE(2)


🧩 Exemplo simples (código ok no COBOL 5)

MOVE WS-VALOR TO WS-TOTAL IF WS-TOTAL IS NUMERIC DISPLAY "OK" ELSE DISPLAY "DADO INVALIDO" END-IF

🥚 Easter-egg:

No COBOL 4 isso talvez “passasse”.
No 5, isso é disciplina.


🟦 Conclusão Bellacosa™

COBOL 5 não moderniza o código.
Ele moderniza a verdade sobre o código.

Quem migra:

  • reduz CPU

  • ganha performance

  • perde ilusões

E isso… é maturidade mainframe.


sábado, 1 de junho de 2013

🟦 COBOL 4 vs COBOL 5 no IBM Mainframe

 


🟦 COBOL 4 vs COBOL 5 no IBM Mainframe

O compilador conservador vs o compilador sem piedade

“COBOL 4 aceita seu passado.
COBOL 5 exige que você pague por ele.”

— Bellacosa, 02:17 da manhã, após um RC=12


🧬 Visão geral rápida

AspectoCOBOL 4.xCOBOL 5.x
FilosofiaEvolução seguraModernização radical
Base técnicaMista (transição)LE-only
CompatibilidadeAltíssimaQuebra compatibilidade
PerformanceBoaExcelente
Tolerância a “jeitinhos”AltaZero
Indicado paraSistemas legadosSistemas modernos
Dor na migraçãoBaixaAlta (mas honesta)


🕰️ História resumida (contexto importa)

COBOL 4.x

  • Ponte entre o COBOL clássico e o moderno

  • Mantém compatibilidade

  • Ideal para recompilar sem reescrever

  • Estratégia: ganhar performance sem trauma

COBOL 5.x

  • Reescrito do zero

  • Totalmente 64 bits

  • Totalmente Language Environment (LE)

  • Estratégia: chega de passado mal resolvido

🥚 Easter-egg:

COBOL 5 não “evolui” o COBOL 4.
Ele substitui.


⚙️ Arquitetura interna (onde mora a diferença real)

COBOL 4

  • Compilador moderno, mas ainda tolerante

  • Suporta comportamentos históricos

  • Código objeto previsível

  • Ideal para ambientes mistos

COBOL 5

  • Backend totalmente novo

  • Otimização agressiva

  • Explora z13+

  • Assume que você escreve COBOL correto

💣 Tradução Bellacosa:

Se o código está errado, o COBOL 5 não vai fingir que está certo.


💥 Compatibilidade (a grande ferida)

COBOL 4

✔ Aceita código antigo
✔ Perdoa ambiguidade
✔ Mantém comportamento histórico

COBOL 5

❌ Quebra código legado
❌ Muda comportamento implícito
❌ Não aceita mais “funcionava assim”

Exemplos clássicos que quebram:

  • Dados mal alinhados

  • DEPEND ON inconsistente

  • MOVE implícito perigoso

  • Uso errado de REDEFINES

🥚 Easter-egg de guerra:

O mesmo código que roda há 30 anos pode ABENDAR no COBOL 5 sem mudar uma linha.


🚀 Performance

SituaçãoCOBOL 4COBOL 5
Batch pesadoBoa🔥 Excelente
Loops intensivosOk🚀 Muito melhor
CPU usageMenor que 3Menor que 4
EscalaLimitadaPensada para escala

👉 Se o objetivo é economizar MIPS, o COBOL 5 vence.


🧪 Exemplo conceitual

Código que “passa” no COBOL 4:

01 WS-NUM PIC 9(4). 01 WS-CHAR REDEFINES WS-NUM PIC X(4). MOVE 'ABCD' TO WS-CHAR. ADD 1 TO WS-NUM.

✔ COBOL 4: pode até rodar
❌ COBOL 5: comportamento indefinido → risco real

💡 COBOL 5 exige que você seja explícito.


🛠️ Parâmetros de compilação

COBOL 4

  • Mais permissivo

  • Ideal para legado

  • Bom para transição

COBOL 5

  • ARCH(n) obrigatório

  • OPTIMIZE agressivo

  • Sem modo “compatível”

🥚 Easter-egg técnico:

COBOL 5 não tem “modo COBOL 4”.
A IBM foi clara: corrija o código.


🧭 Quando usar cada um?

✔ Use COBOL 4 se:

  • Sistema é crítico

  • Código antigo e estável

  • Pouco budget para refatoração

  • Objetivo é ganho rápido e seguro

✔ Use COBOL 5 se:

  • Projeto novo

  • Modernização planejada

  • Uso de APIs, serviços, CI/CD

  • Quer performance máxima

  • Quer futuro


🧘 Estratégia Bellacosa recomendada

🥋 Caminho do Jedi Mainframe:

1️⃣ Recompile tudo em COBOL 4
2️⃣ Ative parâmetros rigorosos
3️⃣ Corrija warnings e comportamentos estranhos
4️⃣ Crie suíte de testes
5️⃣ Só então migre para COBOL 5

“Pular do 3 para o 5 é possível.
Mas você vai sangrar.”


🧠 Verdade final (sem marketing)

  • COBOL 4 é o porto seguro

  • COBOL 5 é o futuro inevitável

  • A dor do COBOL 5 vale a pena

  • Mas só para quem está preparado


🟦 Conclusão Bellacosa™

COBOL 4 mantém o legado vivo.
COBOL 5 prepara o legado para sobreviver.

Não existe “melhor versão”.
Existe a versão certa para o momento certo.