1. Tipos de datasets no mainframe
Existem três tipos principais de datasets que você vai encontrar no dia a dia:
| Tipo | DSORG | O que é | Uso típico |
|---|---|---|---|
| Sequencial | PS | Um único arquivo linear, como um arquivo texto | Dados de entrada/saída, logs, relatórios |
| Particionado (PDS) | PO | Uma biblioteca com vários membros, cada um sendo um arquivo | Programas COBOL, JCL, copybooks |
| PDSE | PO-E | Versão melhorada do PDS — não precisa de COMPRESS, aceita nomes de membro longos | Substituindo PDS em novos projetos |
| VSAM | — | Dataset organizado por chave ou por posição relativa | Arquivos de dados de aplicações (ver trilha VSAM) |
🦕 Analogia — PDS é como uma pasta ZIP
Um dataset sequencial é como um arquivo único (relatorio.txt). Um PDS é como uma pasta ZIP: tem um nome externo e dentro dela há vários arquivos (membros). O nome completo de um membro é BIBLIOTECA(MEMBRO), como LC001.COBOL.SOURCE(CALCFOL). Abrir o PDS sem especificar membro mostra a lista de membros — exatamente como abrir o ZIP para ver o conteúdo.
2. Nomenclatura — como nomear datasets
Nomes de dataset no mainframe seguem a convenção HLQ.qualificador2.qualificador3… onde cada parte separada por ponto é um qualificador de até 8 caracteres. O nome total não pode passar de 44 caracteres.
| Regra | Detalhe |
|---|---|
| HLQ | O primeiro qualificador é o High-Level Qualifier. Normalmente é o userid ou o nome do projeto/sistema |
| Caracteres válidos | A–Z, 0–9, @, #, $. Não pode começar com número. Sem espaços |
| Tamanho por qualificador | Máximo 8 caracteres |
| Tamanho total | Máximo 44 caracteres (incluindo os pontos) |
| Nome de membro | Máximo 8 caracteres (PDS) ou até 255 caracteres (PDSE) |
3. DSLIST (3.4) — listar datasets
A tela mais usada nas utilities é a 3.4 — DSLIST. Digite =3.4 em qualquer command line para acessar:
Digite seu HLQ (ex: LC001) e pressione Enter. A lista de todos os seus datasets aparece:
Na coluna Command (à esquerda do nome), você digita uma letra para agir sobre o dataset:
| Comando | Ação |
|---|---|
E | Editar (abre no ISPF Editor) |
V | View (somente leitura) |
B | Browse (somente leitura, sem modo de edição) |
D | Deletar o dataset |
R | Renomear o dataset |
I | Informações (VTOCs, volume, alocação) |
C | Catalogar/descatalogar |
S | Selecionar (para utilities) |
✅ Filtrar com padrão
No campo Dsname Level você pode usar padrões parciais. Digite LC001.COBOL para ver só os datasets com esse prefixo. Isso é muito útil em ambientes com centenas de datasets — restrinja o filtro para encontrar o que precisa rapidamente.
4. Alocar um dataset (3.2)
Para criar um novo dataset, use =3.2 (Dataset Utility) e escolha opção A (Allocate):
Os campos mais importantes ao alocar:
| Campo | O que define | Valores comuns |
|---|---|---|
| Space units | Unidade de espaço | TRK (tracks), CYL (cylinders) |
| Primary quantity | Espaço inicial alocado | 10–100 tracks para um PDS de programas |
| Secondary quantity | Extensão automática se encher | 50% do primário é um bom padrão |
| Directory blocks | Quantidade de entradas no diretório do PDS | 10–50; 0 = dataset sequencial |
| Record format | Formato do registro | FB (fixo bloqueado), VB (variável bloqueado) |
| Record length | Tamanho do registro | 80 (COBOL/JCL), 133 (relatórios com ASA) |
| Dataset name type | PDS ou LIBRARY (PDSE) | PDS para compatibilidade, LIBRARY para novos projetos |
⚠️ Directory blocks esgotados no PDS
Um PDS tradicional tem um número fixo de directory blocks definido na criação. Quando você adiciona muitos membros, o diretório pode encher — mesmo que o dataset ainda tenha espaço. O sintoma é a mensagem "Directory is full". Nesse caso é preciso realocar o PDS com mais directory blocks. Com PDSE (LIBRARY) esse problema não existe, pois o diretório expande automaticamente.
5. Copiar e mover (3.3)
A opção 3.3 (Move/Copy) copia ou move um dataset ou membro de uma localização para outra:
✅ Copiar todos os membros de uma vez
Deixe o campo Member em branco (ou use *) para copiar ou mover todos os membros do PDS de origem para o destino. Muito útil para fazer backup de uma biblioteca inteira ou migrar programas entre ambientes.
6. Gerenciar membros de PDS (3.1)
A opção 3.1 (Library) gerencia membros individualmente dentro de um PDS: renomear, deletar, ver statistics (data/hora de modificação, versão):
Na coluna à esquerda do nome, você digita:
E— editar o membroV— visualizar (view)D— deletar o membroR— renomear o membroS— selecionar para copy/move
💗 Compress — liberar espaço no PDS
Toda vez que você edita e salva um membro de PDS, o espaço da versão anterior não é liberado imediatamente. Com o tempo, o PDS acumula espaço "morto" de versões antigas. Para recuperar esse espaço, faça um COMPRESS: na lista de membros, digite COMPRESS na command line. Com PDSE isso não é necessário — o compress é automático.