Translate

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

sábado, 18 de abril de 2026

⚠️ O Erro Silencioso em VSAM: Como Escolher KSDS vs ESDS vs RRDS Pode Derrubar Seu Sistema (Sem Você Perceber)

 

Bellacosa Mainframe erros silenciosos no VSAM e cabum no sistema

⚠️ O Erro Silencioso em VSAM: Como Escolher KSDS vs ESDS vs RRDS Pode Derrubar Seu Sistema (Sem Você Perceber)

🔥 KSDS vs ESDS vs RRDS — A visão que só aparece em produção

🧠 Primeiro: o erro clássico

Muita gente aprende assim:

  • KSDS = com chave
  • ESDS = sequencial
  • RRDS = relativo

👉 Isso é tecnicamente correto…
👉 Mas arquiteturalmente incompleto

A decisão real é:

Como o sistema acessa, cresce e evolui ao longo do tempo?


🟦 1. KSDS (Key-Sequenced Data Set) — O “DB2 simplificado”

💡 O que ele realmente é

Um KSDS é basicamente um índice + dados organizados por chave.

👉 Pense como:

  • “mini banco de dados”
  • com acesso direto via índice

📌 Quando ele brilha (vida real)

✔ Sistemas OLTP (CICS principalmente)
✔ Lookup online em alta frequência
✔ Dados vivos (update/delete constantes)


🏦 Exemplo real (CICS bancário)

Arquivo: ACCT-MASTER (KSDS)
Chave: ACCOUNT-NUMBER

CICS READ FILE('ACCT') RIDFLD(WS-ACC)

👉 Aqui não existe “loop”
👉 É acesso direto → milissegundos


⚙️ Internamente (ponto que poucos exploram)

  • CI (Control Interval)
  • CA (Control Area)
  • Índice B-tree

Quando você faz INSERT fora de ordem:

👉 💥 CI SPLIT
👉 💥 CA SPLIT


🚨 Problema clássico de produção

Sistema crescendo + inserts aleatórios:

  • aumento de I/O
  • fragmentação
  • queda de performance

🔧 Solução clássica

//REORG EXEC PGM=IDCAMS
//SYSIN DD *
REPRO INFILE(IN) OUTFILE(OUT)
/*

👉 Rebalanceia tudo
👉 Melhora locality de acesso


🧠 Insight avançado

Se você vê:

  • KSDS com 90% inserts sequenciais
    👉 talvez ESDS fosse melhor

🟨 2. ESDS (Entry-Sequenced Data Set) — O “log natural”

💡 O que ele realmente é

Um ESDS é:

“append-only storage com endereço físico (RBA)”


📌 Quando ele brilha

✔ Batch pesado
✔ Logs
✔ Trilhas de auditoria
✔ Streaming de eventos


🧾 Exemplo real

Arquivo: TRANS-LOG (ESDS)

WRITE REGISTRO
WRITE REGISTRO
WRITE REGISTRO

👉 Sempre no final
👉 Sem reorganização de chave


🚀 Por que ele é rápido?

  • Sem index
  • Sem split
  • Escrita linear

👉 É praticamente I/O sequencial puro


⚠️ Limitação crítica

Você não faz:

READ WHERE ID = X

👉 Você precisa:

  • RBA (posição física)
    ou
  • ler sequencialmente

🔥 Caso real (erro clássico)

Projeto usando KSDS para log:

  • CI split constante
  • alto consumo de CPU

👉 Troca para ESDS:

  • batch caiu de 2h → 40 min

🧠 Insight avançado

ESDS é perfeito para:

👉 event sourcing no mainframe

(sim, isso existe e funciona muito bem)


🟥 3. RRDS (Relative Record Data Set) — O “array do mainframe”

💡 O que ele realmente é

Um RRDS é:

“um vetor indexado por posição (RRN)”


📌 Quando ele brilha

✔ Tabelas fixas
✔ Configuração
✔ Lookup ultra rápido sem chave


🧾 Exemplo real

RRN 1 → Config geral
RRN 2 → Limites
RRN 3 → Parâmetros regionais

Código:

READ FILE RRDS-FILE
RECORD NUMBER IS WS-RRN

👉 Acesso direto
👉 Sem índice
👉 Sem busca


⚡ Performance

  • O(1) direto
  • extremamente previsível

⚠️ Problemas

❌ Espaço desperdiçado
❌ Não escala bem
❌ Difícil de evoluir


🔥 Caso real

RRDS com 10.000 slots
Uso real: 300

👉 97% vazio
👉 storage desperdiçado


🧠 Insight avançado

RRDS é ótimo quando:

👉 você quer comportamento determinístico (tipo tabela estática em memória)


⚖️ Comparação prática (nível arquiteto)

CritérioKSDSESDSRRDS
Acesso por chave
Acesso sequencial
Acesso diretovia RBAvia RRN
Insertmédio🔥 rápidofixo
Update⚠️ difícillimitado
Espaçoeficienteeficiente❌ pode desperdiçar
Complexidademédiabaixabaixa

🧠 Decisão real (mentalidade de produção)

✔ Use KSDS quando:

👉 O negócio fala em ID, chave, busca direta


✔ Use ESDS quando:

👉 O sistema fala em log, trilha, histórico, append


✔ Use RRDS quando:

👉 O sistema fala em posição fixa, tabela estática


🔥 O insight que separa júnior de sênior

VSAM não é sobre “tipo de arquivo”
É sobre padrão de acesso + comportamento do dado


🚨 Anti-patterns clássicos

❌ KSDS para log
❌ ESDS para lookup
❌ RRDS para dados dinâmicos


💥 Extra (nível especialista)

🔄 Combinações reais em sistemas grandes

  • KSDS → dados ativos
  • ESDS → histórico/log
  • RRDS → parâmetros

👉 Isso é MUITO comum em sistemas CICS/Batch

sexta-feira, 13 de março de 2026

🖖 “Scotty, Teletransporte Já!” — O Dia em que o Mainframe Aprendeu a Viajar Mais Rápido que a Luz (e Deixou o Dr. Spock Intrigado)

 

Bellacosa Mainframe comenta sobre o hipersocket o teletransporte do Ibm Mainframe

🖖 “Scotty, Teletransporte Já!” — O Dia em que o Mainframe Aprendeu a Viajar Mais Rápido que a Luz (e Deixou o Sr. Spock Intrigado)

Padawan… aproxime-se do console 3270.
Hoje você não vai aprender apenas uma tecnologia.
Vai descobrir um dos truques mais elegantes, silenciosos e quase “alienígenas” do IBM Z.

Uma tecnologia tão absurda que, se existisse na USS Enterprise, o Dr. Spock levantaria uma sobrancelha e diria:

“Fascinante.”

Estamos falando do lendário — e subestimado — HiperSockets.


🚀 O que é HiperSockets (sem enrolação acadêmica)

HiperSockets é uma rede TCP/IP completamente interna ao mainframe, baseada em memória.

Sem:

  • ❌ cabos

  • ❌ placas de rede externas

  • ❌ switches

  • ❌ roteadores

  • ❌ latência física

👉 É comunicação entre sistemas… sem sair da máquina.

Se várias LPARs são universos paralelos dentro do IBM Z, o HiperSockets é o portal dimensional entre eles.


🖖 Analogia Star Trek — Teletransporte do Enterprise

Quando a tripulação se transporta:

USS Enterprise → superfície do planeta

Eles não pegam nave auxiliar.
Não atravessam o espaço.
Não passam pelo “trânsito orbital”.

👉 Eles simplesmente desaparecem aqui… e reaparecem lá.

HiperSockets faz exatamente isso com pacotes TCP/IP.

Fluxo de pacotes via tcpip normal


Sem:

CPU → NIC → cabo → switch → roteador → firewall → outro servidor

Fluxo de pacotes tcpip via hipersocket mainframe


Mas sim:

CPU → memória → outra LPAR → pronto

Se o Spock fosse arquiteto de sistemas, ele diria:

“Altamente lógico. A rede externa é… desnecessária.”


🧠 Como funciona (o segredo técnico)


O coração da tecnologia é um hardware especial:

➡️ IQD — Internal Queued Direct Communication

Ele permite que diferentes LPARs troquem dados através de filas na memória compartilhada, sob controle do PR/SM (hipervisor do Z).

Para o sistema operacional:

👉 Parece uma interface de rede normal
👉 Usa TCP/IP padrão
👉 Funciona com aplicações sem modificação

Mas fisicamente…

Nada saiu da máquina.


📜 Origem e História — Quando a IBM “trapaceou” na rede

HiperSockets apareceu no final dos anos 1990 / início dos 2000, junto com a evolução dos mainframes para ambientes massivamente virtualizados.

Problema da época:

💣 Muitas LPARs
💣 Muito tráfego interno
💣 Gargalo nas redes físicas
💣 Latência desnecessária

A IBM fez algo tipicamente “mainframe”:

“E se a gente simplesmente não usar a rede?”

Resultado: uma LAN interna de velocidade absurda.


🔥 Aplicações práticas (mundo real)

Padawan, isto aqui move bancos, bolsas e governos.

Usos clássicos:

✔ z/OS ↔ Linux on Z
✔ Application server ↔ DB2
✔ CICS ↔ Middleware
✔ Batch ↔ serviços online
✔ Comunicação entre LPARs de produção
✔ Gateways internos de APIs
✔ Ambientes Parallel Sysplex

Em sistemas financeiros de altíssimo volume, HiperSockets é praticamente obrigatório.


⚡ Por que é tão rápido?

Porque elimina o inimigo número 1 da computação distribuída:

👉 A rede física

Sem interrupções externas:

  • Sem congestionamento

  • Sem jitter

  • Sem perda de pacote

  • Sem latência de hardware externo

  • Sem overhead de drivers físicos

É comunicação memória → memória.


🔒 Segurança digna da Seção 31

O tráfego:

🛡️ Nunca sai da máquina
🛡️ Não pode ser sniffado externamente
🛡️ Não depende de infraestrutura de rede
🛡️ Reduz superfície de ataque

Em ambientes críticos, isso é ouro puro.


🥚 Easter Egg Mainframe — O detalhe que poucos contam

HiperSockets usa endereçamento IP normal.

Sim.

Você pode fazer um:

PING 10.x.x.x

…e estar falando com outro sistema que literalmente está:

👉 No mesmo gabinete
👉 Na mesma CPU
👉 A poucos nanossegundos de distância

É como enviar uma carta para a sala ao lado… usando o protocolo postal internacional.


🤯 Curiosidade que faz arquitetos sorrirem

Em data centers distribuídos, gasta-se milhões para reduzir latência de rede.

No IBM Z, muitas vezes a solução é:

“Coloque tudo dentro da mesma máquina.”


🧙‍♂️ Versão Bellacosa para guardar na alma

Se servidores distribuídos são naves viajando pelo espaço…
o IBM Z é um universo inteiro dentro de uma única estrela.

E o HiperSockets é o teletransporte.


🖖 Epílogo — Spock aprovaria?

Sem dúvida.

Porque é:

✔ Elegante
✔ Eficiente
✔ Discreto
✔ Extremamente lógico
✔ Assustadoramente poderoso

Exatamente como a engenharia Vulcana.


 



domingo, 1 de fevereiro de 2026

🔥 IMPORT QUEBRANDO O JCL: As Bibliotecas Python que TODO COBOL Developer Precisa Conhecer (Antes que Seja Tarde!)

 

Bellacosa Mainframe comenta sobre as Bibliotecas do Python

🔥 “IMPORT QUEBRANDO O JCL: As Bibliotecas Python que TODO COBOL Developer Precisa Conhecer (Antes que Seja Tarde!)”

Se você viveu anos dominando COBOL, JCL, SORT, VSAM e DB2, prepare-se: no mundo Python, tudo começa com uma única instrução que parece inocente… mas carrega um poder absurdo:

import alguma_coisa

Sim… o famoso IMPORT é o equivalente moderno do seu EXEC PGM=, do seu CALL, do seu COPYBOOK — só que MUITO mais flexível, dinâmico e (às vezes) até perigoso 😏

Hoje você vai conhecer as principais bibliotecas Python — no estilo Bellacosa Mainframe — com história, analogias com o mundo z/OS, exemplos práticos e até alguns easter eggs escondidos 👀


🧠 O que é o import para um COBOL Developer?

Antes de sair listando bibliotecas, vamos traduzir:

COBOL / MainframePython
COPYBOOKimport module
CALL programimport + função
JCL EXECexecução via script
STEPLIBsys.path
Load Modulepacote instalado

👉 Em Python, tudo é módulo.
👉 E cada módulo é carregado com import.


🚀 1. math — O “COMPUTE TURBO” do Python

📜 Origem

Biblioteca padrão do Python, baseada na linguagem C. É tão antiga quanto o próprio Python (criado por Guido van Rossum nos anos 90).

💡 Analogia Mainframe

É o seu COMPUTE, só que com superpoderes científicos.

🔧 Exemplo

import math

print(math.sqrt(144)) # 12
print(math.pi) # 3.14159...

🥚 Easter Egg

import this

💥 NÃO é math… mas imprime o Zen do Python (leitura obrigatória!)


📊 2. pandas — O “SORT + ICETOOL + FILE-AID” em Esteroides

📜 Origem

Criado por Wes McKinney enquanto trabalhava com dados financeiros.

💡 Analogia Mainframe

👉 É o seu DFSORT + ICETOOL + JOINKEYS + relatório… tudo junto!

🔧 Exemplo

import pandas as pd

df = pd.read_csv("clientes.csv")
print(df.head())

🤯 Poder real

  • JOIN de arquivos → 1 linha
  • GROUP BY → instantâneo
  • Filtros → estilo SQL

🔢 3. numpy — O “PACKED DECIMAL do Futuro”

📜 Origem

Baseado em bibliotecas matemáticas de alto desempenho (Fortran/C).

💡 Analogia Mainframe

👉 Pense em campos COMP-3 vetorizados absurdamente rápidos

🔧 Exemplo

import numpy as np

arr = np.array([1, 2, 3])
print(arr * 10)

⚡ Destaque

Operações são feitas em lote — como um SORT interno ultrarrápido.


🌐 4. requests — O “CICS + HTTP” Simplificado

📜 Origem

Criada para substituir a complexidade do urllib.

💡 Analogia Mainframe

👉 Um EXEC CICS WEB RECEIVE/SEND moderno

🔧 Exemplo

import requests

res = requests.get("https://api.github.com")
print(res.status_code)

🤯 Impacto

Hoje, integrar sistemas virou algo trivial com essa lib.


🗂️ 5. os — O “IDCAMS + TSO + ISPF” do Python

📜 Origem

Parte do core do Python — interface direta com o sistema operacional.

💡 Analogia Mainframe

👉 Mistura de:

  • TSO commands
  • IDCAMS
  • JCL utilities

🔧 Exemplo

import os

print(os.getcwd())
os.mkdir("novo_diretorio")

⏱️ 6. datetime — O “DATE ROUTINE” sem dor

💡 Analogia Mainframe

👉 Chega de manipular data com substring 😅

🔧 Exemplo

from datetime import datetime

agora = datetime.now()
print(agora)

🤖 7. scikit-learn — O “AI Batch Job”

📜 Origem

Biblioteca de Machine Learning open source.

💡 Analogia Mainframe

👉 Um JOB que aprende sozinho com os dados 😳

🔧 Exemplo

from sklearn.linear_model import LinearRegression

📈 8. matplotlib — O “PRINT + GRAPHICS” moderno

💡 Analogia Mainframe

👉 Seus relatórios… só que agora VISUAIS

🔧 Exemplo

import matplotlib.pyplot as plt

plt.plot([1,2,3], [4,5,6])
plt.show()

🧪 9. random — O “TEST DATA GENERATOR”

🔧 Exemplo

import random

print(random.randint(1, 100))

👉 Perfeito para gerar massa de testes (adeus planilhas fake!)


🔥 10. sys — O “JCL PARM + REGION + EXEC CONTROL”

💡 Analogia Mainframe

👉 Controle total do runtime

🔧 Exemplo

import sys

print(sys.version)

🧠 Curiosidades que vão explodir sua cabeça COBOL

  • Python tem biblioteca para TUDO — literalmente
  • Você pode criar sua própria lib (tipo um COPYBOOK inteligente)
  • O import pode ser dinâmico (isso assusta qualquer programador batch 😅)
__import__("math")

⚠️ Anti-pattern que COBOL Dev costuma fazer

❌ Escrever tudo em um único script (tipo programa monolítico COBOL)
✅ Em Python → modularize tudo com import


🎯 Conclusão: O verdadeiro SHIFT mental

Se no mainframe você pensa em:

👉 Programas
👉 Jobs
👉 Steps

No Python você precisa pensar em:

👉 Módulos
👉 Bibliotecas
👉 Ecossistema


☕ Mensagem final estilo Bellacosa

Python não é só uma linguagem…

É um ecossistema onde o poder está no import.

Se você domina as bibliotecas…
Você não escreve código — você orquestra soluções.


domingo, 11 de janeiro de 2026

Single Source of Truth (SSOT): a verdade nua, crua… e versionada

 

Bellacosa Mainframe e o conceito de single source of truth

Single Source of Truth (SSOT): a verdade nua, crua… e versionada

Se existe um conceito que todo arquiteto, analista, DBA, operador e até estagiário já ouviu — e todo mundo acha que já tem — esse conceito é o tal do Single Source of Truth.
Spoiler: quase ninguém tem de verdade. E no mainframe isso é ainda mais sagrado (e mais difícil).

Senta que lá vem história.


🧠 Origem: quando a verdade ainda cabia em um arquivo VSAM

Antes de buzzwords, cloud, data mesh e dashboards coloridos, o SSOT já existia — só não tinha nome chique.

Nos anos 60/70, no mundo IBM Mainframe, a regra era simples:

“Existe um dado oficial. O resto é cópia, relatório ou dor de cabeça.”

  • Um master file VSAM

  • Um DB2 table owner bem definido

  • Um CICS que mandava na regra de negócio

Se o saldo do cliente estava no arquivo X, qualquer outro valor estava errado, não “divergente”.

👉 Isso era SSOT by design, não por moda.


📜 Definição curta (para colar na parede da sala)

Single Source of Truth é a fonte única, autorizada e confiável de um dado, regra ou estado de negócio.

  • Não é só onde o dado está

  • É quem manda nele

  • É quem pode mudar

  • É quem responde quando dá problema

No mainframe, isso sempre foi levado a sério porque…
💸 erro de dado = dinheiro real sumindo.


🏗️ SSOT no Mainframe: raiz forte, galhos controlados

No mundo IBM Mainframe, o SSOT normalmente assume estas formas:

  • 📦 DB2 → verdade transacional

  • 📁 VSAM KSDS/ESDS → registros mestres históricos

  • 🧠 CICS → verdade das regras online

  • 📊 SMF/RMF → verdade operacional

  • 🔐 RACF → verdade de segurança (e ponto final)

E aqui vai a regra de ouro, estilo Bellacosa:

Se dois sistemas “mandam” no mesmo dado… nenhum manda.


⚠️ O problema moderno: todo mundo quer sua própria verdade

Com a chegada de:

  • Data Lakes

  • BI Self-Service

  • Microservices

  • Replicações near-real-time

  • APIs para tudo

Nasceu o monstro de três cabeças:

🧟 A Verdade Paralela
🧟 A Verdade de Cache
🧟 A Verdade do PowerPoint

Cada área passa a ter:

  • “Meu dado”

  • “Meu relatório”

  • “Minha métrica”

E quando os números não batem…

👉 a culpa é do mainframe, claro 😏


🧩 Formatos de SSOT (sim, existem vários)

1️⃣ SSOT Transacional

  • Fonte: DB2 / CICS

  • Uso: sistemas core

  • Alta integridade

  • Baixa tolerância a erro

💡 Mainframe é rei aqui.


2️⃣ SSOT Analítico

  • Fonte: DW / Lakehouse

  • Uso: BI, KPIs

  • Risco: latência e transformação

⚠️ Não confundir com verdade operacional.


3️⃣ SSOT de Configuração

  • Fonte: repositórios únicos

  • Ex: parâmetros, tabelas de domínio

🧨 Dica: tabela “copiada” em cada sistema não é SSOT.


4️⃣ SSOT de Governança

  • Catálogos de dados

  • Data lineage

  • Glossário corporativo

📚 Onde a verdade é documentada, não só armazenada.


🛠️ Dicas práticas (da trincheira, não do slide)

✔️ Defina ownership real

“Quem acorda às 3h da manhã se der erro?”

✔️ Separe dado de consumo

  • Origem ≠ réplica ≠ cache

✔️ Documente a verdade

  • Se não está escrito, vira lenda urbana.

✔️ Controle quem escreve

  • Ler é democrático. Escrever não.

✔️ Mainframe como âncora

  • Sistemas modernos orbitam. O core não flutua.


💣 Riscos clássicos (a lista da vergonha)

  • ❌ Duas bases “oficiais”

  • ❌ ETL que “corrige” dado

  • ❌ BI explicando divergência em reunião

  • ❌ Regra de negócio fora do core

  • ❌ “É só um relatório…”

⚠️ Relatório nunca é inocente.


🧪 Curiosidades & Easter Eggs

🥚 Easter Egg #1

Muitos sistemas “modernos” recriam SSOT… e descobrem 30 anos depois o que o CICS já fazia.

🥚 Easter Egg #2

RACF é um dos SSOTs mais respeitados da empresa — ninguém questiona.

🥚 Easter Egg #3

O termo SSOT ficou famoso com BI, mas nasceu no batch noturno.


🧠 Reflexão final (El Jefe mode ON)

SSOT não é tecnologia.
É disciplina organizacional.

Você pode ter:

  • Cloud

  • Kafka

  • Lakehouse

  • AI

  • Dashboard bonito

Mas se não souber qual dado é o oficial

👉 Você só tem várias mentiras bem organizadas.


☕🌙 Midnight Lunch Thought
No fim do dia (ou da madrugada):
quem controla a verdade controla o sistema.
E historicamente…
o mainframe sempre soube disso.


sexta-feira, 9 de janeiro de 2026

🏰 CAPÍTULO 1 — AS ORIGENS DO RPG: DO DADO AO DESTINO

 


🏰 CAPÍTULO 1 — AS ORIGENS DO RPG: DO DADO AO DESTINO

“Antes de haver dados, havia histórias.
Antes das regras, havia a vontade de imaginar.”

Mestre Bellacosa, Códice dos Sonhadores de Mesa


🎲 A Semente da Imaginação

No início, o RPG não tinha nome.
Era apenas um grupo de amigos, mapas em papel quadriculado e miniaturas improvisadas com tampinhas.
Na década de 1970, em Lake Geneva (EUA), Gary Gygax e Dave Arneson decidiram unir duas paixões: os jogos de guerra de tabuleiro (wargames) e a fantasia literária inspirada em Tolkien e Howard.

Assim nasceu Dungeons & Dragons (1974) — o primeiro Role-Playing Game da história.
Um jogo onde não se vencia apenas com exércitos, mas com imaginação, interpretação e decisão.

Aos poucos, o dado de seis faces não bastou mais.
Vieram os poliedros místicos — d4, d8, d10, d12 e o lendário d20, símbolo máximo do destino rolado.


🧙‍♂️ A Tríade Fundadora

“O mundo do RPG nasceu de três forças: o guerreiro que planeja, o mago que sonha e o narrador que une ambos.”

  1. O Wargame — deu ao RPG as regras, os turnos, o campo de batalha.

  2. A Fantasia Literária — deu a alma: mundos, heróis, monstros e mitos.

  3. O Teatro Improvisado — deu o coração: a arte de ser outro, de viver papéis.

Desse encontro surgiu algo novo: o jogo que é também narrativa, o ato de criar uma história viva em conjunto.


🕯️ A Expansão dos Mundos

Nos anos 1980, o RPG ganhou o mundo.

  • Dungeons & Dragons se multiplicou em edições, cenários e aventuras lendárias.

  • No Japão, surgiram versões mais narrativas e emotivas — a raiz dos JRPGs, como Dragon Quest (1986) e Final Fantasy (1987).

  • Nos anos 1990, o RPG evoluiu para os computadores e consoles, mantendo a alma viva das mesas de papel.

🎮 Curiosidade Bellacosa:
O primeiro Final Fantasy foi criado como o “último jogo” de sua empresa, à beira da falência — e o sucesso dele salvou o estúdio.
Um verdadeiro exemplo de rolar 1 no destino e tirar 20 na coragem.


🧩 O Significado Filosófico

O RPG é mais que um jogo: é uma metáfora da vida.
Cada rolagem de dado é uma escolha entre livre-arbítrio e sorte.
Cada personagem é uma tentativa de entender quem poderíamos ser em outro universo.

“O guerreiro que teme errar o golpe é o mesmo que, na vida real, teme tomar decisões.”
Notas de um Mestre cansado, encontradas na Taverna de Fendalor

Ao interpretar papéis, o jogador ensaia emoções, coragens e dilemas que a vida real raramente permite.
E o Mestre, esse alquimista de histórias, aprende a equilibrar caos e ordem, como um demiurgo de papel e lápis.


📜 Quadro do Mestre Bellacosa

As Três Regras Primordiais do RPG:

RegraDescriçãoFilosofia
1. O Jogo é Cooperação.Ninguém joga sozinho; até o vilão depende dos heróis.A vida é uma mesa, não um tabuleiro.
2. O Dado é o Oráculo.Ele não decide tudo — mas aponta caminhos.Aceitar o acaso é aceitar a aventura.
3. A História é Viva.Nada é fixo; cada jogada reescreve o mundo.O RPG não é sobre vencer, mas sobre continuar jogando.

🧭 Linha do Tempo Bellacosa

ÉpocaMarcoDestaque
1974Dungeons & DragonsNasce o RPG moderno.
1980–1985Traveller, Call of CthulhuExpansão para ficção científica e horror.
1986–1995Dragon Quest, Final FantasyO RPG digital se ergue no Japão.
1990–2000Vampiro: A Máscara, GURPSO RPG se torna psicológico e universal.
2000–2020Roll20, Critical RoleO RPG chega às telas e volta aos corações.

💬 Nota de Rodapé do Mestre

“Não é o dado que cria a história.
É o silêncio antes da rolagem, quando todos esperam — e acreditam.”


⚔️ Encerramento do Capítulo

O RPG nasceu do anseio humano de viver outras vidas.
Seja ao redor de uma mesa de madeira, diante de um computador ou dentro de um metaverso digital, a essência permanece:
imaginar, agir e sentir.

O herói muda, o mestre muda, as regras mudam.
Mas o dado continua rolando — e com ele, a eterna aventura de ser alguém novo a cada partida.


🎯 Próximo Capítulo:
“A Filosofia do Aventureiro — o que realmente buscamos quando interpretamos um herói.”

quinta-feira, 7 de agosto de 2025

Conheça os diversos tipos de variáveis COBOL

 

Conheça os diversos tipos de variáveis COBOL

4,424 followers

Salve jovem padawan, no artigo de hoje, apresento um programa COBOL explorando os diversos tipos de variáveis, gerando como saída, um arquivo de 143 bytes ilustrando como é o armazenamento e o formato dos dados.

Aproveito e apresento alguns comandos COBOL com diversas parametrizações, onde poderemos explorar e entender na prática seu funcionamento.

O programa foi dividido em Sections e Parágrafos, ajudando a conhecer técnicas de laço e salto de parágrafo.

PROGRAMA COBOL117

 *****************************************************************
      * DATA     : 29/08/2024
      * AUTOR    : VAGNER RENATO BELLACOSA
      * OBJETIVO : PROGRAMA EXEMPLO ARQUIVO QSAM LOOP
      * CPD      : INEFE
      *****************************************************************
       IDENTIFICATION DIVISION.
      *************************
       PROGRAM-ID. COBOL117.
       AUTHOR. VAGNER BELLACOSA.
       DATE-WRITTEN. 29/08/24 @ 21:18:00.
       DATE-COMPILED. 2024-08-29.

      **********************
       ENVIRONMENT DIVISION.
      **********************
      *
       CONFIGURATION SECTION.
      *
       SOURCE-COMPUTER. IBM-I.
       OBJECT-COMPUTER. IBM-I.
       SPECIAL-NAMES. DECIMAL-POINT IS COMMA.
      *
       INPUT-OUTPUT SECTION.
      *
       FILE-CONTROL.
           SELECT OUTPTFL    ASSIGN TO OUTPTFL
           ORGANIZATION IS SEQUENTIAL
           ACCESS MODE IS SEQUENTIAL
           FILE STATUS IS FS-STATUS.

      ***************
       DATA DIVISION.
      ***************
      *
       FILE SECTION.
      *
       FD OUTPTFL
           RECORD CONTAINS 145 CHARACTERS
           LABEL RECORDS ARE STANDARD
           RECORDING MODE IS F
           DATA RECORD IS REG-DADOS.
      *
       COPY COPY117A.
      *
      *
       WORKING-STORAGE SECTION.
      *
      *
       01  WSS-VARIAVEL-AUX.
          05  WSS-EOF            PIC A(01).
          05  FS-STATUS          PIC 99.
      *
       77 WSS-RANDOM-NUMBER1   PIC 999 VALUE ZEROES.
       77 WSS-RANDOM-NUMBER2   PIC 999 VALUE ZEROES.
       77 WSS-REG-GRAVADOS     PIC 999 VALUE ZEROES.
       77 WSS-CICLO            PIC 99  VALUE 15.
       77 WSS-DATA-COMPIL      PIC X(16).
      *
      ****************************************************************
      **  DECLARATIONS FOR THE LOCAL DATE/TIME FOR DISPLAY
      ****************************************************************
       01  WSS-CAMPOS-AUXILIARES.
           05 WSS-YYYYMMDD          PIC  9(008).
           05 WSS-YYMMDD            PIC  9(006).
           05 WSS-HHMMSS            PIC  9(006).
           05 WSS-HHMMSSCC          PIC  9(008).
           05 WSS-DIA-SEMANA        PIC  9(001).
           05 WSS-ANO-DIA           PIC  9(005).
           05 WSS-DAY-YYYYDDD       PIC  9(007).
           05 WSS-DAY-001           PIC  S9(009).
           05 WSS-INTEGER-FORM      PIC  S9(9) SIGN LEADING SEPARATE.
           05 WSS-INT-DATE          PIC  9(8) VALUE ZERO.
           05 WSS-DATE-TODAY        PIC  9(7) VALUE ZERO.
           05 WSS-DUE-DATE          PIC  9(7) VALUE ZERO.

      ********************
       PROCEDURE DIVISION.
      ********************

       001-INICIALIZAR          SECTION.

           PERFORM ROT-LISTA-INFO
              THRU ROT-LISTA-INFO-EXIT.

           PERFORM ROT-OPEN-FILE
              THRU ROT-OPEN-FILE-EXIT.

           PERFORM ROT-INITIALIZE-VAR
              THRU ROT-INITIALIZE-VAR-EXIT.

       002-WORKFILE             SECTION.

           PERFORM ROT-FORMATA-OUTPUT
              THRU ROT-FORMATA-OUTPUT-EXIT WSS-CICLO TIMES.

       003-PROCEDIMENTOS-FINAIS SECTION.

           PERFORM ROT-CLOSE-FILE
              THRU ROT-CLOSE-FILE-EXIT.

           PERFORM ROT-ESTATISTICA
              THRU ROT-ESTATISTICA-EXIT.

           STOP RUN.

      * SEçãO DE CODIGOS AUXILIARES
       004-PARAGRAFOS            SECTION.

      * INICIALIZA VARIAVEIS
       ROT-INITIALIZE-VAR.

      **** MOVE ZEROES TO REG-DADOS

           INITIALIZE REG-DADOS
              REPLACING ALPHANUMERIC BY   SPACES
                        NUMERIC      BY   ZEROES.

       ROT-INITIALIZE-VAR-EXIT.
           EXIT.

      * LISTA CABECALHO DO PROGRAMA
       ROT-LISTA-INFO.

           DISPLAY ' '.
           DISPLAY '*****************************************'.
           DISPLAY '*            COBOL117                   *'.
           DISPLAY '*****************************************'.
           DISPLAY '*                                       *'.
           DISPLAY '* EXEMPLO DE OPEN WRITE CLOSE QSAM FILE *'.
           DISPLAY '*  USO DE COPY BOOK PARA LAYOUT ARQUIVO *'.
           DISPLAY '*  GRAVACAO ALFABETICA ALFANUMERICA     *'.
           DISPLAY '*  COMP1 COMP2 COMP3 COMP4 COMP5        *'.
           DISPLAY '*  USO DE FUNçãO INTRINSECA             *'.
           DISPLAY '*  INITIALIZE 3 MODOS                   *'.
           DISPLAY '*  SECTIONS E PARAGRAFOS                *'.
           DISPLAY '*  TAMANHO DO REGISTRO '
                               LENGTH OF REG-DADOS ' BYTES  *'.
           DISPLAY '*  WSS-CICLO = ' WSS-CICLO
                   '      LOOP DE GRAVACAO *'
           DISPLAY '*****************************************'.
           DISPLAY ' '.

           PERFORM ROT-GET-DATA
              THRU ROT-GET-DATA-EXIT.

           DISPLAY '* WSS-DATA-COMPIL = ' WSS-DATA-COMPIL
                          '          *'.
           DISPLAY ' '.

       ROT-LISTA-INFO-EXIT.
           EXIT.

      * FUNCOES INTRINSECAS OBTEM DADOS DO SISTEMA
       ROT-GET-DATA.

      * OBTEM A DATA DA COMPILACAO
           MOVE FUNCTION WHEN-COMPILED  TO WSS-DATA-COMPIL

      * BUSCA DATA VIA CURRENT-DATE

           MOVE FUNCTION CURRENT-DATE(1:8) TO WSS-YYYYMMDD

           DISPLAY ' WSS-YYYYMMDD    = ' WSS-YYYYMMDD

      * CALCULA DIA VIA INTEGER-OF-DATE

           COMPUTE WSS-YYYYMMDD    = FUNCTION INTEGER-OF-DATE
                                     (WSS-YYYYMMDD)
                                     + 15.
           DISPLAY ' WSS-YYYYMMDD    = ' WSS-YYYYMMDD
           DISPLAY 'NOVA DATA: ' WSS-DAY-YYYYDDD

      * ACCEPT

           ACCEPT WSS-DAY-YYYYDDD FROM DAY YYYYDDD.
           ACCEPT WSS-YYYYMMDD    FROM DATE YYYYMMDD.
           ACCEPT WSS-YYMMDD      FROM DATE.
           ACCEPT WSS-HHMMSS      FROM TIME.
           ACCEPT WSS-HHMMSSCC    FROM TIME.
           ACCEPT WSS-DIA-SEMANA  FROM DAY-OF-WEEK.
           ACCEPT WSS-ANO-DIA     FROM DAY.

       ROT-GET-DATA-EXIT.
           EXIT.

      * ABERTURA DE ARQUIVO QSAM
       ROT-OPEN-FILE.

           DISPLAY 'ROT-OPEN-FILE'.

           OPEN OUTPUT OUTPTFL.

           IF FS-STATUS > 0
              DISPLAY 'ERRO NA ABERTURA DO ARQUIVO OUTPTFL '
              DISPLAY 'FS-STATUS : ' FS-STATUS
              MOVE FS-STATUS    TO  RETURN-CODE
              PERFORM ROT-ABEND
           END-IF.

       ROT-OPEN-FILE-EXIT.
           EXIT.

      * FORMATA REGISTRO DE SAIDA
       ROT-FORMATA-OUTPUT.

           DISPLAY 'ROT-FORMATA-OUTPUT'.

           PERFORM ROT-INITIALIZE-VAR
              THRU ROT-INITIALIZE-VAR-EXIT.

           MOVE  'WILSON LUPINO'   TO   REG-NOME.
           MOVE  '2014-05-11'      TO   REG-DATA-NASC.
           MOVE  WSS-REG-GRAVADOS  TO   REG-ORDEM.
           MOVE  'RUA A NO 15'     TO   REG-ENDERECO
           MOVE  'TAUBATE'         TO   REG-CIDADE
           MOVE  'SP'              TO   REG-ESTADO
           MOVE  '18000-100'       TO   REG-CEP
           MOVE   123              TO   REG-COMP1-4
           MOVE   123456           TO   REG-COMP2-8
           MOVE  -123456           TO   REG-COMP3-5
           MOVE   199998           TO   REG-COMP3-5A
           MOVE  -789012           TO   REG-COMP3-6
           MOVE  1000              TO   REG-COMP4-2
           MOVE  2000000           TO   REG-COMP4-4
           MOVE  3000000000        TO   REG-COMP4-8
           MOVE  -1000             TO   REG-COMP5-2
           MOVE  -2000000          TO   REG-COMP5-4
           MOVE  -3000000000       TO   REG-COMP5-8
           MOVE  'FIM'             TO   REG-TEXTO5C

           PERFORM ROT-ALEATORIA
              THRU ROT-ALEATORIA-EXIT.

           MOVE WSS-RANDOM-NUMBER1 TO   REG-ANO-DIA.
           MOVE WSS-RANDOM-NUMBER2 TO   REG-ANO-MES.

           DISPLAY ' REG-DADOS     : ' REG-DADOS ' '
                     LENGTH OF REG-DADOS ' BYTES '.
           DISPLAY ' REG-NOME      : ' REG-NOME.
           DISPLAY ' REG-DATA-NASC : ' REG-DATA-NASC.
           DISPLAY ' WSS-CICLO     : ' WSS-CICLO.

           PERFORM ROT-WRITE-FILE
              THRU ROT-WRITE-FILE-EXIT

      ***** 4 LINHAS ADICIONAIS

           IF WSS-REG-GRAVADOS = 15
      * GRAVA LOW-VALUES NO ARQUIVO
             MOVE LOW-VALUES       TO REG-DADOS
             PERFORM ROT-WRITE-FILE
                THRU ROT-WRITE-FILE-EXIT
      * GRAVA HIGH-VALUES NO ARQUIVO
             MOVE HIGH-VALUES      TO REG-DADOS
             PERFORM ROT-WRITE-FILE
                THRU ROT-WRITE-FILE-EXIT
      * INICIALIZA ESTRUTURA DO ARQUIVO COM 9 E X
             INITIALIZE REG-DADOS
                REPLACING ALPHANUMERIC DATA BY 'X'
                          NUMERIC      DATA BY 9
             PERFORM ROT-WRITE-FILE
                THRU ROT-WRITE-FILE-EXIT
      * INICIALIZA ESTRUTURA
             INITIALIZE REG-DADOS
             PERFORM ROT-WRITE-FILE
                THRU ROT-WRITE-FILE-EXIT
           END-IF.

       ROT-FORMATA-OUTPUT-EXIT.
           EXIT.

      * GRAVA REGISTRO DE SAIDA
       ROT-WRITE-FILE.

           WRITE REG-DADOS
           END-WRITE.

           IF FS-STATUS > 0
              DISPLAY 'ERRO NA GRAVACAO DO ARQUIVO OUTPTFL '
              DISPLAY 'FS-STATUS : ' FS-STATUS
              MOVE FS-STATUS    TO  RETURN-CODE
              PERFORM ROT-ABEND
           END-IF.

           ADD  01                 TO   WSS-REG-GRAVADOS.

       ROT-WRITE-FILE-EXIT.
           EXIT.

      * FECHA ARQUIVO QSAM
       ROT-CLOSE-FILE.

           DISPLAY 'ROT-CLOSE-FILE'.

           CLOSE OUTPTFL.

           IF FS-STATUS > 0
              DISPLAY 'ERRO NO FECHAMENTO DO ARQUIVO OUTPTFL '
              DISPLAY 'FS-STATUS : ' FS-STATUS
              MOVE FS-STATUS    TO  RETURN-CODE
              PERFORM ROT-ABEND
           END-IF.

       ROT-CLOSE-FILE-EXIT.
           EXIT.

      * LISTA AS ESTATISTICAS DO PROCESSAMENTO
       ROT-ESTATISTICA.

           ACCEPT WSS-HHMMSSCC    FROM TIME.

           DISPLAY ' '.
           DISPLAY '*******************************************'.
           DISPLAY '*** PROGRAMA COBOL117                   ***'.
           DISPLAY '*******************************************'.
           DISPLAY '*** DATA DO PROCESSAMENTO : '
                    WSS-YYYYMMDD  '   ***'.
           DISPLAY '*** HORA DO PROCESSAMENTO : '
                    WSS-HHMMSSCC  '   ***'.
           DISPLAY '*******************************************'.
           DISPLAY '*                                         *'.
           DISPLAY '* TERMINO DE PROCESSAMENTO OK             *'.
           DISPLAY '*                                         *'.
           DISPLAY '* REGISTRO GRAVADOS : ' WSS-REG-GRAVADOS
                   '                *'.
           DISPLAY '*                                         *'.
           DISPLAY '*******************************************'.

       ROT-ESTATISTICA-EXIT.
           EXIT.

      * SAIDA CONTROLADA - ABEND NO PROCESSAMENTO
       ROT-ABEND.

           ACCEPT WSS-HHMMSSCC    FROM TIME.

           DISPLAY '*******************************************'.
           DISPLAY '*** PROGRAMA COBOL117                   ***'.
           DISPLAY '*******************************************'.
           DISPLAY '*** DATA DO PROCESSAMENTO : '
                    WSS-YYYYMMDD  '  ***'.
           DISPLAY '*** HORA DO PROCESSAMENTO : '
                    WSS-HHMMSSCC  '  **'.
           DISPLAY '*******************************************'.
           DISPLAY ' ABEND PROGRAMADO '.
           DISPLAY ' ERRO ENCONTRADO : '  RETURN-CODE.
           DISPLAY ' FAVOR AVISAR O ANALISTA RESPONSAVEL'.
           DISPLAY '*******************************************'.
      **** CALL ABEND.
           STOP RUN.

       ROT-ABEND-EXIT.
           EXIT.

      * GERADOR DE NUMERO ALEATORIO
       ROT-ALEATORIA.

           COMPUTE WSS-RANDOM-NUMBER1 = FUNCTION RANDOM * 31.
           COMPUTE WSS-RANDOM-NUMBER2 = FUNCTION RANDOM * 12.
           DISPLAY ' '.
           DISPLAY ' 1 --> ' WSS-RANDOM-NUMBER1
                   ' 2 --> ' WSS-RANDOM-NUMBER2
           DISPLAY ' '.

       ROT-ALEATORIA-EXIT.
           EXIT.

       END PROGRAM COBOL117.
      ********************** FIM PROGRAMA   **************************** 

Código Comentado por Section

Este programa foi dividido em 4 seções, o código usou da Logica Estruturado preparado para receber novos parágrafos e funcionalidades com o menor impacto no código legado.

001-INICIALIZAR SECTION.

Nesta seção o programa lista a info da abertura do programa, abre arquivo output e inicializa as variaveis.

002-WORKFILE SECTION.

Nesta seção trataremos da formatação das variáveis e procedimento de gravação dos registros.

003-PROCEDIMENTOS-FINAIS SECTION.

Nesta seção trataremos dos procedimentos finais, fechando arquivo e listando a estatistica do processamento

004-PARAGRAFOS SECTION.

Seção auxiliar que armazena as diversas sub-rotinas do programa. Objetivando facilitar a manutenção das mesmas.


COPY

É um arquivo de definição das variáveis publico, destinado a compartilhar entre diversos programas a mesma estrutura. Em um COPY book inclui o Grupo de Dados estruturado e separados por níveis de 1 até 10.

Exemplificamos os três tipos de variável COBOL. Alfabética, Alfanumérica e Numérico, expandindo para os tipos Computacional de 1 a 5.

************************************************************************************
*******  ESTE COPY BOOK CONTEM COMANDOS DA DATA DIVISION                       ***
*******                                    WORKING-STORAGE SECTION.                                    ***
*******  EM TEMPO DE COMPILACAO ESTE BLOCO DE CODIGO SERA INSERIDO NO***
*******  PROGRAMA, PODENDO SER REUTILIZADO POR N PROGRAMAS, DEVENDO**  ***
*******  ESTAR NA LIBRARY DEFINIDA PARA OS COPIES.                   ***
************************************************************************
      *
      * DATA GROUP ITEM
       01 REG-DADOS.
      *
      *  VARIABLE NUMERIC       -> PIC 9
         05 REG-ORDEM                  PIC 999.
      *  VARIABLE ALPHABETIC   -> PIC A
         05 REG-NOME                    PIC A(20).
      *  VARIABLE ALPHANUMERIC -> PIC X
         05 REG-DATA-NASC            PIC X(10).
      *  REDEFINES ITEM
         05 FILLER       REDEFINES  REG-DATA-NASC.
           10 REG-ANO-NASC           PIC 9(04).
           10 FILLER                            PIC X.
           10 REG-ANO-MES              PIC 9(02).
           10 FILLER                            PIC X.
           10 REG-ANO-DIA               PIC 9(02).
         05 REG-ENDERECO              PIC X(20).
         05 REG-CIDADE                   PIC X(10).
         05 REG-ESTADO                  PIC XX.
         05 REG-CEP                         PIC X(09).
         05 FILLER       REDEFINES  REG-CEP.
           10 REG-CEP-INT                PIC 9(05).
           10 FILLER                           PIC X.
           10 REG-CEP-COMP           PIC 9(03).
      * COMPUTACIONAL  1
         05 REG-COMP1-4            USAGE IS COMP-1.
         05 REG-TEXTO1                  PIC X(01).
      * COMPUTACIONAL  2
         05 REG-COMP2-8            USAGE IS COMP-2.
         05 REG-TEXTO2                  PIC X(01).
      * COMPUTACIONAL  3
         05 REG-COMP3-5               PIC S9(10) COMP-3.
         05 REG-TEXTO3A                PIC X(01).
         05 REG-COMP3-5A             PIC  9(10) COMP-3.
         05 REG-TEXTO3B                PIC X(01).
         05 REG-COMP3-6               PIC S9(11) COMP-3.
         05 REG-TEXTO3C                PIC X(01).
      * COMPUTACIONAL  4
         05 REG-COMP4-2               PIC S9(4)  COMP-4.
         05 REG-TEXTO4A                PIC X(01).
         05 REG-COMP4-4               PIC S9(9)  COMP-4.
         05 REG-TEXTO4B                PIC X(01).
         05 REG-COMP4-8               PIC S9(18) COMP-4.
         05 REG-TEXTO4C                PIC X(01).
      * COMPUTACIONAL  5
         05 REG-COMP5-2               PIC S9(4)  COMP-5.
         05 REG-TEXTO5A                PIC X(01).
         05 REG-COMP5-4               PIC S9(9)  COMP-5.
         05 REG-TEXTO5B                PIC X(01).
         05 REG-COMP5-8               PIC S9(18) COMP-5.
      *
         05 REG-TEXTO5C                PIC X(03).
**************************** FIM DO COPYBOOK *************************** 

JCL - JOB CONTROL LANGUAGE

Para o teste, após compilarmos o programa num compilador igual ou maior que a versão 4, o ideal é a versão 6.3. Segue o JCL em dois steps.

//EXECPGM1   JOB ('00'),TSO.&SYSUID,                           
//          REGION=0M,NOTIFY=&SYSUID,LINES=(17000,CANCEL),
//          MSGCLASS=T,MSGLEVEL=1,CLASS=A
//**********************************************************************
//*            TESTE PARA CRIACãO DE ARQUIVO
//*            GERAR UM ARQUIVO COM 143 BYTES
//**********************************************************************
//JOBLIB  DD DSN=KC02745.LIB.CBLPDSE,DISP=SHR
//**********************************************************************
//* STEP TO DELETE A DATASET
//**********************************************************************
//STEP001  EXEC PGM=IEFBR14
//DD1      DD DSN=KC02745.OUTPTFL.EXEWRITE.D0117,
//         DISP=(OLD,DELETE,DELETE)
//**********************************************************************
//* PROGRAMA QUE GERA ARQUIVO DE SAIDA COM EXEMPLO DE COMPUTACIONAL
//**********************************************************************
//STEP002  EXEC PGM=COBOL117
//*    ARQUIVO DE SAIDA                                                   *\\
//OUTPTFL DD DSN=KC02745.OUTPTFL.EXEWRITE.D0117,
//             DISP=(NEW,CATLG,DELETE),
//             SPACE=(TRK,(1,1),RLSE),UNIT=SYSDA,
//             DCB=(LRECL=145,RECFM=FB,BLKSIZE=0)
//SYSTSPRT DD  SYSOUT=*
//SYSPRINT DD  SYSOUT=*
//CEEDUMP  DD  SYSOUT=*
//SYSUDUMP DD  SYSOUT=*
//SYSOUT   DD  SYSOUT=*
//REPORT   DD  SYSOUT=*
//SYSABOUT DD  SYSOUT=*
//SYSDBOUT DD  SYSOUT=*
/*
//****************************** FIM DO JCL **************************** 

//STEP001 EXEC PGM=IEFBR14

Este aplicativo da IBM permite apagar o Dataset.

//STEP002 EXEC PGM=COBOL117

Executa o programa e grava arquivo de saída com 145 bytes.

Output

Resultado com as estatísticas de execução.

SDSF

Exobe a Sysout do processamento, lembrando que um JOB é enviado ao JES2. onde passa por 3 filas de workflow, senda a primeira de validação , a segunda de execução e a terceira de impressão.

Article content
Article content

O Resultado será do processamento irá criar um Dataset QSAM Fixo Blocado com 145 bytes de cumprimento por registro e ao final será gravado 19 linhas.

Info do DATASET

Article content

Registros EBCDIC convertidos no Emulador para ASCII

O arquivo no formato EBCDIC:


Article content
Article content

Formato HEX

Usando comando de linha Hexadecimal o arquivo mostrará os registros no formato EBCDIC divididos em Alto e Baixo do octeto de bits.


Article content

Neste print exemplifico os registros de 15 até 19 no formato hexadecimal.

Conheça os diversos formatos


  1. Low-Values
  2. High-Values
  3. Initialize de X a 9
  4. Initialize de espaços e zero


Computacional de 1 a 5


Article content

Exemplo de uso das variáveis computacional e seu uso em bytes na geração de arquivo.


Espero ter ajudado e qualquer duvida entre em contato.