Translate

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

domingo, 26 de abril de 2026

💣🔥 VOCÊ PROGRAMA COBOL… MAS QUEM MANDA NO JOGO É O JCL — O SEGREDO QUE NINGUÉM TE CONTA NO MAINFRAME 🔥💣

 

Bellacosa Mainframe mostra o poder do batch COBOL e JCL dupla imbativel

💣🔥 VOCÊ PROGRAMA COBOL… MAS QUEM MANDA NO JOGO É O JCL — O SEGREDO QUE NINGUÉM TE CONTA NO MAINFRAME 🔥💣

No universo mainframe, existe uma ilusão perigosa — e eu vou quebrar ela agora:

Muita gente acha que COBOL é o protagonista.

Mas sem JCL… COBOL não passa de código parado no disco.

Vamos destrinchar isso no estilo raiz — direto do chão de fábrica do z/OS.


🧠 ESSÊNCIA (SEM ENROLAÇÃO)

No ecossistema mainframe, duas siglas reinam:

  • COBOL → linguagem de programação
  • JCL → linguagem de controle

E aqui está a verdade crua:

🔥 COBOL pensa. JCL executa.


🔹 COBOL — O CÉREBRO DO NEGÓCIO

COBOL (Common Business-Oriented Language) é onde mora a inteligência do sistema.

É nele que você define:

  • Cálculos (juros, impostos, tarifas)
  • Regras de negócio
  • Validações
  • Leitura e gravação de dados

👉 Em outras palavras:

COBOL é onde a regra do banco, da seguradora, do governo ganha vida.

💥 Exemplo clássico:

IF SALDO > 1000
COMPUTE JUROS = SALDO * 0.05
END-IF

Aqui está a lógica. Mas… isso ainda não roda sozinho.


🔹 JCL — O MAESTRO INVISÍVEL

JCL (Job Control Language) não é linguagem de programação.

Ele é o orquestrador do caos.

Ele diz ao sistema:

  • Quando executar
  • Qual programa rodar
  • Quais arquivos usar
  • Em que ordem executar os passos
  • Quais recursos alocar

👉 Tradução Bellacosa:

JCL é o cara que aperta o botão, monta o ambiente e garante que tudo aconteça.


⚙️ EXEMPLO REAL (RAIZ DE PRODUÇÃO)

🧠 COBOL (a lógica)

Programa que calcula juros.

⚙️ JCL (a execução)

//JUROS JOB (ACCT),'CALCULO'
//STEP1 EXEC PGM=CALCJUROS
//INPUT DD DSN=CLIENTES.DADOS,DISP=SHR
//OUTPUT DD DSN=CLIENTES.RESULT,DISP=NEW

👉 O que está acontecendo aqui?

  • O JCL chama o programa COBOL (CALCJUROS)
  • Define os arquivos de entrada e saída
  • Controla execução e recursos

💥 Sem isso?
O programa COBOL nunca sai do papel.


🧩 ANALOGIA PODEROSA (GUARDA ISSO)

Pensa assim:

  • 🧠 COBOL = o chef que sabe cozinhar
  • 🎛️ JCL = o gerente da cozinha que liga o fogão, entrega ingredientes e organiza os pedidos

👉 Sem o chef → não tem comida
👉 Sem o gerente → ninguém cozinha


🚨 ERRO CLÁSSICO DE INICIANTE

Muita gente entra no mainframe achando:

“Vou aprender COBOL e pronto.”

❌ Errado.

Sem entender JCL você não sabe:

  • Submeter jobs
  • Controlar batch
  • Interpretar abends
  • Trabalhar com datasets
  • Entender fluxo real de produção

👉 Resultado?
Fica dependente de outros… ou perdido no spool.


🔥 O PONTO QUE SEPARA AMADOR DE PROFISSIONAL

Quem domina só COBOL:

  • escreve código

Quem domina COBOL + JCL:

  • entende o sistema inteiro

E aqui está o salto de carreira:

💣 Mainframe não é só programar. É orquestrar processamento.


📊 BATCH: ONDE TUDO ACONTECE

O JCL brilha principalmente no mundo batch:

  • Processamento noturno
  • Milhões de registros
  • Integração entre sistemas
  • Fechamentos financeiros

👉 É aqui que o mainframe mostra por que ainda domina o mundo.


🧠 RESUMO BELLACOSA (NA VEIA)

  • COBOL → o que fazer
  • JCL → como, quando e com o quê fazer

🔥 COBOL sem JCL é potencial.
JCL sem COBOL é vazio.
Juntos? Missão crítica rodando há décadas.


💬 REFLEXÃO FINAL

Se você quer realmente entrar no jogo do mainframe…

Não escolha entre COBOL e JCL.

Domine os dois.

Porque no mundo real:

  • O banco não quer só código
  • Ele quer processamento funcionando
  • Sem falha
  • Sem atraso
  • Sem desculpa

💣 FRASE PRA LEVAR PRA VIDA

“Quem escreve COBOL acha que manda.
Quem domina JCL sabe que manda.”

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

terça-feira, 12 de agosto de 2025

O que é Address Space?

 

O que é Address Space?

4,424 followers

Salve jovem padawan, prosseguindo em nossa jornada de descobrimento e compartilhamento de conhecimento, hoje escreverei sobre um tema dificil, tentarei ser claro e ajudar com exemplos fáceis de entender.

Em minhas aulas percebo que os alunos ficam confusos por ser um tema muito abstrato, porém de máxima importância para um desenvolvedor Mainframe, a questão da memória, lembrando que um Z17 tem 16 exabytes de endereço de memória disponível.

Ao codificar, devemos dominar o espaço, ser econômicos em seu uso e dar o máximo de performance para um programa, por isso entender o conceito ajudará bastante.

✅ O que é Address Space?

Um Address Space é um ambiente isolado de execução fornecido pelo z/OS para que um job, um programa ou uma tarefa rode com sua própria memória e recursos protegidos. Pense nele como um "container" de memória virtual onde o seu programa COBOL roda. Esse cointainer será alocado no DATA DIVISION do Cobol e o programa ao ser enviado para o processamento na CPU, reservará esse espaço para usar durante todo o processo.


🧠 Por que isso é importante para COBOL?

Quando você submete um job COBOL batch, ou inicia um programa via CICS, o sistema cria um address space para:

  • Carregar os programas COBOL compilados (load modules).
  • Alocar memória para as variáveis.
  • Abrir arquivos (datasets, VSAM, etc.).
  • Comunicar com o CICS, DB2 ou IMS.
  • Controlar segurança, permissões e acesso via RACF.
  • Garantir que um job não interfira em outro (isolamento de execução).

Esse espaço estará isolado de outras aplicações e protegido contra interferências durante todo o processamento dos dados, porém devemos criá-lo com cuidado. Afinal muitas outras aplicações criarão os delas, esse espaço tende a ser continuo e para seu uso mais racional, o endereçamento renumera em tempo de execução para 1 até o ultimo byte reservado.


📌 Tipos de Address Space comuns no ambiente z/OS:



Article content

Tipo de EspaçoDescriçãoJob Address SpaceCriado quando um JCL é submetido. Executa seu programa COBOL.TSO Address SpaceQuando um usuário entra via TSO (ISPF), um espaço é criado.CICS RegionCICS cria um espaço para executar programas COBOL online.STC (Started Task)Tasks como SDSF, VTAM ou WebSphere são address spaces.


🛠️ Dica prática para COBOListas

Se você estiver enfrentando erros de memória, como abend S0C4, S0C1, S80A, saiba que o problema pode estar relacionado à forma como o seu programa está usando (ou ultrapassando) os limites do Address Space.

Sempre recomendo o uso dos Bug traps do COBOL, nunca deixe de validar returns codes, sql codes e validar os valores resultantes. Evitando abends descontralados em tempo de execução.


💡 Curiosidade Bellacosa Mainframe:

Cada address space tem sua própria área de memória protegida, mas todos compartilham o mesmo sistema de I/O, JES e catálogo. O z/OS garante que um job de um programador "distraído" não corrompa o ambiente do colega — um isolamento que já existia décadas antes dos containers Docker!

💡 Conclusão

Esse artigo teve como objetivo fornecer os primeiros passos para o futuro Mainframer, mas para obter maiores conhecimentos recomendo visitar o site da IBM , ler os manuais e participar da comunidade para evoluir sempre.

Espero ter ajudado e contem comigo para mais artigos, participe de nossa comunidade.

Ajude-nos a evoluir sempre.

Obrigado.