quinta-feira, 3 de novembro de 2022

COBOL número computational, os comps da vida


COBOL número computational, os comps da vida

Em COBOL, um número computational é um tipo de dado numérico armazenado em formato interno otimizado para processamento, em vez de formato textual. Ele é definido usando cláusulas como COMP, COMP-1, COMP-2, COMP-3, COMP-4 e COMP-5. Esses formatos permitem cálculos mais rápidos e eficientes, utilizando representação binária, decimal empacotada ou ponto flutuante. Números computacionais são amplamente usados em sistemas de mainframe para contadores, cálculos financeiros e operações matemáticas intensivas. A escolha do tipo correto garante melhor desempenho, precisão e compatibilidade com o hardware IBM z/OS.


1. COMPUTATIONAL-1 (COMP-1)

  • Uso principal: Representar números reais de ponto flutuante de precisão simples (single precision).

  • Formato interno:

    • Armazena números em 32 bits (4 bytes).

    • Compatível com operações matemáticas em ponto flutuante, permitindo frações.

  • Quando usar:

    • Para cálculos que envolvem valores decimais aproximados, como medições científicas, estatísticas ou cálculos financeiros que toleram pequenas imprecisões.

  • Exemplo de declaração:

01 SALDO PIC S9(7)V99 COMP-1.

Aqui V indica a posição decimal virtual; COMP-1 diz que será armazenado como 32-bit float.


2. COMPUTATIONAL-2 (COMP-2)

  • Uso principal: Representar números reais de ponto flutuante de precisão dupla (double precision).

  • Formato interno:

    • Armazena números em 64 bits (8 bytes).

    • Permite maior precisão e alcance do que COMP-1.

  • Quando usar:

    • Para cálculos que requerem alta precisão, como cálculos científicos complexos, engenharia ou finanças com grandes valores e frações pequenas.

  • Exemplo de declaração:

01 TAXA-INTERESSE PIC S9(9)V999 COMP-2.

💡 Dica Mainframe:

  • Evite usar COMP-1/COMP-2 para somas monetárias exatas, porque erros de arredondamento podem ocorrer. Para dinheiro, prefira PACKED-DECIMAL (COMP-3).

  • COMP-1 e COMP-2 são ideais para científico ou grande alcance numérico.


🔹 COMPUTATIONAL-3 (COMP-3)

O queridinho do mundo bancário

📌 O que é

  • Decimal empacotado (Packed Decimal)

  • Cada dígito ocupa 4 bits

  • Último nibble guarda o sinal (C/D/F)

📦 Armazenamento

  • 2 dígitos por byte

  • Muito compacto e exato

🧠 Para que serve

  • Valores monetários

  • Cálculos que NÃO podem ter erro de arredondamento

💰 Onde é usado

  • Bancos 🏦

  • Folha de pagamento

  • Sistemas financeiros

  • Contabilidade

🧪 Exemplo

01 SALDO-CONTA PIC S9(9)V99 COMP-3.

🕵️ Fofoquice mainframe

Se você fizer cálculo de dinheiro sem COMP-3, algum sysprog vai te xingar mentalmente.


🔹 COMPUTATIONAL-4 (COMP-4)

O binário antigo / compatível

📌 O que é

  • Número inteiro binário

  • Representação dependente do compilador

  • Hoje é tratado como sinônimo de COMP em muitos ambientes

📦 Armazenamento típico

  • 2 bytes → até 4 dígitos

  • 4 bytes → até 9 dígitos

  • 8 bytes → até 18 dígitos

🧠 Para que serve

  • Contadores

  • Índices

  • Quantidades

  • Performance melhor que COMP-3

🧪 Exemplo

01 TOTAL-REGISTROS PIC S9(9) COMP-4.

🕵️ Fofoquice mainframe

COMP-4 é aquele tio antigo: funciona, mas ninguém recomenda para sistemas novos.


🔹 COMPUTATIONAL-5 (COMP-5)

O binário moderno e rápido

📌 O que é

  • Binário puro de hardware

  • Totalmente compatível com o processador IBM Z

  • Não depende de PIC decimal

🚀 Performance

  • Mais rápido que COMP e COMP-4

  • Ideal para loops intensivos

🧠 Para que serve

  • Contadores grandes

  • Cálculos inteiros pesados

  • Alto desempenho

🧪 Exemplo

01 LOOP-COUNTER PIC S9(9) COMP-5.

⚠️ Atenção

  • Nunca use para dinheiro

  • Pode gerar resultados inesperados se misturado com decimais

🕵️ Easter-egg

Se você quer performance máxima, COMP-5 é o “turbo mode” do COBOL.


🧾 Comparação rápida (estilo prova)

TipoFormatoExatidãoPerformanceUso típico
COMP-3Decimal empacotado✅ ExataMédiaDinheiro
COMP-4Binário❌ InteiroBoaContadores
COMP-5Binário nativo❌ Inteiro🚀 AltaLoops, índices

🧠 Regra de ouro Bellacosa

💰 Dinheiro → COMP-3 🔢 Contador simples → COMP-4 ⚡ Performance → COMP-5 ❌ Nunca misture sem conversão

☠️ Erros clássicos (que dão ABEND ou bug fantasma)

  • Usar COMP-5 para valores monetários

  • Somar COMP-3 com COMP-5 sem MOVE intermediário

  • Definir PIC errado para binário

  • Converter automático e confiar “na sorte”

Mini-diagrama COBOL – Tipos Computacionais

TipoArmazenamentoTamanho típicoPrecisão / Uso principalObservações importantes
COMP-1Ponto flutuante32 bits (4 bytes)Números reais de precisão simples (float)Aproximado; cuidado com cálculos monetários
COMP-2Ponto flutuante64 bits (8 bytes)Números reais de precisão dupla (double float)Para cálculos científicos ou alta precisão
COMP-3Decimal empacotado1.5 bytes por 3 dígitosInteiros ou decimais exatos; usado para dinheiroEvita erros de arredondamento; mais lento que binário
COMP-4Binário nativo2, 4 ou 8 bytesInteiros; compatível com operações de hardware nativoDependente do compilador; às vezes usado em sistemas antigos
COMP-5Binário nativo2, 4 ou 8 bytesInteiros; compatível com hardware moderno (IEEE)Mais rápido; ideal para grandes cálculos inteiros

Sem comentários:

Enviar um comentário