1. Tipos de datasets no mainframe

Existem três tipos principais de datasets que você vai encontrar no dia a dia:

TipoDSORGO que éUso típico
SequencialPSUm único arquivo linear, como um arquivo textoDados de entrada/saída, logs, relatórios
Particionado (PDS)POUma biblioteca com vários membros, cada um sendo um arquivoProgramas COBOL, JCL, copybooks
PDSEPO-EVersão melhorada do PDS — não precisa de COMPRESS, aceita nomes de membro longosSubstituindo PDS em novos projetos
VSAMDataset organizado por chave ou por posição relativaArquivos 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.

LC001.COBOL.SOURCE ← PDS de fontes COBOL do usuário LC001 LC001.JCL.PROD ← PDS de JCL de produção LC001.DADOS.ENTRADA ← dataset sequencial de dados de entrada LC001.COBOL.SOURCE(CALCFOL)← membro CALCFOL dentro do PDS SYS1.PROCLIB ← biblioteca de procedures do sistema CEE.SCEELKED ← runtime do Language Environment (IBM)
RegraDetalhe
HLQO primeiro qualificador é o High-Level Qualifier. Normalmente é o userid ou o nome do projeto/sistema
Caracteres válidosA–Z, 0–9, @, #, $. Não pode começar com número. Sem espaços
Tamanho por qualificadorMáximo 8 caracteres
Tamanho totalMáximo 44 caracteres (incluindo os pontos)
Nome de membroMá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:

Data Set List Utility Command ===> _ Enter the name of an existing data set, or a fully or partially qualified data set name with a trailing asterisk (*). Dsname Level . . . LC001 Volume serial . . (Blank for cataloged data set) Data set type . . (BLANK, NONVSAM, BASE, ALIAS)

Digite seu HLQ (ex: LC001) e pressione Enter. A lista de todos os seus datasets aparece:

DSLIST - Data Sets Matching LC001 Command ===> _ Scroll ===> CSR Command Name Tracks XT DSORG RECFM LRECL ──────────────────────────────────────────────────────────────────────────────── LC001.COBOL.SOURCE 15 1 PO FB 80 LC001.DADOS.ENTRADA 5 1 PS FB 150 LC001.JCL.PROD 10 1 PO FB 80 LC001.LOAD.LIB 3 1 PO U 0

Na coluna Command (à esquerda do nome), você digita uma letra para agir sobre o dataset:

ComandoAção
EEditar (abre no ISPF Editor)
VView (somente leitura)
BBrowse (somente leitura, sem modo de edição)
DDeletar o dataset
RRenomear o dataset
IInformações (VTOCs, volume, alocação)
CCatalogar/descatalogar
SSelecionar (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):

Allocate New Data Set Command ===> _ Data Set Name . . . . 'LC001.TESTE.SOURCE' Management class . . (Blank for default management class) Storage class . . . (Blank for default storage class) Volume serial . . . (Blank for system default) Device type . . . . (Generic unit or device address) Data class . . . . . (Blank for default data class) Space units . . . . TRK (BLKS, TRKS, CYLS, KB, MB, BYTES, RECORDS) Average record unit (M, K, or U) Primary quantity . . 10 (In above units) Secondary quantity 5 (In above units) Directory blocks . . 10 (Zero for sequential data set) Record format . . . FB Record length . . . 80 Block size . . . . . 0 (Zero for system default) Data set name type . PDS (LIBRARY, HFS, EXT, BASIC, LARGE, PDS, or EXTREQ)

Os campos mais importantes ao alocar:

CampoO que defineValores comuns
Space unitsUnidade de espaçoTRK (tracks), CYL (cylinders)
Primary quantityEspaço inicial alocado10–100 tracks para um PDS de programas
Secondary quantityExtensão automática se encher50% do primário é um bom padrão
Directory blocksQuantidade de entradas no diretório do PDS10–50; 0 = dataset sequencial
Record formatFormato do registroFB (fixo bloqueado), VB (variável bloqueado)
Record lengthTamanho do registro80 (COBOL/JCL), 133 (relatórios com ASA)
Dataset name typePDS 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:

Move/Copy Utility Command ===> _ Option . . . C (C - Copy, CP - Copy and print, M - Move, MP - Move and print, L - Copy and LMF lock, LMCO - LMF check-in) From ISPF Library: Project . . LC001 Group . . . COBOL Type . . . SOURCE Member . . CALCFOL (Blank or * for all members) To ISPF Library: Project . . LC001 Group . . . BACKUP Type . . . SOURCE Member . . (Blank to copy with same name)

✅ 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):

Member List Command ===> _ Scroll ===> CSR Name Prompt Size Init Mod ID Created Changed ──────────────────────────────────────────────────────────────────────────────── CALCFOL 37 37 0 LC001 26/05/14 26/06/10 14:22 CALCMES 52 48 4 LC001 26/04/20 26/06/15 09:05 RELAT001 28 28 0 LC001 26/03/10 26/04/30 11:15

Na coluna à esquerda do nome, você digita:

  • E — editar o membro
  • V — visualizar (view)
  • D — deletar o membro
  • R — renomear o membro
  • S — 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.