| 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
| Conceito | Significado |
|---|---|
| QSAM | Queued Sequential Access Method |
| Tipo de Arquivo | Sequencial (PS) |
| Acesso | Sequencial |
| Comando COBOL | READ / WRITE |
| Performance | Alta |
| Índice | Não |
| Uso Principal | Batch |
| Buffer | Automá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.