Translate

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.


terça-feira, 21 de maio de 2013

💾 VSAM para Programadores Júnior — O Guia Essencial


Bellacosa Mainframe introdução ao VSAM


 

💾 VSAM para Programadores Júnior — O Guia Essencial

Se você está entrando no universo do mainframe, vai ouvir falar de VSAM o tempo todo. Ele não é apenas um tipo de arquivo — é um dos pilares de armazenamento de dados no z/OS.


📌 O que é VSAM?

VSAM (Virtual Storage Access Method) é um método de acesso a dados criado pela IBM para organizar, armazenar e recuperar dados de forma eficiente.

Diferente dos arquivos sequenciais tradicionais, o VSAM permite:

  • Acesso rápido (direto e sequencial)
  • Organização estruturada
  • Controle mais refinado de dados

👉 Pense nele como um “mini banco de dados estruturado”, porém mais próximo do sistema operacional.


🎯 Para que serve o VSAM?

O VSAM é amplamente usado em:

  • Sistemas bancários 💳
  • Sistemas de seguros 📄
  • Aplicações críticas em tempo real (CICS) ⚡
  • Processamentos batch de alto volume

💡 Em resumo:
Ele é usado quando você precisa de alta performance + confiabilidade + acesso estruturado aos dados.


⚙️ Funcionalidades principais

O VSAM oferece várias capacidades importantes:

  • 🔎 Acesso direto (random) — buscar um registro específico
  • 🔁 Acesso sequencial — ler dados em ordem
  • 🔐 Integridade de dados
  • Alta performance em grandes volumes
  • 📊 Indexação (em alguns tipos)

🧰 IDCAMS — O canivete suíço do VSAM

O VSAM é gerenciado principalmente pelo utilitário:

👉 IDCAMS

Com o IDCAMS você pode:

  • Criar datasets VSAM (DEFINE)
  • Deletar (DELETE)
  • Listar informações (LISTCAT)
  • Reorganizar dados
  • Copiar datasets

🧪 Exemplo simples

//STEP01 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER(NAME(MEU.KSDS)
INDEXED
KEYS(10 0)
RECORDSIZE(80 80)
TRACKS(1 1))
/*

📦 Tipos de VSAM

Agora vem a parte mais importante: entender os tipos.


🔹 ESDS — Entry Sequenced Data Set

  • Dados gravados em sequência
  • Não possui chave
  • Acesso por posição (RBA)

👉 Uso típico:

  • Logs
  • Arquivos históricos

🔹 KSDS — Key Sequenced Data Set

  • Possui chave primária
  • Usa índice para acesso rápido
  • Permite acesso direto e sequencial

👉 Uso típico:

  • Sistemas bancários
  • Cadastros de clientes

💡 É o tipo mais usado!


🔹 RRDS — Relative Record Data Set

  • Registros organizados por número relativo (RRN)
  • Acesso direto pelo número do registro
  • Estrutura fixa

👉 Uso típico:

  • Tabelas com posições fixas
  • Sistemas que dependem de índice numérico

🔹 LDS — Linear Data Set

  • Não possui estrutura de registros
  • Apenas um bloco contínuo de bytes

👉 Uso típico:

  • DB2
  • Armazenamento interno de bancos

💡 É mais “baixo nível”.


⚖️ Diferenças entre ESDS, KSDS, RRDS e LDS

TipoChaveAcessoEstruturaUso comum
ESDSSequencial / RBASimplesLogs
KSDSDireto + SequencialIndexadoCadastros
RRDS❌ (usa RRN)DiretoFixoTabelas
LDSByte offsetSem registroDB2

🤝 Semelhanças entre eles

Apesar das diferenças, todos compartilham:

  • São datasets VSAM
  • Gerenciados via IDCAMS
  • Altamente performáticos
  • Usados no z/OS
  • Suportam grandes volumes de dados

🚀 VSAM NoSQL? O que é isso?

O termo “VSAM NoSQL” não é oficial da IBM, mas é usado informalmente para descrever:

👉 Uso do VSAM como armazenamento chave-valor

Exemplo:

  • KSDS funcionando como um “NoSQL”
  • A chave = identificador
  • O registro = documento

💡 Isso aparece muito em:

  • APIs expostas via CICS
  • Integrações modernas (JSON + COBOL)

🧠 Resumo estilo Bellacosa

  • VSAM é o motor de dados raiz do mainframe
  • KSDS é o “rei” 👑
  • IDCAMS é seu melhor amigo 🧰
  • LDS é o “lado obscuro” (baixo nível)
  • VSAM ainda vive — e MUITO — em sistemas críticos

segunda-feira, 20 de maio de 2013

Uma tarde no zoo de Lisboa

Aventuras com o Barbinha no Zoologico


Nao sou o melhor pai do mundo, a bem da verdade queria ter aprendido a ser melhor pai, mas de todos os meus conhecimentos essa parte sou medíocre.

Depois do meu divorcio é ida para Italia, de tempos em tempos voltava a Portugal para visitar meu filho. E nosso programa principal é a ida ao jardim Zoológico de Lisboa.

Pena que as restrições de audio tiraram toda a graça do show com os leões marinhos.



Para aqueles que não conhecem o Zoológico de Lisboa é pequenino, porém muito rico em atraçoes, possui uma área de shows com golfinhos e leoes marinhos (acredito que as primeiras memorias divertidas do meu filho, foram feitas aqui ganhando beijos do leão marinho).

Outras atraçoes existentes são o teleférico que circula todo o perímetro, o show de aves exóticas, demonstração de animais e diversos cativeiros construídos da forma mais humana possível, tentando reproduzir o habitat natural.

A principal vantagem deste zoológico é sua posição estratégica ao lado de uma estação conjugada de Trem/Metro/Ónibus e estar próximo ao centro da cidade. Evitando com isso grandes deslocações e perda de tempo em transportes.

Na área externa existe uma grande praça de alimentação com diversos restaurantes, fliperamas e brinquedos para os miúdos, com muita sombra para repousar



quarta-feira, 15 de maio de 2013

🧠⚙️ O Sistema Operacional Z — O que é z/OS?

 


🧠⚙️ O Sistema Operacional Z — O que é z/OS?

O sistema operacional que sustenta o mundo (e ninguém vê)

“Enquanto o mundo discute frameworks da moda,
o z/OS continua garantindo que o dinheiro chegue certo, no horário certo.”

Se você acha que z/OS é apenas “mais um sistema operacional”,
prepare-se para um choque de realidade.


🧱 O que é z/OS, afinal?

z/OS é o sistema operacional dos mainframes IBM Z.

Assim como:

  • Windows roda em desktops

  • Linux roda em servidores

👉 z/OS roda em computadores feitos para nunca parar.

Ele é responsável por coordenar, com precisão cirúrgica:

  • Hardware

  • Software

  • Aplicações

  • Usuários

  • Dados

  • Segurança

  • Performance

Tudo isso ao mesmo tempo, 24x7, 365 dias por ano.


🌍 Escala: onde o z/OS humilha qualquer comparação

Um sistema comum foi feito para:

  • Dezenas ou centenas de usuários

  • Alguns milhares de transações

O z/OS foi feito para:

👥 Milhares de usuários simultâneos
💳 Milhões de transações por segundo
📊 Volumes absurdos de dados sensíveis

E tudo isso:

  • Com isolamento

  • Com segurança

  • Com previsibilidade

  • Sem reboot de madrugada


⚖️ Gerenciamento de carga: o cérebro do sistema

Um dos maiores diferenciais do z/OS é o Workload Management (WLM).

Tradução Bellacosa:

O sistema decide quem merece CPU, quando e quanto.

O z/OS:

  • Prioriza aplicações críticas

  • Garante SLA

  • Evita que um JOB mal escrito derrube o sistema

  • Distribui recursos de forma justa e inteligente

No mundo distribuído, isso é “best effort”.
No z/OS, é engenharia de missão crítica.


🔐 Segurança: não é opcional, é DNA

z/OS nasceu em ambientes onde:

  • Um erro custa milhões

  • Um vazamento é inadmissível

  • Auditoria é rotina, não exceção

Ele integra nativamente:

  • RACF / ACF2 / Top Secret

  • Controle fino de acesso

  • Rastreabilidade completa

  • Separação real de ambientes

Aqui não existe:

“Depois a gente coloca segurança.”


🔄 Disponibilidade e recuperação: parar não é opção

Outro mantra do z/OS:

Falha acontece. Parada não.

O sistema foi projetado para:

  • Detectar falhas

  • Isolar problemas

  • Recuperar automaticamente

  • Continuar processando

É por isso que bancos confiam no z/OS para:

  • Compensação

  • Liquidação

  • Pagamentos

  • Crédito

  • Débito

  • Transferências globais


🗂️ Batch e ⚡ Online: dois mundos, um sistema

O z/OS domina dois universos ao mesmo tempo:

🗂️ Batch Processing

  • Grandes volumes

  • Processamento pesado

  • Horários controlados

  • Eficiência máxima

⚡ Online Transaction Processing (OLTP)

  • Respostas em tempo real

  • Usuários simultâneos

  • Latência mínima

  • Alta disponibilidade

Ambos coexistem no mesmo sistema, sem briga, sem gambiarra.


🚀 Múltiplas aplicações, isolamento total

No z/OS:

  • Uma aplicação não derruba a outra

  • Um usuário não vê o que não deve

  • Um erro não vira efeito dominó

Isso não é mágica.
É arquitetura madura, construída ao longo de décadas.


🏦 Quem confia no z/OS (e por quê)

z/OS é a espinha dorsal de:

🏦 Bancos e instituições financeiras
🏛️ Sistemas governamentais
✈️ Companhias aéreas
🚆 Transporte e logística
🏢 Grandes corporações globais

Onde existe:

  • Dinheiro

  • Dados críticos

  • Responsabilidade legal

👉 Existe z/OS.


🥚 Easter-eggs do mundo z/OS

  • z/OS já era “cloud-like” antes da nuvem existir

  • Virtualização sempre foi nativa

  • Segurança sempre foi requisito, não feature

  • Alta disponibilidade nunca foi marketing


🎓 Recado final do El Jefe ao padawan

Aprender z/OS não é aprender o passado.
É aprender como o mundo realmente funciona.

Enquanto modas vão e vêm,
o z/OS continua lá:

  • Silencioso

  • Estável

  • Processando trilhões

  • Sustentando a economia global

terça-feira, 14 de maio de 2013

🧾 COBOL 4.00 no IBM Mainframe

 


🧾 COBOL 4.00 no IBM Mainframe

Guia para Iniciantes: Código Limpo, Seguro e Econômico

“COBOL 4 não perdoa código ruim.
Ele executa… e te cobra por isso.”


🕰️ Um Pouco de Contexto (Por que COBOL 4 importa)

O Enterprise COBOL 4.00 marcou uma virada de chave no mainframe:

  • Introduziu um novo compilador

  • Passou a gerar código mais próximo da arquitetura moderna

  • Começou a penalizar código antigo e relaxado

👉 Muitos programas antigos funcionam, mas:

  • Gastam mais CPU

  • Usam mais memória

  • Sofrem em batch pesado


🧱 Estrutura Básica de um Programa COBOL (Visão Rápida)

IDENTIFICATION DIVISION. ENVIRONMENT DIVISION. DATA DIVISION. PROCEDURE DIVISION.

Para iniciantes:

  • DATA DIVISION mal feita = desastre

  • PROCEDURE DIVISION confusa = CPU jogada fora



⚠️ Grandes Perigos para Iniciantes no COBOL 4

☠️ 1. Código que “funciona” mas custa caro

Exemplo perigoso:

PERFORM UNTIL EOF READ ARQ MOVE CAMPO-A TO CAMPO-B END-PERFORM

❌ MOVE desnecessário dentro do loop
❌ Loop sem controle de volume

✅ Melhor prática:

READ ARQ AT END SET EOF TO TRUE END-READ

E só mover o que for necessário.


☠️ 2. PERFORM Excessivo (Modular demais mata CPU)

Iniciantes adoram:

PERFORM TRATA-REGISTRO

dentro de loop com milhões de registros.

⚠️ Cada PERFORM é custo.

✔️ Dica:

  • Inline lógica crítica

  • Use PERFORM para controle, não para micro-rotinas


☠️ 3. Variáveis mal definidas (memória desperdiçada)

Erro clássico:

01 WS-VALOR PIC X(1000).

Quando só precisa de 10 bytes 😱

✔️ Regra de ouro:

  • PIC do tamanho exato

  • Evite campos genéricos “pra garantir”

📉 Menos memória = menos cache miss = menos CPU.


☠️ 4. Repetir cálculos desnecessários

Erro comum:

COMPUTE WS-TOTAL = WS-QTD * WS-VALOR

feito várias vezes no loop com os mesmos valores.

✔️ Dica:

  • Calcule uma vez

  • Armazene

  • Reutilize


🧼 Como Escrever Código Mais Limpo no COBOL 4

✅ Use nomes claros

WS-VALOR-TOTAL WS-FIM-ARQUIVO

❌ Evite:

WS-A WS-X1

✅ Evite lógica escondida

Código perigoso:

IF A = B MOVE X TO Y ELSE IF C = D MOVE Z TO Y END-IF END-IF

✔️ Melhor:

  • Clareza > esperteza

  • COBOL foi feito para ser legível


🚀 Performance no COBOL 4: Dicas Práticas

⚙️ 1. Tire código de dentro de loops

Cada instrução dentro de loop custa N vezes.


⚙️ 2. Use corretamente os níveis da DATA DIVISION

  • Campos agrupados bem definidos

  • Evite REDEFINES desnecessário

REDEFINES mal usado = bugs silenciosos.


⚙️ 3. Cuidado com STRING e UNSTRING

Eles são poderosos… e caros.

✔️ Use apenas quando necessário
✔️ Evite em loops grandes


⚙️ 4. Arquivos: leia com cuidado

  • READ sequencial é barato

  • READ aleatório é caro

  • Releitura custa CPU e I/O


🧠 Pontos de Atenção que Geram Bugs em Produção

ArmadilhaProblema
Campo não inicializadoResultado imprevisível
EOF mal tratadoLoop infinito
IF aninhado demaisErro lógico
REDEFINES confusoDados corrompidos
Índices fora do limiteABEND

🧙 Curiosidades & Easter Eggs COBOL 4

  • COBOL 4 foi o primeiro passo real rumo ao COBOL 5

  • Programas antigos compilam, mas podem custar o dobro de CPU

  • O compilador já “entende” melhor a arquitetura do zSeries


🧭 Primeiros Passos Recomendados para Padawans

  1. Aprenda estrutura limpa

  2. Evite copiar código velho sem entender

  3. Sempre pense:

    “Isso vai rodar quantas vezes?”

  4. Meça CPU quando possível

  5. Menos código = menos custo


🏁 Conclusão

COBOL 4.00 é:

  • Estável

  • Poderoso

  • Implacável com código mal escrito

“No mainframe, não existe código inocente.
Só código caro ou econômico.”

 

segunda-feira, 13 de maio de 2013

O Canal de Corinto, obra de engenharia fantastica.

Obras de arte na engenharia : Canal de Corinto

No passado um barco levava quase 3 dias para sair do Golfo de Corinto e contornar todo a península do Peloponeso.

Construído no século XIX em uma época em que não existiam as modernas maquinas de escavação, abriu-se um canal de mais de 6 quilometros com 21 de largura, permitindo a passagem de barcos de um lado a outro.



Os amantes de esportes radicais usam as pontes existente no Canal para fazerem bump jump e outras maluquices.

Outra curiosidade é q existe um semáforo nas entradas do canal que coordena o fluxo das embarcações.

sábado, 11 de maio de 2013

Navegação pelo Mar Adriático, viagem a Grécia.

O barco de ligação entre Bari (Italia) e Patras (Grécia)


Decidido retornar ao Brasil, após 11 anos vivendo fora resolvi fazer uma ultima grande aventura, para poder fechar este ciclo com chave de ouro.

Após perambular pelo sul da Itália, resolvi mover-me a leste até a cidade dos meus antepassados Bari, de la apanhei um barco com destino a Grécia.


Este navio é enorme funciona como uma balsa, fazendo ligação entre estes 2 países. Vejam pelo filme o tamanho do porão onde sao estacionados os carros e caminhoes, em cima alguns camarotes e outros luxos.

A viagem dura a noite toda, partindo as 5 da tarde e chegando por volta das 6 da manha. Recomendo chegarem cedo, pois podem escolher um bom lugar para montar seu acampamento.