Translate

Mostrar mensagens com a etiqueta dataset sequencial. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta dataset sequencial. Mostrar todas as mensagens

sábado, 24 de junho de 2023

IEBPTPCH: Como um Padawan COBOL Pode Enxergar os Segredos dos Data Sets do IBM Z Sem Invocar IDCAMS, ISPF ou Magia Negra

 

Bellacosa Mainframe e o iebptpch para analise de copybooks

☕ O Holocron do IEBPTPCH

Como um Padawan COBOL Pode Enxergar os Segredos dos Data Sets do IBM Z Sem Invocar IDCAMS, ISPF ou Magia Negra

"O Mainframe nunca escondeu seus segredos. Apenas esperava que alguém tivesse paciência suficiente para imprimir seus antigos holocrons."

— Bellacosa Mainframe

Introdução – O dia em que o Padawan encontrou um artefato esquecido

Todo programador COBOL passa por algumas iniciações obrigatórias.

Primeiro aprende a editar no ISPF.

Depois descobre o SDSF.

Em seguida entende que JCL não é exatamente uma linguagem, mas uma espécie de contrato legal escrito por advogados intergalácticos.

E então chega um dia estranho.

Seu Tech Lead aparece.

Pergunta:

— Bellacosa Jr., consegue verificar o conteúdo do copybook ACCOUNT-COMMON sem abrir o ISPF?

Você responde:

— Posso fazer um Browse...

Ele sorri.

— Não.

— Quero um spool.

— Quero evidência.

— Quero auditoria.

— Quero algo que funcione igual em 1985, 2005 e 2026.

Nesse momento surge um pequeno utilitário.

Pequeno.

Discreto.

Quase esquecido.

Chamado IEBPTPCH.

E ele provavelmente estava instalado no seu sistema antes mesmo de você nascer.


Afinal, o que é o IEBPTPCH?

IEBPTPCH é um dos utilitários clássicos do z/OS.

Seu nome vem de uma época em que desenvolvedores utilizavam cartões perfurados.

IBM Extended Basic Punch Utility

O nome ficou.

Os cartões morreram.

Mas o utilitário continua vivo.

Sua missão é extremamente simples:

Visualizar dados sem alterá-los.

Ele funciona como um scanner arqueológico.

Abre.

Lê.

Imprime.

Exporta.

Documenta.

Mas não modifica.

É quase um modo READ ONLY elevado ao estado zen.


Por que ele ainda existe?

Porque empresas grandes amam evidências.

Bancos.

Seguradoras.

Governo.

Bolsa de Valores.

Data Centers.

Auditores não gostam de ouvir:

"Confia em mim."

Eles gostam de receber:

PDF

Spool

Relatórios

Listagens

Evidências históricas

IEBPTPCH nasceu para isso.


O grande poder do utilitário

Ele consegue trabalhar com:

Dataset sequencial

PS


Biblioteca particionada

PDS

PDSE


Vários datasets concatenados

ARQ1

ARQ2

ARQ3

Tudo junto.


Membros específicos

COPYBOOKS

COBOL

JCL

PROC


Anatomia do Job

Passo 1

EXEC

//STEP01 EXEC PGM=IEBPTPCH

Nada de parâmetros.

Nada complicado.


Passo 2

SYSUT1

Entrada.

É o Holocron.

Dataset origem.

//SYSUT1 DD DSN=BANK.COPYLIB,
// DISP=SHR

Passo 3

SYSUT2

Destino.

Geralmente spool.

//SYSUT2 DD SYSOUT=*

Pode ser arquivo também.


Passo 4

SYSPRINT

Mensagens.

Diagnóstico.

//SYSPRINT DD SYSOUT=*

Passo 5

SYSIN

Comandos.

//SYSIN DD *
PRINT TYPORG=PO
/*

Fim.

Literalmente.

Acabou.

O utilitário já está funcionando.


Entendendo o TYPORG

Esse parâmetro derruba muitos padawans.

TYPORG=PO

Partitioned Organization

PDS

PDSE

Exemplo:

PRINT TYPORG=PO

TYPORG=PS

Sequential

Arquivo sequencial.

Exemplo:

PRINT TYPORG=PS

Laboratório 1 — Imprimindo um programa COBOL

Suponha:

BELLA.COBOL.SOURCE

Possui:

PGMCLIENT

Nosso objetivo:

Visualizar.

Imprimir.

Documentar.

Sem editar.


JCL

//PRINT01 EXEC PGM=IEBPTPCH

//SYSUT1 DD DSN=BELLA.COBOL.SOURCE,
/// DISP=SHR

//SYSUT2 DD SYSOUT=*

//SYSPRINT DD SYSOUT=*

//SYSIN DD *

PRINT MEMBER=PGMCLIENT,
      TYPORG=PO

/*

Resultado:

IDENTIFICATION DIVISION.

PROGRAM-ID. PGMCLIENT.

DATA DIVISION.

WORKING-STORAGE SECTION.

Tudo vai para spool.

Pode virar PDF.

Enviar email.

Arquivar.

Git.

Wiki.

Confluence.

RAG.

LLM.


Laboratório 2 — Copybook perdido

Situação real.

Padawan recebe erro:

IGYDS1089-E

Copybook não encontrado.

Ele suspeita.

Existe um copybook chamado:

CLIENTE

Mas não sabe.

Executa:

PRINT MEMBER=CLIENTE,
      TYPORG=PO

Descobre:

05 CPF PIC 9(11).

05 NOME PIC X(50).

Mistério resolvido.


Laboratório 3 — Dataset Sequencial

Arquivo:

BANK.CLIENT.FILE

Conteúdo:

000001JOSE
000002MARIA
000003ANA

JCL:

PRINT TYPORG=PS

Saída:

000001JOSE

000002MARIA

000003ANA

Simples.

Elegante.

Funciona desde o System/370.


Laboratório 4 — Concatenando datasets

Algo muito utilizado.

Exemplo:

//SYSUT1 DD DSN=FILE01,
// DISP=SHR

// DD DSN=FILE02,
// DISP=SHR

// DD DSN=FILE03,
// DISP=SHR

IEBPTPCH processa tudo.

Como se fosse um único arquivo.

Excelente para auditorias.


Easter Egg Nº 1

Pouca gente sabe.

O nome PUNCH não desapareceu.

Existe ainda.

PUNCH TYPORG=PO

Originalmente produzia cartões perfurados.

Hoje gera saída textual.

É um pequeno fóssil tecnológico preservado dentro do z/OS.


Easter Egg Nº 2

Em vários bancos brasileiros o IEBPTPCH ainda é usado por equipes SOX.

Motivo?

Auditores adoram spool.

Spool possui:

Timestamp

Classe

Owner

Jobname

Número do Job

Histórico

É praticamente uma cadeia de custódia digital.


Easter Egg Nº 3

Muitos pipelines modernos de IA podem usar IEBPTPCH.

Arquitetura:

PDS

↓

IEBPTPCH

↓

TXT

↓

Chunking

↓

Embedding

↓

Vector DB

↓

RAG

↓

Agente COBOL

Sim.

Um utilitário criado na década de 1960 pode alimentar agentes de IA em 2026.

Existe certa poesia nisso.


Comparação com outros utilitários

UtilitárioFaz o quê
IEBPTPCHVisualiza
IEBGENERCopia
IEBCOPYManipula PDS
IDCAMSVSAM
DFSORTOrdena
ISPF BrowseVisualiza
SDSFConsulta spool

Dicas de veterano Bellacosa Mainframe

Dica 1

Nunca faça EDIT apenas para olhar.

Use Browse.

Ou IEBPTPCH.


Dica 2

Quer documentação automática?

IEBPTPCH.

Spool.

PDF.

Git.

IA.


Dica 3

Quer descobrir rapidamente o que existe numa biblioteca antiga?

IEBPTPCH.


Dica 4

Em ambientes regulados, produzir evidência vale ouro.

IEBPTPCH é praticamente um gerador oficial de evidências.


O que um Padawan COBOL deve aprender com isso?

O erro comum dos iniciantes é imaginar que dominar Mainframe significa conhecer apenas COBOL, DB2 e CICS.

Não.

O verdadeiro Jedi do IBM Z entende que o ecossistema é formado por centenas de pequenos holocrons tecnológicos acumulados ao longo de mais de sessenta anos de engenharia.

IEBPTPCH é um deles.

Ele não possui interface web.

Não oferece API REST.

Não conversa diretamente com ChatGPT.

Não tem dashboard em React.

Mas continua fazendo algo extraordinariamente importante:

Permitir observar, compreender e preservar conhecimento corporativo armazenado em datasets do z/OS de forma simples, segura e praticamente imutável.

E talvez seja exatamente isso que diferencia um simples programador COBOL de um Mestre Bellacosa Mainframe: entender que, antes de modernizar sistemas, conectar APIs ou alimentar agentes de IA, é preciso primeiro abrir os antigos holocrons do datacenter e aprender a escutar o que eles ainda têm a ensinar.


segunda-feira, 26 de março de 2007

O que é um Dataset no Mainframe?

 

Bellacosa Mainframe o que é um dataset

O que é Dataset no Mainframe?

No ambiente mainframe IBM Z, um dos conceitos mais importantes é:

Dataset.

Praticamente tudo no z/OS gira em torno deles:

  • programas;

  • JCL;

  • arquivos COBOL;

  • relatórios;

  • bibliotecas;

  • cargas batch;

  • bancos VSAM.


Definição simples

Dataset é:

um conjunto organizado de dados armazenado no disco do mainframe.

É equivalente a:

  • arquivos no Windows;

  • arquivos Linux;

  • documentos digitais.

Mas no mainframe os datasets possuem:

muito mais controle e estrutura.


Analogia simples


Windows

C:\TEMP\CLIENTES.TXT

Mainframe

EMPRESA.PROD.CLIENTES

Dataset = arquivo do mainframe


Onde datasets ficam?

Normalmente em:

DASD.


O que é DASD?

Direct Access Storage Device

Disco do mainframe.


Tipos mais comuns de dataset


Sequential Dataset (PS)

Arquivo sequencial.


PDS

Partitioned Dataset.

Biblioteca com membros.


PDSE

Versão moderna do PDS.


VSAM

Dataset avançado indexado.


GDG

Geração de datasets.


Dataset sequencial (PS)

Muito usado em:

  • COBOL batch;

  • relatórios;

  • arquivos entrada;

  • saída batch.


Exemplo

BANCO.CLIENTES.ARQ

Como funciona?

Os registros são lidos:

em sequência.


Fluxo

REG1
 ↓
REG2
 ↓
REG3

Muito usado com COBOL READ


O que é PDS?

Partitioned Dataset

Dataset dividido em:

membros.


Analogia

Como uma pasta contendo:

  • vários arquivos.


Muito usado para:

  • JCL;

  • PROC;

  • COBOL source;

  • CLIST;

  • REXX.


Exemplo

USER.JCLLIB

Membros:

TESTE
COBOL
BACKUP

O que é PDSE?

Versão moderna do:

PDS.


Vantagens do PDSE

  • menos fragmentação;

  • gerenciamento automático;

  • mais eficiente;

  • mais moderno.


O que é VSAM?

Dataset mais sofisticado.

Pode possuir:

  • índice;

  • acesso direto;

  • chave.


Muito usado em:

  • bancos;

  • sistemas online;

  • CICS.


O que é GDG?

Generation Data Group

Controle de versões de datasets.


Exemplo

RELATORIO(+1)

Como datasets são identificados?

Por:

DSN.


DSN = Dataset Name


Exemplo

EMPRESA.FINANCEIRO.CLIENTES

Regras comuns

  • separados por ponto;

  • até 44 caracteres;

  • níveis hierárquicos.


Estrutura visual

EMPRESA
   ↓
FINANCEIRO
   ↓
CLIENTES

Como datasets aparecem no JCL?

Via:

DD statement.


Exemplo

//CLIENTE DD DSN=EMPRESA.CLIENTES,
//            DISP=SHR

Explicando

ElementoFunção
DDDefine dataset
DSNNome dataset
DISPTipo acesso

DISP mais comuns

DISPSignificado
SHRCompartilhado
OLDExclusivo
NEWNovo dataset
MODAcrescentar dados

Como COBOL usa dataset?

Através de:

  • SELECT;

  • ASSIGN;

  • READ;

  • WRITE.


Exemplo COBOL

SELECT ARQCLI
ASSIGN TO CLIENTE.

Ligação COBOL ↔ JCL

COBOL ASSIGN
      ↓
DDNAME JCL
      ↓
Dataset real

O que é layout do dataset?

Estrutura do registro.


Exemplo

12345JOAO SILVA          0001500

Layout COBOL

05 ID      PIC 9(5).
05 NOME    PIC X(20).
05 SALDO   PIC 9(7).

Dataset pode conter:

  • texto;

  • números;

  • binários;

  • packed decimal;

  • JCL;

  • programas.


Dataset no SDSF/ISPF

Muito acessado usando:

  • 3.4 ISPF;

  • SDSF;

  • utilities.


Comandos famosos

LISTCAT

ALLOC

IEBGENER

O que é catalog?

Catálogo do z/OS.

Guarda:

  • localização;

  • volume;

  • informações dataset.


O que é volume?

Disco físico/lógico onde dataset está.


Dataset temporário

Criado temporariamente no JOB.


Exemplo

//TEMP DD DSN=&&TEMP

Dataset permanente

Fica armazenado após execução.


Dataset e batch

Praticamente todo batch:

  • lê datasets;

  • processa;

  • grava novos datasets.


Fluxo batch clássico

INPUT DATASET
      ↓
COBOL PROCESSA
      ↓
OUTPUT DATASET

Curiosidades incríveis

1. Mainframes armazenam bilhões de datasets


2. PDS foi uma revolução para bibliotecas JCL/COBOL


3. VSAM ainda é extremamente usado em bancos


4. Muitos datasets existem há décadas em produção


Erros comuns de iniciantes


1. Confundir PDS com dataset sequencial


2. DDNAME diferente do ASSIGN


3. DISP incorreto


4. Layout incompatível


5. Não entender organização do dataset


Dicas importantes

Entenda PS vs PDS vs VSAM


Sempre valide DDNAME


Aprenda DISP corretamente


Conheça layouts COBOL


Resumo rápido

TipoFunção
PSSequencial
PDSBiblioteca
PDSEBiblioteca moderna
VSAMIndexado
GDGVersionamento
DSNNome dataset
DDAssociação JCL

Conclusão

Dataset é a estrutura fundamental de armazenamento no ambiente mainframe IBM Z.

Eles armazenam programas, arquivos batch, bibliotecas, dados corporativos e informações críticas, sendo essenciais para COBOL, JCL, CICS e processamento no z/OS.

domingo, 11 de fevereiro de 2007

O que é Dataset QSAM?

 

Bellacosa Mainframe o q é dataset QSAM

O que é Dataset QSAM?

QSAM significa:

Queued Sequential Access Method

É um dos métodos de acesso a arquivos mais antigos, importantes e utilizados da história do mainframe.

Praticamente todo programador COBOL batch trabalha com QSAM em algum momento.


Definição simples

QSAM é:

o método de acesso usado para ler e gravar arquivos sequenciais no z/OS.

Quando falamos de um dataset sequencial (PS), normalmente estamos falando de um arquivo acessado através do QSAM.


Analogia simples

Imagine uma fita cassete.

Você precisa ouvir:

Música 1
 ↓
Música 2
 ↓
Música 3
 ↓
Música 4

Não pode pular diretamente para a música 4.

O QSAM funciona da mesma forma.


Fluxo QSAM

Registro 1
    ↓
Registro 2
    ↓
Registro 3
    ↓
Registro 4

Leitura sequencial.


Onde o QSAM é usado?

Principalmente em:

  • COBOL Batch

  • PL/I

  • Assembler

  • Easytrieve

  • SORT

  • Syncsort

  • DFSORT

  • JCL


Tipo de Dataset

Normalmente:

PS (Physical Sequential)

Exemplo de Dataset QSAM

BANCO.CLIENTES.ARQ

Conteúdo:

00001JOAO SILVA
00002MARIA SOUZA
00003CARLOS LIMA

Como o COBOL acessa?

Na ENVIRONMENT DIVISION:

SELECT ARQCLI
ASSIGN TO CLIENTE
ORGANIZATION IS SEQUENTIAL.

Na FILE SECTION

FD ARQCLI.

01 REG-CLIENTE.
   05 CLI-ID    PIC 9(5).
   05 CLI-NOME  PIC X(30).

Leitura QSAM

READ ARQCLI

A cada READ:

Registro 1
 ↓
Registro 2
 ↓
Registro 3

Escrita QSAM

WRITE REG-CLIENTE

O novo registro é gravado no final do arquivo.


Operações principais

OPEN

OPEN INPUT ARQCLI

READ

READ ARQCLI

WRITE

WRITE REG-CLIENTE

CLOSE

CLOSE ARQCLI

Como o JCL participa?

//CLIENTE DD DSN=BANCO.CLIENTES.ARQ,
//            DISP=SHR

Fluxo:

JCL
 ↓
DDNAME
 ↓
QSAM
 ↓
COBOL

O que é Buffering?

O QSAM utiliza buffers em memória.

Em vez de ler um registro por vez:

Disco
 ↓
Buffer
 ↓
Programa

Isso melhora muito a performance.


O que significa "Queued"?

O sistema mantém uma fila de registros em memória.

Por isso o nome:

Queued Sequential Access Method

QSAM x BSAM

QSAM

Mais simples.

O sistema controla os buffers.

Programa
 ↓
QSAM
 ↓
Disco

BSAM

Mais baixo nível.

O programador controla os buffers.

Programa
 ↓
Buffer Manual
 ↓
Disco

QSAM x VSAM

QSAM

Acesso sequencial.

1
↓
2
↓
3
↓
4

VSAM KSDS

Acesso por chave.

PROCURA CHAVE 00003
       ↓
Registro encontrado

Vantagens do QSAM

✅ Simples

✅ Excelente para batch

✅ Muito rápido

✅ Fácil programação COBOL

✅ Baixo consumo de recursos


Desvantagens

❌ Não possui índice

❌ Não acessa diretamente um registro específico

❌ Necessita percorrer registros anteriores


Casos de uso clássicos

Folha salarial

Funcionário 1
Funcionário 2
Funcionário 3
...

Relatórios

Cliente 1
Cliente 2
Cliente 3
...

Processamento bancário

Transação 1
Transação 2
Transação 3
...

Exemplo Batch Completo

OPEN INPUT ARQCLI

PERFORM UNTIL EOF = 'S'

   READ ARQCLI
      AT END
         MOVE 'S' TO EOF

      NOT AT END
         PERFORM PROCESSAR

   END-READ

END-PERFORM

CLOSE ARQCLI

Curiosidades

1. Grande parte dos batchs do mundo ainda utiliza QSAM

2. O QSAM existe desde os primeiros sistemas OS/360

3. Muitos bancos processam bilhões de registros QSAM diariamente

4. DFSORT e Syncsort trabalham intensamente com datasets QSAM


Erros comuns de iniciantes

Esquecer OPEN


Não tratar EOF


Layout incompatível


DDNAME diferente do ASSIGN


Não verificar FILE STATUS


Resumo rápido

ConceitoSignificado
QSAMQueued Sequential Access Method
Tipo de ArquivoSequencial (PS)
AcessoSequencial
Comando COBOLREAD / WRITE
PerformanceAlta
ÍndiceNão
Uso PrincipalBatch
BufferAutomático

Conclusão

O QSAM é o método de acesso padrão para datasets sequenciais no z/OS. Ele utiliza buffers automáticos e acesso sequencial aos registros, sendo a base de grande parte dos programas COBOL batch executados diariamente nos ambientes IBM Z.