Mostrar mensagens com a etiqueta check list. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta check list. Mostrar todas as mensagens

quinta-feira, 18 de dezembro de 2025

✅ CHECKLISTS DE PRODUÇÃO – REXX MAINFRAME (z/OS)

 


✅ CHECKLISTS DE PRODUÇÃO – REXX MAINFRAME (z/OS)




1️⃣ Checklist Geral – Antes de colocar qualquer REXX em produção

☐ Objetivo do exec claramente definido
☐ Exec documentado no cabeçalho (nome, autor, data, função)
☐ Tratamento de erro implementado (SIGNAL ON ERROR, RC verificado)
☐ Uso de PROCEDURE para isolar variáveis
☐ Variáveis globais padronizadas (gVar, kConst)
☐ Nenhuma dependência “hardcoded” (HLQ, volumes, consoles)
☐ Exec testado com dados inválidos e cenários de erro
☐ Não deixa datasets alocados ao final
☐ Código revisado por outro analista (peer review)


2️⃣ Checklist – REXX Interpretado (TSO)

☐ Exec localizado em PDS autorizado (SYSEXEC ou SYSPROC)
☐ Não depende de perfil pessoal do usuário
☐ Usa ADDRESS TSO explicitamente quando necessário
☐ Usa EXIT RC adequado (0, 4, 8, 12…)
☐ Não usa TRACE ?R ou debug ativo em produção
☐ Não usa SAY excessivo (poluição de spool)
☐ EXECIO fecha corretamente arquivos (FINIS)
☐ Testado em sessão TSO limpa (sem allocations prévias)


3️⃣ Checklist – REXX Compilado (CEXEC / OBJECT)

☐ Código compilado com XREF para revisão
☐ Opções de compilação corretas:

  • SLINE se usa TRACE ou SOURCELINE()

  • ALT se precisa Alternate Library

  • CONDENSE avaliado (trade-off load x execução)
    %COPYRIGHT incluído (requisito IBM / auditoria)
    ☐ Código não depende de comportamento interpretado
    ☐ Dataset CEXEC alocado corretamente no SYSEXEC
    ☐ Teste comparativo interpretado vs compilado validado
    ☐ Performance validada (CPU e tempo)


4️⃣ Checklist – Execução REXX em Batch (IKJEFT01)

☐ Programa correto (IKJEFT01, IKJEFT1A ou IKJEFT1B)
SYSEXEC concatenado corretamente
SYSTSIN definido corretamente
SYSTSPRT definido para saída do REXX
SYSPRINT definido para mensagens do sistema
☐ Não depende de interação (PULL sem input)
☐ RC do jobstep validado no JCL
☐ Exec não depende de terminal (ISPF, DISPLAY)


5️⃣ Checklist – REXX em Batch via IRXJCL

☐ Exec não usa comandos TSO (ALLOCATE, PROFILE, etc.)
☐ Todos os DDs necessários definidos no JCL
☐ Não usa SYSCALL / POSIX
☐ Uso de EXECIO validado com datasets físicos
☐ Testado isoladamente sem ambiente TSO
☐ RC tratado corretamente (IRXJCL retorna RC do exec)


6️⃣ Checklist – REXX com comandos MVS (CONSOLE)

☐ Usuário possui autoridade RACF:

  • ☐ CLASS(CONSOLE)

  • ☐ CLASS(OPERCMDS)
    CONSPROF configurado corretamente
    CONSOLE ACTIVATE e DEACTIVATE sempre pareados
    ☐ Uso de CART único por comando
    ☐ Uso de GETMSG() com timeout adequado
    ☐ Exec não bloqueia console (wait infinito)
    ☐ Exec retorna ao ADDRESS TSO ao final
    ☐ Tratamento de mensagens inesperadas implementado


7️⃣ Checklist – System REXX (SYSREXX)

🔹 Planejamento

☐ SYSREXX realmente necessário (não usar se TSO resolve)
☐ Exec não inicia com letras A–I
☐ Exec armazenado em REXXLIB (não alterar SYS1.SAXREXEC)
☐ Nome do exec documentado e único


🔹 Ambiente

☐ AXR subsystem ativo
☐ Parmlib AXR00 configurado
☐ CPF definido corretamente
☐ AXRUSER definido e validado
☐ Teste em ambiente não produtivo realizado


🔹 Execução

☐ Modo correto definido:

  • ☐ TSO=NO (preferencial)

  • ☐ TSO=YES (se precisa ALLOCATE)
    ☐ Exec não assume userid fixo
    ☐ Exec limpa recursos explicitamente
    ☐ Não depende de terminal ou ISPF
    ☐ Exec tolera execução concorrente


8️⃣ Checklist – Uso das Funções SYSREXX

AXRCMD

☐ Timeout definido
☐ Stem inicializado
stem.0 validado
☐ Mensagens tratadas (não apenas exibidas)

AXRWTO / AXRMLWTO

☐ Uso consciente (não floodar console)
ConnectId controlado
☐ LineType correto (L, D, DE)

AXRWAIT

☐ Tempo mínimo necessário
☐ Não usado como loop de espera infinita


9️⃣ Checklist – Segurança e Auditoria

☐ Exec documenta comandos críticos executados
☐ Nenhum comando destrutivo sem confirmação
☐ Exec compatível com RACF auditing
☐ Exec não eleva privilégio indevidamente
☐ Exec respeita ambiente SYSPLEX
☐ Logs rastreáveis (WTO, SYSLOG, dataset)


🔟 Checklist – Pós-produção

☐ Exec monitorado em produção
☐ CPU e tempo medidos
☐ Exec incluído em inventário técnico
☐ Plano de rollback definido
☐ Procedimento operacional documentado
☐ Responsável técnico identificado


📌 Comentário final (experiência de produção)

REXX em produção não falha por sintaxe — falha por falta de checklist.

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.”

 

quinta-feira, 14 de novembro de 2013

🧪 Checklist de Migração Segura do COBOL 4.xx para o COBOL 5.00 em IBM Mainframe

 


Prepare o café, o JCL limpo e desapegue emocionalmente do COBOL 4 ☕😄
Segue o 🧪 Checklist definitivo de migração segura COBOL 4.xx → COBOL 5.00, no estilo Bellacosa Mainframe™ — com dicas reais, fofoquices de corredor, easter-eggs, performance, otimização e onde economizar MIPS (ou perder, se vacilar).


🧪 Checklist de Migração Segura

COBOL 4.xx → COBOL 5.00

“Não é só recompilar. É amadurecer.”


🟥 FASE 0 — ALINHAMENTO MENTAL (antes de tocar no código)

Aceite o fato:

COBOL 5 não é “novo compilador”, é novo contrato social.

Objetivo real da migração

  • ☐ Só suportabilidade IBM

  • ☐ Performance

  • ☐ Segurança

  • ☐ Redução de MIPS

  • ☐ Tudo acima (resposta certa)

Ambiente

  • ☐ z/OS compatível

  • ☐ LE atualizado

  • ☐ Hardware z/EC12+ (ideal z13, z14, z15, z16)

🥚 Easter-egg:

Migração sem zIIP/zAAP habilitado = dinheiro jogado fora.



🟧 FASE 1 — COMPILAÇÃO CONTROLADA (modo “raio-X”)

🔍 Compile ANTES de migrar com COBOL 4:

SSRANGE NUMCHECK INITCHECK FLAG(I)

Por quê?
Você força o COBOL 4 a gritar como o COBOL 5 grita naturalmente.

💬 Fofoquinha real:

Quem ignora warnings no COBOL 4 sofre três vezes mais no COBOL 5.


🟨 FASE 2 — LIMPEZA DE CÓDIGO (onde mora 80% do risco)

Dados (o inferno clássico)

☑ Remover:

  • ☐ MOVE lixo → numérico

  • ☐ REDEFINES criativos

  • ☐ PIC inconsistentes

  • ☐ COMP usado como DISPLAY

☑ Revisar:

  • ☐ WORKING-STORAGE inicializada

  • ☐ Índices vs subscripts

  • ☐ OCCURS DEPENDING ON

💣 Erro campeão pós-migração:

“Sempre funcionou” — até o COBOL 5 resolver verificar.


🟦 FASE 3 — CONTROLE DE FLUXO (o que o COBOL 5 odeia)

☑ Eliminar:

  • ☐ PERFORM THRU atravessando parágrafos

  • ☐ GO TO cruzando seções

  • ☐ IF sem END-IF

☑ Preferir:

  • ✔ PERFORM parágrafo único

  • ✔ Estrutura clara

  • ✔ EXIT PARAGRAPH / EXIT PERFORM

🥚 Easter-egg:

O COBOL 5 não perdoa “lógica artística”.


🟩 FASE 4 — PARÂMETROS DE COMPILAÇÃO (onde se ganha MIPS)

⚙ Parâmetros recomendados (base segura)

OPTIMIZE(2) NUMCHECK SSRANGE INITCHECK TRUNC(BIN) ARITH(EXTEND) RULES

💰 Onde ECONOMIZAR MIPS

AçãoImpacto
OPTIMIZE(2 ou 3)↓ CPU
Remover DISPLAY em loop↓ I/O
Eliminar MOVE redundante↓ CPU
Código mais linear↓ cache miss

💬 Fofoquinha:

OPTIMIZE(3) sem testes = pedido de incidente.


🟪 FASE 5 — PERFORMANCE REAL (mitos e verdades)

❌ MITOS

  • “COBOL 5 é mais lento” ❌

  • “Vai gastar mais CPU” ❌

✅ VERDADES

  • Código ruim fica visivelmente ruim

  • Código bom fica muito mais rápido

  • Instruções modernas são melhor exploradas

🏎 Ganhos comuns

CenárioGanho
Batch pesado5–20%
Cálculo intensivoaté 30%
Código limpoabsurdo

🟫 FASE 6 — TESTES (sem heroísmo)

☑ Testes obrigatórios:

  • ☐ Unitário

  • ☐ Integração

  • ☐ Batch completo

  • ☐ Volumetria real

  • ☐ Stress

☑ Comparar:

  • ☐ CPU

  • ☐ Tempo

  • ☐ Output

  • ☐ Logs

🥚 Easter-egg cruel:

Se você não comparar CPU, o financeiro vai.


🟥 FASE 7 — PRODUÇÃO (o momento da verdade)

☑ Primeira subida:

  • ☐ Job crítico isolado

  • ☐ Monitoramento ativo

  • ☐ Plano de rollback

☑ Pós-produção:

  • ☐ Ajustar OPTIMIZE

  • ☐ Avaliar NUMCHECK off (se seguro)

  • ☐ Medir MIPS real

💬 Fofoquinha final:

Muitas empresas desligam NUMCHECK depois — mas só depois de provar que o código presta.


☠️ ERROS CLÁSSICOS NA MIGRAÇÃO

ErroResultado
Recompilar tudo de uma vezCaos
Ignorar warningsIncidente
Confiar em defaultsResultado errado
Não medir CPUSurpresa na fatura

🎓 RESUMO PADAWAN

✔ COBOL 5 exige maturidade
✔ Migração expõe dívidas técnicas
✔ Performance melhora com código limpo
✔ Segurança aumenta
✔ MIPS podem cair (ou explodir)


🧠 FRASE FINAL BELLACOSA™

“Migrar para COBOL 5 não é atualizar o compilador.
É atualizar o programador.”