| Bellacosa Mainframe e os datasets ps pds e pdse no z/os |
Entendendo Mainframe Datasets (PS, PDS e PDSE)
Uma análise aprofundada para desenvolvedores COBOL Jr.
A imagem resume um dos conceitos mais importantes do ecossistema z/OS: datasets. Se você está iniciando em COBOL, JCL, DB2, CICS ou suporte Mainframe, compreender datasets não é apenas importante — é obrigatório.
Muitos iniciantes vêm do mundo Windows, Linux ou Cloud e tentam enxergar o Mainframe usando a lógica de diretórios, arquivos e pastas tradicionais. Esse é um dos primeiros erros.
No Mainframe, a unidade fundamental de armazenamento não é o arquivo ("file"), mas sim o dataset.
1. O que é um Dataset?
Um dataset é uma estrutura lógica utilizada para armazenar informações dentro do z/OS.
Ele pode conter:
Programas COBOL
Fontes Assembler
Membros JCL
Procedures
Relatórios
Arquivos de entrada
Arquivos de saída
Dados transacionais
Bibliotecas de Load Modules
Em ambientes distribuídos você pensa:
Windows/Linux
Diretório
├── arquivo1.txt
├── arquivo2.txt
└── arquivo3.txt
No Mainframe:
Dataset
ou
Dataset
├── membro1
├── membro2
└── membro3
Dependendo do tipo.
2. Por que o Mainframe usa Datasets?
Quando o OS/360 foi criado nos anos 60, não existia o conceito moderno de sistemas de arquivos hierárquicos como conhecemos hoje.
O Mainframe foi projetado para:
Processamento em lote (Batch)
Alta performance
Baixo overhead
Grandes volumes de dados
Por isso surgiu o conceito de datasets.
Até hoje ele continua porque funciona extremamente bem.
3. Os Três Tipos Fundamentais
A imagem apresenta:
PS
Physical Sequential
PDS
Partitioned Dataset
PDSE
Partitioned Dataset Extended
Esses três tipos aparecem diariamente em qualquer ambiente corporativo.
4. PS – Physical Sequential Dataset
Imagine uma folha de papel.
Você escreve:
Linha 1
Linha 2
Linha 3
Linha 4
Você lê exatamente nessa sequência.
Isso é um PS.
Estrutura
Registro 1
Registro 2
Registro 3
Registro 4
Registro 5
Sem divisões internas.
Sem membros.
Sem pastas.
É um único bloco de informação.
Analogia Bellacosa
Imagine um PDF.
Você abre.
Existe apenas um documento.
Não existe:
Capítulo como arquivo separado
Tudo está dentro dele.
PS é exatamente isso.
Exemplos reais
Arquivo de clientes:
CLIENTES.DIARIO
Arquivo de vendas:
VENDAS.MENSAL
Relatório batch:
RELATORIO.FINANCEIRO
Arquivo de entrada:
INPUT.ARQ001
5. Como um programa COBOL lê um PS?
Exemplo:
SELECT CLIENTES
ASSIGN TO CLIENTES.
FD:
FD CLIENTES.
01 REG-CLIENTE.
05 ID-CLIENTE PIC 9(5).
05 NOME PIC X(30).
O COBOL irá:
Read registro 1
Read registro 2
Read registro 3
...
EOF
Sequencialmente.
6. Características do PS
Vantagens
Muito rápido.
Baixo overhead.
Excelente para batch.
Menos controle interno.
Desvantagens
Não possui membros.
Difícil organizar múltiplos objetos.
Pouca flexibilidade.
7. Onde um COBOL Jr vê PS?
Todos os dias.
Arquivos:
INPUT
OUTPUT
SORTWK
EXTRACT
REPORT
Normalmente são PS.
Exemplo JCL:
//INFILE DD DSN=USER.CLIENTES,
// DISP=SHR
Esse dataset costuma ser PS.
8. PDS – Partitioned Dataset
Agora imagine um armário de arquivos.
Estrutura:
Armário
├── Gaveta A
├── Gaveta B
├── Gaveta C
O armário é o dataset.
As gavetas são membros.
Estrutura real
USER.COBOL.SOURCE
Contendo:
PROG001
PROG002
PROG003
PROG004
Cada membro é um programa.
Analogia Bellacosa
Imagine uma pasta Windows:
COBOL
├── PROG001.CBL
├── PROG002.CBL
└── PROG003.CBL
No Mainframe:
USER.COBOL.SOURCE
com membros:
PROG001
PROG002
PROG003
9. O Diretório do PDS
O segredo do PDS está no diretório.
Ele mantém a lista dos membros.
Exemplo:
PROG001
PROG002
PROG003
PROG004
Toda vez que você abre:
USER.COBOL.SOURCE
o sistema consulta esse diretório.
10. O Problema Histórico do PDS
Aqui aparece uma questão clássica de entrevista.
O PDS sofre com:
Directory Full
ou
Space Fragmentation
Imagine:
PROG001
PROG002
PROG003
Você apaga:
PROG002
O espaço não é totalmente reaproveitado.
Com o tempo:
Espaço livre espalhado
começa a existir dentro do dataset.
Consequências:
desperdício de espaço
lentidão
necessidade de manutenção
11. Compress do PDS
Por isso surgiu o famoso:
IEBCOPY COMPRESS
ou
3.1 Compress
no ISPF.
O processo reorganiza:
Membro 1
Membro 2
Membro 3
removendo os buracos.
Analogia:
Desfragmentação de disco.
12. Onde o PDS é usado?
Muito comum para:
JCL
USER.JCL
COBOL Sources
USER.COBOL
PROC Libraries
USER.PROCLIB
Copybooks
USER.COPYLIB
13. Como acessar um membro?
Sintaxe:
USER.COBOL(PROG001)
Dataset:
USER.COBOL
Membro:
PROG001
14. JCL utilizando membro
//SYSIN DD DSN=USER.JCL(MYJOB),
// DISP=SHR
ou
EXEC PROC=PROC001
onde:
USER.PROCLIB(PROC001)
contém a procedure.
15. PDSE – A Evolução do PDS
IBM percebeu:
"PDS gera manutenção demais."
Resultado:
PDSE.
Partitioned Dataset Extended.
O que mudou?
Praticamente tudo internamente.
Externamente parece igual.
Você continua acessando:
USER.COBOL(PROG001)
Mas internamente o gerenciamento mudou completamente.
16. PDSE é um Sistema Inteligente
PDS:
Gerenciamento manual
PDSE:
Gerenciamento automático
Analogia Bellacosa:
PDS:
Arquivo de aço dos anos 80
PDSE:
Google Drive
17. Eliminação do Compress
Maior vantagem.
PDS:
Compress obrigatório
PDSE:
Compress não existe
O próprio sistema gerencia.
18. Espaço Dinâmico
PDS:
Diretório fixo
PDSE:
Diretório expansível
Isso resolve:
Directory Full
19. Melhor Performance
PDSE utiliza estruturas modernas.
Possui cache.
Melhor gerenciamento interno.
Menor contenção.
Em ambientes grandes:
Milhares de acessos simultâneos
a diferença é perceptível.
20. PDSE para Load Libraries
Muito importante.
Bibliotecas de programas compilados:
LOADLIB
STEPLIB
LINKLIB
normalmente são PDSE.
Exemplo:
USER.LOADLIB
Membros:
PROGA
PROGB
PROGC
Cada membro é um módulo executável.
21. Geração de Objetos COBOL
Fluxo clássico:
Source
↓
Compile
↓
Object
↓
Link Edit
↓
Load Module
Onde ficam?
Source:
PDS/PDSE
Objeto:
PDS/PDSE
Load:
PDSE
22. Fluxo Completo de Desenvolvimento COBOL
Imagine:
USER.COBOL
Membro:
PGMCLI01
Compilação:
IGYCRCTL
gera:
USER.OBJLIB
Depois:
USER.LOADLIB
Finalmente:
EXEC PGM=PGMCLI01
executa o módulo armazenado na LOADLIB.
23. O que um Dev COBOL Jr precisa decorar?
PS
Pergunta:
"Possui membros?"
Resposta:
Não
PDS
Pergunta:
"Precisa compress?"
Resposta:
Sim
PDSE
Pergunta:
"Precisa compress?"
Resposta:
Não
PDS
Pergunta:
"Directory fixo?"
Resposta:
Sim
PDSE
Pergunta:
"Directory expansível?"
Resposta:
Sim
24. Perguntas Clássicas de Entrevista
Qual a diferença entre PDS e PDSE?
Resposta curta:
PDS utiliza diretório fixo e requer compressão periódica. PDSE possui gerenciamento automático de espaço, diretório dinâmico e não necessita compressão.
O que é um membro?
Resposta:
Uma subdivisão lógica dentro de um PDS ou PDSE.
Um PS possui membros?
Resposta:
Não.
Como referenciar um membro?
Resposta:
DSN(MEMBER)
Exemplo:
USER.COBOL(PROG001)
Onde ficam os fontes COBOL?
Resposta:
Normalmente:
PDS ou PDSE
25. Visão Arquitetural que Poucos Iniciantes Entendem
A maioria dos juniores pensa:
PS = ruim
PDS = melhor
PDSE = moderno
Mas isso é simplificação excessiva.
A verdade é:
Cada um resolve um problema diferente.
PS
Especialista em:
Grande volume sequencial
PDS
Especialista em:
Organização de membros
PDSE
Especialista em:
Organização moderna de membros
Portanto:
PS ≠ PDS
PDS ≠ PDSE
Eles não competem diretamente.
26. Como enxergar isso como um profissional Mainframe
Visualize uma aplicação bancária:
Fontes COBOL
↓
USER.COBOL (PDSE)
Copybooks
↓
USER.COPYLIB (PDSE)
Objetos
↓
USER.OBJLIB (PDSE)
Executáveis
↓
USER.LOADLIB (PDSE)
Arquivo de clientes
↓
CLIENTE.MESTRE (PS)
Arquivo de transações
↓
TRANSACOES.DIA (PS)
Relatório
↓
RELATORIO.FINAL (PS)
Perceba a lógica:
Código → PDS/PDSE
Dados → PS
Essa separação é um dos pilares da arquitetura Mainframe.
Conclusão
A imagem apresenta apenas a superfície do assunto. Para um desenvolvedor COBOL Jr., o entendimento profundo é que datasets são a espinha dorsal do z/OS. Quase tudo que você fará no Mainframe envolverá abrir, criar, catalogar, alocar, ler, gravar, copiar, compactar ou referenciar datasets.
Guarde a regra mental mais importante:
PS = Arquivo único (Single File)
PDS = Biblioteca com membros (Folder)
PDSE = Biblioteca inteligente (Smart Folder)
E, no dia a dia profissional:
Dados de negócio → PS
Fontes COBOL → PDSE
Copybooks → PDSE
JCLs → PDSE
PROCs → PDSE
Load Modules → PDSE
Quando você dominar datasets, começará a enxergar o Mainframe da forma correta: não como um "Linux antigo", mas como um sistema operacional projetado para processar bilhões de transações com confiabilidade, organização e desempenho que continuam sendo referência mundial décadas depois de sua criação.