Translate

segunda-feira, 15 de janeiro de 2007

O que é “Acima da Linha”, “Acima da Barra” e Endereçamento de Memória 24, 31 e 64 bits no Mainframe?

 

Bellacosa Mainframe e a memoria em mainframe

O que é “Acima da Linha”, “Acima da Barra” e Endereçamento de Memória 24, 31 e 64 bits no Mainframe?

Esse é um dos temas mais importantes — e mais misteriosos — do mundo z/OS.

Quando alguém começa a estudar:

  • JES2;

  • CICS;

  • DB2;

  • storage;

  • performance;

  • programação assembler;

rapidamente encontra frases como:

  • “rodando acima da linha”;

  • “storage abaixo da linha”;

  • “memória acima da barra”.

No começo parece extremamente confuso.

Mas tudo gira em torno de:

como o mainframe organiza memória.


Primeiro: o que é memória no mainframe?

Memória é o espaço usado para:

  • programas;

  • variáveis;

  • buffers;

  • controle do sistema;

  • áreas de trabalho.

O z/OS gerencia isso de forma extremamente organizada.


O problema histórico

Os primeiros mainframes possuíam pouca memória.

Então a IBM criou limites de endereçamento.

Com o tempo:

  • mais memória surgiu;

  • novos limites foram criados;

  • o z/OS evoluiu mantendo compatibilidade histórica.

Resultado:
existem vários “níveis” de memória.


O que significa “endereçamento”?

Endereçamento é:

a capacidade de localizar posições de memória.

Quanto mais bits:

  • maior espaço de memória acessável.


Analogia simples

Imagine memória como:

uma cidade cheia de casas.

O endereço informa:

  • qual casa acessar.

Quanto mais dígitos no endereço:

  • mais casas podem existir.


Endereçamento de 24 bits

Foi um dos primeiros modelos do mainframe.


Quanto consegue endereçar?

2^{24}=16.777.216

Aproximadamente:

16 MB


Isso criou a famosa:

Linha dos 16 MB


O que é “abaixo da linha”?

Toda memória:

abaixo de 16 MB.


O que é “acima da linha”?

Toda memória:

acima de 16 MB.


Visualmente

0 MB
│
├── Abaixo da linha
│
16 MB  ← A LINHA
│
├── Acima da linha
│

Por que isso é importante?

Muitos programas antigos foram escritos para:

memória de 24 bits.

Eles só conseguem trabalhar:

  • abaixo da linha.


Problema clássico

A região abaixo da linha virou:

extremamente disputada.

Porque:

  • sistema;

  • CICS;

  • buffers;

  • programas antigos;

todos queriam espaço ali.


Então surgiu o endereçamento 31 bits

A IBM expandiu o espaço de memória.


Quanto consegue endereçar?

2^{31}=2.147.483.648

Aproximadamente:

2 GB


Mas por que não 32 bits?

Porque 1 bit era usado para controle interno.

Então o z/OS adotou:

31 bits efetivos.


Resultado

Agora existia:

  • memória abaixo da linha;

  • memória acima da linha.

Muito mais espaço disponível.


Visualmente

0 MB
│
├── Abaixo da linha
│
16 MB ← Linha
│
├── Acima da linha
│
2 GB

Então nasceu a “barra”

Quando o z/OS evoluiu novamente para 64 bits, surgiu:

a barra dos 2 GB.


Acima da barra

Tudo acima de:

2 GB.


Visualmente

0 MB
│
├── Abaixo da linha
│
16 MB ← Linha
│
├── Acima da linha
│
2 GB ← Barra
│
├── Acima da barra
│

Endereçamento 64 bits

Com 64 bits, o espaço cresce absurdamente.


Quantidade teórica

2^{64}=18.446.744.073.709.551.616

Quantidade gigantesca de memória.


Resultado prático

O z/OS moderno consegue trabalhar com:

  • enormes caches;

  • gigantescos bancos de dados;

  • workloads massivos;

  • analytics;

  • Java;

  • Linux on Z.


Então resumindo

ConceitoLimite
24 bits16 MB
31 bits2 GB
64 bitsmemória gigantesca

O que é “abaixo da linha”?

Memória:

abaixo de 16 MB.

Muito usada por:

  • programas antigos;

  • áreas críticas do sistema.


O que é “acima da linha”?

Memória:

entre 16 MB e 2 GB.

Usada por:

  • aplicações modernas 31 bits;

  • CICS;

  • DB2;

  • subsistemas.


O que é “acima da barra”?

Memória:

acima de 2 GB.

Usada por:

  • Java;

  • grandes caches;

  • DB2 moderno;

  • aplicações 64 bits.


O que significa storage constraint?

Problema de falta de memória.

Muito comum:

abaixo da linha.


Por que abaixo da linha é crítico?

Porque:

  • espaço pequeno;

  • muitos componentes disputam memória.

16 MB hoje parece minúsculo.


Exemplo clássico

CICS antigos sofriam muito com:

storage below the line.


Como isso aparece no dia a dia?

Mensagens como:

  • SOS;

  • storage shortage;

  • below the line exhausted.


O que é AMODE?

Addressing Mode

Define:
como o programa trabalha com memória.


Exemplos


AMODE 24

Programa trabalha em:
24 bits.


AMODE 31

Programa usa:
31 bits.


AMODE 64

Programa moderno usa:
64 bits.


O que é RMODE?

Residency Mode

Define:
onde o programa deve residir.


Exemplo

RMODE 24

Programa precisa ficar:
abaixo da linha.


Isso ainda existe?

Muito.

Principalmente em:

  • sistemas legados;

  • assembler;

  • módulos antigos.


Curiosidades incríveis

1. Muitos sistemas críticos ainda possuem código 24 bits

Décadas depois.


2. O z/OS mantém compatibilidade histórica absurda

Programas antigos ainda funcionam.


3. “Abaixo da linha” virou expressão clássica no mainframe


4. O endereçamento 64 bits revolucionou o z/OS moderno

Especialmente DB2 e Java.


Erros comuns de iniciantes


1. Pensar que “linha” é física

Ela é apenas:

um limite lógico de memória.


2. Confundir linha e barra

Linha:
16 MB.

Barra:
2 GB.


3. Achar que 24 bits morreu

Ainda existe muito software legado.


4. Ignorar AMODE/RMODE

Isso pode causar erros graves em assembler e linkedição.


Como isso aparece no JCL e programas?

Em:

  • binder;

  • assembler;

  • parâmetros LE;

  • CICS;

  • DB2;

  • dumps;

  • performance tuning.


Por que aprender isso?

Porque isso explica:

  • arquitetura do z/OS;

  • compatibilidade histórica;

  • gestão de memória;

  • performance;

  • problemas clássicos do mainframe.


Resumo rápido

TermoSignificado
Abaixo da linha< 16 MB
Acima da linha16 MB até 2 GB
Acima da barra> 2 GB
24 bitsaté 16 MB
31 bitsaté 2 GB
64 bitsenorme espaço
AMODEmodo de endereçamento
RMODEonde o programa reside

Conclusão

Os conceitos de:

  • abaixo da linha;

  • acima da linha;

  • acima da barra;

  • endereçamento 24, 31 e 64 bits

fazem parte da evolução histórica da memória no z/OS.

Eles mostram como o mainframe IBM conseguiu evoluir durante décadas mantendo compatibilidade com aplicações antigas enquanto expandia capacidade para workloads modernos gigantescos.


domingo, 14 de janeiro de 2007

O que é DASD?

Bellacosa Mainframe o que é dasd

 

O que é DASD?

Quando alguém começa a estudar armazenamento no mainframe, rapidamente encontra a sigla:

DASD

Ela é uma das bases do ambiente z/OS.

Praticamente tudo no mainframe depende disso:

  • datasets;

  • JCL;

  • COBOL;

  • bancos de dados;

  • spool;

  • sistemas corporativos.


O que significa DASD?

DASD significa:

Direct Access Storage Device

Em português:

Dispositivo de Armazenamento de Acesso Direto


Definição simples

O DASD é o dispositivo de disco usado pelo mainframe para armazenar dados.

Ele funciona como:

o “HD corporativo” do z/OS.

Mas em escala muito maior, mais rápida e extremamente confiável.


Uma analogia fácil

Imagine:

  • um notebook possui SSD;

  • um servidor possui storage;

  • o mainframe possui DASD.

O DASD é onde ficam armazenados:

  • datasets;

  • programas;

  • bibliotecas;

  • bancos de dados;

  • arquivos batch.


O que significa “acesso direto”?

Significa que o sistema consegue acessar:

qualquer ponto do disco diretamente.

Sem precisar ler tudo em sequência.


Analogia

Imagine um livro.


Acesso sequencial

Você precisa virar página por página até encontrar algo.


Acesso direto

Você abre exatamente na página desejada.


Isso torna o DASD muito eficiente

Especialmente para:

  • grandes bancos;

  • milhões de registros;

  • sistemas financeiros.


O DASD é um HD comum?

Não.

Ele foi criado para:

  • alta performance;

  • enorme capacidade;

  • redundância;

  • ambientes críticos.


O que fica armazenado no DASD?

Praticamente tudo do z/OS.


Exemplos

  • datasets;

  • PDS;

  • PDSE;

  • VSAM;

  • bibliotecas COBOL;

  • JCL;

  • DB2;

  • logs;

  • SYSOUT;

  • arquivos batch.


Como o z/OS organiza o DASD?

O armazenamento possui vários conceitos importantes:


Volume

Cada disco possui um nome.

Exemplo:

VOL001

Dataset

Arquivo armazenado no DASD.


Catálogo

Sistema que informa:

  • onde o dataset está;

  • em qual volume;

  • atributos.


Como era o DASD antigamente?

Nos primeiros mainframes:

  • enormes discos físicos;

  • pratos magnéticos gigantes;

  • equipamentos muito pesados.

Alguns pareciam:

máquinas de lavar industriais.


Hoje tudo evoluiu

Os DASDs modernos são:

  • extremamente rápidos;

  • compactos;

  • virtualizados;

  • integrados com storages avançados.


O DASD ainda usa disco magnético?

Em muitos casos:
sim.

Mas atualmente existem:

  • SSD corporativo;

  • cache avançado;

  • virtualização;

  • storage híbrido.


Como datasets ficam no DASD?

Exemplo:

USUARIO.JCL(MYJOB)

Esse dataset ocupa espaço físico dentro de um volume DASD.


O que é cilindro e trilha?

O DASD tradicional organiza espaço em:


Track (trilha)

Menor unidade física.


Cylinder (cilindro)

Grupo de trilhas alinhadas.


Isso ainda aparece no z/OS?

Sim.

Muitos JCLs usam:

SPACE=(CYL,(1,1))

ou:

SPACE=(TRK,(10,5))

O que isso significa?


CYL

Alocação em cilindros.


TRK

Alocação em trilhas.


O que é I/O?

Input/Output.

Toda leitura ou gravação no DASD gera operações de I/O.


Por que performance do DASD é importante?

Porque bancos e sistemas financeiros processam:

  • milhões;

  • bilhões de acessos.

Performance ruim afetaria:

  • PIX;

  • cartões;

  • transações;

  • batch.


O que é cache de DASD?

Memória rápida usada para acelerar leitura e gravação.


O que é SMS?

SMS significa:

System Managed Storage

Sistema do z/OS que automatiza:

  • alocação;

  • gerenciamento;

  • políticas de armazenamento.


Hoje muitos DASDs são gerenciados automaticamente

O usuário nem sempre escolhe o volume manualmente.


O que é um storage mainframe?

É a infraestrutura que controla:

  • DASD;

  • volumes;

  • replicação;

  • backup;

  • performance.


O que é replicação?

Cópia automática de dados para:

  • redundância;

  • disaster recovery;

  • alta disponibilidade.


Curiosidades incríveis

1. Mainframes armazenam volumes gigantescos de dados

Muitos bancos possuem petabytes.


2. DASD existe há décadas

E continua evoluindo.


3. O conceito de cilindro vem dos discos físicos antigos

Mesmo hoje ainda aparece no z/OS.


4. Performance de storage é crítica no mundo financeiro

Milissegundos fazem diferença.


Erros comuns de iniciantes


1. Pensar que DASD é apenas “HD antigo”

Na verdade é storage corporativo extremamente avançado.


2. Ignorar SPACE em JCL

Isso pode causar falhas de alocação.


3. Confundir volume com dataset

Volume = disco
Dataset = arquivo


4. Achar que tudo está apenas em nuvem

Grande parte da infraestrutura financeira ainda depende de DASD físicos.


Como visualizar informações do DASD?

Via:

  • ISPF;

  • LISTDS;

  • IDCAMS;

  • SDSF;

  • ferramentas de storage.


Exemplo de LISTDS

LISTDS 'USUARIO.JCL'

Mostra:

  • volume;

  • RECFM;

  • LRECL;

  • espaço.


Como DASD aparece no dia a dia?

Em praticamente tudo:

  • COBOL;

  • JCL;

  • VSAM;

  • DB2;

  • SORT;

  • batch;

  • backups.


Por que aprender DASD?

Porque ele é:

a base física do armazenamento no z/OS.

Quem entende DASD entende:

  • datasets;

  • performance;

  • storage;

  • arquitetura do mainframe.


Resumo rápido

ConceitoSignificado
DASDDisco do mainframe
VolumeNome do disco
DatasetArquivo
TrackTrilha
CylinderGrupo de trilhas
I/OLeitura/gravação
SMSGerenciamento automático

Conclusão

O DASD é um dos componentes mais importantes do ambiente mainframe IBM Z.

Ele fornece armazenamento corporativo de alta performance para datasets, bancos de dados e aplicações críticas do z/OS.

Mesmo após décadas de evolução tecnológica, continua sendo peça essencial da infraestrutura que sustenta bancos, governos e grandes corporações no mundo inteiro.

sábado, 13 de janeiro de 2007

O que é PDS e PDS/E?

 

Bellacosa Mainframe o que é pds e pds/e

O que é PDS e PDS/E?

Quando alguém começa a estudar datasets no z/OS, rapidamente encontra dois nomes muito importantes:

PDS

e

PDSE (PDS/E)

Eles são fundamentais no universo mainframe porque armazenam:

  • JCL;

  • programas COBOL;

  • PROC;

  • scripts;

  • parâmetros;

  • bibliotecas do sistema.

Praticamente todo profissional mainframe trabalha com eles diariamente.


Primeiro: o que é um PDS?

PDS significa:

Partitioned Data Set

É um tipo especial de dataset que funciona como:

uma biblioteca com vários arquivos internos.


Analogia simples

Imagine:

uma pasta de escritório.

Dentro dela existem:

  • vários documentos;

  • organizados separadamente.

No PDS:

  • o dataset é a pasta;

  • os arquivos internos são chamados de:

membros.


Exemplo de PDS

USUARIO.JCL

Esse dataset pode conter vários membros:

USUARIO.JCL(MYJOB)
USUARIO.JCL(TESTE)
USUARIO.JCL(BACKUP)

Aqui temos:

ParteSignificado
USUARIO.JCLPDS
MYJOBmembro
TESTEmembro

Para que o PDS é usado?

Muito usado para armazenar:

  • JCL;

  • programas COBOL;

  • PROC;

  • macros;

  • scripts;

  • parâmetros.


Por que o PDS foi criado?

Imagine armazenar milhares de pequenos arquivos separados no disco.

Isso seria:

  • lento;

  • difícil de organizar;

  • ineficiente.

Então a IBM criou o conceito:

vários membros dentro de um único dataset.


Como funciona internamente?

O PDS possui:

  • área de diretório;

  • área de dados.


Diretório

Guarda informações dos membros:

  • nome;

  • localização;

  • controle.


Área de dados

Onde os membros ficam armazenados.


Problema clássico do PDS

O PDS tradicional possui limitações antigas.

Com o tempo:

  • membros apagados;

  • alterações;

  • reutilizações;

geravam:

fragmentação.


O famoso problema:

“Directory Full”

Ou:

“No Space in Directory”

Muito comum em ambientes antigos.


Então nasceu o PDSE

PDSE significa:

Partitioned Data Set Extended

Também chamado:

PDS/E


O que mudou no PDSE?

O PDSE é:

a evolução moderna do PDS.


Principais melhorias


1. Gerenciamento automático

O sistema organiza espaço automaticamente.


2. Sem compressão manual

No PDS clássico:
às vezes era necessário:

COMPRESS

No PDSE isso praticamente desaparece.


3. Melhor performance

Mais eficiente no acesso aos membros.


4. Melhor uso de espaço

Menos fragmentação.


5. Mais estabilidade

Muito mais robusto.


6. Expansão automática

O diretório cresce automaticamente.


Então o PDSE é melhor?

Na maioria dos casos:

sim.

Hoje muitos ambientes preferem:

PDSE.


Exemplo de uso

Biblioteca COBOL:

USUARIO.COBOL

Membros:

CLIENTE
CONTAS
RELATORIO

Como acessar?

Normalmente no:

ISPF 3.4


Exemplo

DSNAME LEVEL ===> USUARIO.COBOL

Como editar um membro?

Na lista:

  • usar E;

  • escolher membro.


Exemplo

E USUARIO.COBOL(PROGRAMA)

Como identificar PDS e PDSE?

No ISPF aparecem atributos.

O importante é:

DSORG


PDS tradicional

DSORG=PO

PDSE

Também aparece como:

PO-E

ou:

LIBRARY

dependendo da ferramenta.


O que significa PO?

Partitioned Organization


O que é membro?

Membro é:

um arquivo interno do PDS.


Analogia

PDS = gaveta
Membro = documento


Vantagens do PDS


Organização

Agrupa muitos arquivos relacionados.


Facilidade operacional

Muito usado por programadores.


Melhor gerenciamento

Mais eficiente que milhares de datasets separados.


Vantagens do PDSE


Mais moderno


Mais rápido


Menos manutenção


Melhor aproveitamento de espaço


Maior estabilidade


Existe desvantagem?

O PDSE consome um pouco mais de controle interno do sistema.

Mas hoje isso raramente é problema.


Curiosidades incríveis

1. PDS existe há décadas

E ainda é extremamente usado.


2. O PDSE resolveu problemas históricos do z/OS

Principalmente fragmentação.


3. Bibliotecas COBOL normalmente usam PDS ou PDSE


4. Muitos sistemas bancários possuem milhares de bibliotecas PDS/E


Erros comuns de iniciantes


1. Confundir PDS com diretório Linux

A ideia é parecida, mas a arquitetura é diferente.


2. Pensar que membro é dataset separado

Não.
Membro existe dentro do PDS.


3. Ignorar espaço de diretório no PDS clássico

Isso pode causar erros.


4. Confundir PS com PDS

PS:

  • arquivo único.

PDS:

  • biblioteca com membros.


Como criar PDS?

No ISPF:

opção 3.2

Definindo:

  • DSORG=PO;

  • espaço;

  • diretório.


Como criar PDSE?

Mesmo processo, mas selecionando:

LIBRARY

ou:

PDSE.


Onde aparecem no dia a dia?

Praticamente em tudo:

  • COBOL;

  • JCL;

  • PROC;

  • parâmetros;

  • automação;

  • sistemas do z/OS.


Por que aprender isso?

Porque PDS e PDSE são:

uma das estruturas mais importantes do mainframe.

Quem entende isso compreende:

  • organização de bibliotecas;

  • desenvolvimento COBOL;

  • estrutura do z/OS;

  • administração de datasets.


Resumo rápido

ConceitoSignificado
PDSBiblioteca com membros
PDSEEvolução moderna do PDS
MembroArquivo interno
DSORG=PODataset particionado
PO-EPDSE
PSArquivo simples

Conclusão

PDS e PDSE são tipos fundamentais de dataset usados no z/OS para organizar bibliotecas de programas, JCLs e arquivos corporativos.

O PDS foi uma das estruturas mais importantes da história do mainframe, enquanto o PDSE trouxe melhorias modernas de performance, estabilidade e gerenciamento automático.

Entender PDS e PDSE é essencial para qualquer pessoa que deseja aprender IBM Mainframe de verdade.

sexta-feira, 12 de janeiro de 2007

O que é Blockagem em Dataset QSAM?

 


O que é Blockagem em Dataset QSAM?

Quando começamos a estudar datasets no mainframe, rapidamente aparecem termos como:

  • RECFM;

  • LRECL;

  • BLKSIZE;

  • blockagem.

No começo parece algo extremamente técnico.

Mas a ideia é mais simples do que parece.

E entender blockagem é fundamental para:

  • performance;

  • uso de disco;

  • processamento batch;

  • COBOL;

  • SORT;

  • QSAM.


Primeiro: o que é QSAM?

QSAM significa:

Queued Sequential Access Method

É um método de acesso usado no z/OS para trabalhar com arquivos sequenciais.

Ele é muito utilizado em:

  • COBOL;

  • JCL;

  • relatórios batch;

  • processamento financeiro.


O que é um registro?

Antes da blockagem, precisamos entender:

registro.

Um registro representa:

uma linha de dados.

Exemplo:

JOAO      0001500
MARIA     0003200
CARLOS    0009800

Cada linha é um registro.


O problema sem blockagem

Imagine um dataset com:

  • milhões de registros;

  • cada registro com 80 bytes.

Se o disco gravasse:

  • 1 registro por vez,

o sistema faria milhões de operações de I/O.

Isso seria:

  • lento;

  • caro;

  • ineficiente.


Então nasceu a blockagem

A ideia é simples:

agrupar vários registros em um único bloco físico.


Analogia fácil

Imagine transportar livros.

Sem blockagem:

  • 1 livro por viagem.

Com blockagem:

  • vários livros dentro de uma caixa.

Resultado:

  • menos viagens;

  • mais eficiência.


O que é um bloco?

Bloco é:

um conjunto de registros gravados juntos no disco.


Exemplo simples

Imagine:

  • registro = 80 bytes

  • bloco = 800 bytes

O sistema consegue armazenar:

10 registros dentro do mesmo bloco

Porque:

10 × 80 = 800

Onde isso aparece?

Na definição do dataset:

RECFM=FB
LRECL=80
BLKSIZE=800

Entendendo os parâmetros


RECFM=FB

Formato:

Fixed Block

Registros fixos com blockagem.


LRECL=80

Cada registro possui:
80 bytes.


BLKSIZE=800

Cada bloco possui:
800 bytes.


Resultado

O sistema grava:

10 registros por bloco.


Por que isso melhora performance?

Porque o disco trabalha melhor lendo:

  • grandes blocos;
    do que:

  • registros individuais.


Benefícios da blockagem


1. Menos I/O

Reduz acessos físicos ao disco.


2. Mais velocidade

Leitura e gravação mais rápidas.


3. Melhor uso do disco

Menos desperdício.


4. Melhor performance batch

Especialmente em:

  • SORT;

  • COBOL;

  • grandes arquivos.


O que acontece sem blockagem?

Exemplo:

RECFM=F
LRECL=80

Aqui:

  • registros fixos;

  • sem blocagem.

Cada registro é gravado separadamente.


Isso é ruim?

Nem sempre.

Mas normalmente:

  • FB é mais eficiente que F.


Blockagem em VB

Também existe em datasets variáveis.

Exemplo:

RECFM=VB

Nesse caso:

  • registros possuem tamanhos diferentes;

  • mas continuam agrupados em blocos.


O que é BLKSIZE?

BLKSIZE significa:

Block Size

Define:

o tamanho físico do bloco.


Exemplo visual

Sem blockagem:

[REG]
[REG]
[REG]
[REG]

Com blockagem:

[BLOCO: REG REG REG REG]

Quem define a blockagem?

Pode ser:

  • programador;

  • JCL;

  • sistema;

  • SMS do z/OS.


O sistema pode calcular sozinho?

Sim.

Hoje muitos ambientes usam:

BLKSIZE=0

O z/OS calcula automaticamente o melhor tamanho.


Isso é muito usado atualmente

Porque:

  • reduz erros;

  • otimiza performance;

  • simplifica configuração.


Exemplo de JCL

//ARQ DD DSN=USUARIO.TESTE,
//    DISP=(NEW,CATLG),
//    RECFM=FB,
//    LRECL=80,
//    BLKSIZE=800

O que isso cria?

Dataset:

  • registros fixos;

  • 80 bytes;

  • 10 registros por bloco.


Como COBOL lê isso?

O COBOL normalmente não “vê” a blockagem diretamente.

O QSAM e o z/OS fazem isso automaticamente.


O programador trabalha com registros

O sistema operacional cuida dos blocos.


O que é blocking factor?

Também chamado:

fator de blockagem.

Indica:
quantos registros cabem no bloco.


Exemplo

LRECL = 80
BLKSIZE = 800

Fator:

800 ÷ 80 = 10

Então:

blocking factor = 10


Erros comuns de iniciantes


1. Confundir bloco com registro

Registro = linha lógica
Bloco = agrupamento físico


2. Ignorar BLKSIZE

Isso pode afetar performance.


3. Pensar que COBOL controla tudo

Quem gerencia blockagem é:

  • QSAM;

  • z/OS.


4. Definir BLKSIZE errado

Pode gerar desperdício ou erros.


Curiosidades incríveis

1. Blockagem existe desde os primeiros mainframes

Porque I/O sempre foi crítico.


2. Grandes bancos dependem fortemente disso

Performance batch seria inviável sem blockagem.


3. O conceito influenciou vários sistemas modernos

Mesmo hoje muitos bancos de dados usam ideias parecidas.


4. Um bom BLKSIZE pode melhorar muito performance

Principalmente em arquivos gigantes.


Como visualizar atributos do dataset?

No ISPF 3.4:

  • digite I;

  • veja:

    • RECFM;

    • LRECL;

    • BLKSIZE.

Ou via comando:

LISTDS 'USUARIO.ARQ'

Resumo rápido

ConceitoSignificado
RegistroLinha lógica
BlocoGrupo de registros
BlockagemAgrupar registros
BLKSIZETamanho do bloco
LRECLTamanho do registro
FBFixo com bloco
VBVariável com bloco

Conclusão

A blockagem em datasets QSAM é uma técnica usada pelo z/OS para melhorar eficiência e performance no acesso aos dados.

Em vez de gravar registros individualmente, o sistema agrupa vários registros em blocos físicos, reduzindo operações de I/O e acelerando o processamento batch.

Entender blockagem é um passo essencial para dominar:

  • datasets;

  • COBOL;

  • JCL;

  • SORT;

  • arquitetura interna do mainframe IBM Z.


quinta-feira, 11 de janeiro de 2007

Tipos de Dataset e Formatos de Dataset no Mainframe

 

Bellacosa Mainframe e os tipos e formatos de dataset em Mainframe

Tipos de Dataset e Formatos de Dataset no Mainframe

Quando alguém começa a estudar z/OS, rapidamente percebe que datasets possuem:

  • tipos;

  • formatos;

  • organizações;

  • atributos.

No começo parece complicado.

Mas entender isso é essencial para trabalhar com:

  • COBOL;

  • JCL;

  • ISPF;

  • batch;

  • armazenamento no mainframe.


O que é um Dataset?

Dataset é o nome usado no z/OS para representar:

arquivos.

Eles armazenam:

  • programas;

  • dados;

  • JCL;

  • relatórios;

  • parâmetros;

  • logs.


Diferença entre tipo e formato

Isso confunde muitos iniciantes.


Tipo de Dataset

Define:

como o dataset é organizado.

Exemplo:

  • PS;

  • PDS;

  • VSAM.


Formato de Dataset

Define:

como os registros são armazenados internamente.

Exemplo:

  • FB;

  • VB;

  • U.


Principais Tipos de Dataset


1. Sequential Dataset (PS)

Também chamado:

Physical Sequential

É o tipo mais simples.

Os dados são armazenados em sequência.


Analogia

Imagine:

uma fita de papel contínua.

Os registros ficam um após o outro.


Uso comum

  • relatórios;

  • arquivos batch;

  • entrada e saída de processamento;

  • logs.


Exemplo

USUARIO.RELATORIO

Características

  • simples;

  • rápido;

  • muito usado em batch.


2. PDS (Partitioned Data Set)

Muito importante no mundo mainframe.

Funciona como:

uma biblioteca com vários arquivos internos.


Os arquivos internos são chamados

membros


Exemplo

USUARIO.JCL(MYJOB)

Aqui:

  • dataset = USUARIO.JCL

  • membro = MYJOB


Uso comum

  • bibliotecas JCL;

  • programas COBOL;

  • PROC;

  • scripts.


Analogia

Imagine:

uma pasta com vários documentos dentro.


3. PDSE (Partitioned Data Set Extended)

Versão moderna do PDS.

Melhorias:

  • gerenciamento automático;

  • melhor performance;

  • menos desperdício;

  • mais estabilidade.


Hoje muitos ambientes preferem PDSE

Porque ele reduz problemas antigos do PDS clássico.


4. VSAM

VSAM significa:

Virtual Storage Access Method

É um dataset avançado.


Uso comum

  • sistemas bancários;

  • aplicações corporativas;

  • grandes bases de dados.


Características

  • acesso indexado;

  • alta performance;

  • grande capacidade.


Tipos VSAM


KSDS

Indexado.

Mais comum.


ESDS

Sequencial.


RRDS

Acesso relativo.


LDS

Linear.

Muito usado pelo DB2.


5. GDG

GDG significa:

Generation Data Group

Permite manter versões automáticas de datasets.


Exemplo

RELATORIO.GDG(+1)

Uso comum

  • backups;

  • histórico batch;

  • retenção de arquivos.


6. Temporary Dataset

Dataset temporário.

Existe apenas durante execução do JOB.


Exemplo

&&TEMP

Formatos de Dataset (RECFM)

Agora entra uma parte extremamente importante.

O atributo:

RECFM

Define:

Record Format

Ou seja:
como os registros são armazenados.


Principais formatos


FB — Fixed Block

Registros fixos

Todos possuem mesmo tamanho.


Exemplo

RECFM=FB
LRECL=80

Todos registros possuem:
80 bytes.


Muito usado em

  • JCL;

  • COBOL;

  • arquivos batch.


Analogia

Imagine:

folhas exatamente do mesmo tamanho.


VB — Variable Block

Registros variáveis

Cada linha pode possuir tamanho diferente.


Exemplo

RECFM=VB

Uso comum

  • relatórios;

  • textos;

  • arquivos variáveis.


Analogia

Linhas podem ser:

  • curtas;

  • médias;

  • longas.


U — Undefined

Formato indefinido.

Muito usado para:

  • programas load;

  • binários.


Exemplo

RECFM=U

F — Fixed

Registro fixo sem blocagem.


V — Variable

Registro variável sem blocagem.


O que é blocagem?

Blocos agrupam registros para:

  • melhorar performance;

  • reduzir I/O.


Outros atributos importantes


LRECL

Logical Record Length

Define tamanho lógico do registro.


Exemplo

LRECL=80

BLKSIZE

Block Size

Tamanho físico do bloco.


SPACE

Espaço alocado.


DSORG

Organização do dataset.


Exemplo completo

DSORG=PO
RECFM=FB
LRECL=80
BLKSIZE=800

O que significa?

  • PO = PDS

  • FB = registros fixos

  • 80 bytes por linha

  • bloco de 800 bytes


Como visualizar atributos?

No ISPF:

opção 3.4

Ou comando:

LISTDS 'USUARIO.JCL'

Como criar datasets?


Via ISPF 3.2

Mais comum para iniciantes.


Via JCL

Muito usado em batch.


Via TSO ALLOC

Comando interativo.


Exemplo

ALLOC DA('USUARIO.TESTE')
NEW SPACE(1,1)
RECFM(FB)
LRECL(80)

Erros comuns de iniciantes


1. Confundir PDS com PS

PDS possui membros.
PS não.


2. Ignorar RECFM

Isso pode causar ABENDs.


3. LRECL errado

Muito comum em COBOL e SORT.


4. Pensar que tudo funciona como Windows

O z/OS possui arquitetura própria.


Curiosidades incríveis

1. Muitos bancos possuem milhões de datasets

Organizados há décadas.


2. VSAM ainda é extremamente usado

Principalmente no setor financeiro.


3. O conceito de dataset é mais antigo que Linux

E continua extremamente eficiente.


4. PDS surgiu muito antes dos diretórios modernos


Como datasets aparecem no dia a dia?

Praticamente tudo usa datasets:

  • COBOL;

  • JCL;

  • DB2;

  • SORT;

  • backups;

  • spool;

  • parâmetros.


Por que aprender isso?

Porque datasets são:

a base do armazenamento no z/OS.

Quem entende datasets entende:

  • organização;

  • batch;

  • aplicações;

  • arquitetura mainframe.


Conclusão

Os tipos e formatos de dataset são um dos pilares do ambiente mainframe.

Eles definem:

  • como os dados são organizados;

  • armazenados;

  • processados;

  • acessados pelo z/OS.

Compreender PS, PDS, VSAM, RECFM e LRECL é um passo fundamental para qualquer estudante que deseja dominar o universo IBM Mainframe.


quarta-feira, 10 de janeiro de 2007

O que é Dataset?

 

Bellacosa Mainframe o que é dataset

O que é Dataset?

Quando alguém começa a estudar mainframe, uma das primeiras palavras que aparecem é:

Dataset

Ele é um dos conceitos mais importantes do z/OS.

Sem entender datasets, fica muito difícil compreender:

  • JCL;

  • COBOL;

  • ISPF;

  • processamento batch;

  • armazenamento no mainframe.


Definição simples

Dataset é o nome usado no mainframe para representar:

arquivos.

Ou seja:

um dataset é uma área onde informações são armazenadas no z/OS.

Ele pode guardar:

  • programas COBOL;

  • JCL;

  • dados bancários;

  • parâmetros;

  • relatórios;

  • logs;

  • backups.


Uma analogia fácil

Imagine um grande arquivo físico dentro de uma empresa.

Existem:

  • gavetas;

  • pastas;

  • documentos organizados.

No mainframe:

  • o disco é o armário;

  • os datasets são as pastas;

  • os membros são os documentos internos.


Por que não chamam de “arquivo”?

Porque o z/OS possui uma arquitetura diferente dos sistemas modernos.

No Windows usamos:

  • arquivos;

  • pastas;

  • diretórios.

No mainframe usamos:

  • datasets;

  • PDS;

  • volumes;

  • catálogos.

É outra lógica de organização.


Onde os datasets ficam?

Eles ficam armazenados em discos do mainframe chamados:

DASD

Significa:

Direct Access Storage Device

São dispositivos de armazenamento corporativo de alta performance.


Como é o nome de um dataset?

Datasets seguem um padrão hierárquico.

Exemplo:

USUARIO.JCL.TESTE

Entendendo o nome


USUARIO

Prefixo do dono.


JCL

Categoria ou biblioteca.


TESTE

Nome específico.


Parece um diretório?

Sim.
Visualmente lembra muito caminhos modernos.


Tipos principais de dataset


1. Sequential Dataset (PS)

O mais simples.

Armazena dados em sequência.

Exemplo:

  • relatórios;

  • arquivos batch;

  • logs.


2. PDS (Partitioned Data Set)

Muito importante.

Funciona como:

uma biblioteca com vários arquivos internos.

Esses arquivos internos são chamados:

membros.


Exemplo

USUARIO.JCL(MYJOB)

Aqui:

  • dataset = USUARIO.JCL

  • membro = MYJOB


3. PDSE

Versão moderna do PDS.

Possui:

  • melhor performance;

  • gerenciamento automático;

  • mais eficiência.


4. VSAM

Dataset avançado usado para:

  • aplicações corporativas;

  • acesso indexado;

  • grandes volumes.

Muito usado por:

  • bancos;

  • sistemas financeiros.


O que pode existir dentro de um dataset?


JCL

Jobs batch.


COBOL

Programas.


Dados

Arquivos processados.


Parâmetros

Configurações do sistema.


Relatórios

Saídas batch.


Como acessar datasets?

Normalmente pelo:

ISPF

Principalmente:

opção 3.4


Exemplo prático

Na opção 3.4:

DSNAME LEVEL ===> USUARIO.JCL

O ISPF lista os datasets encontrados.


Comandos comuns de dataset


LISTDS

Mostra informações.

LISTDS 'USUARIO.JCL'

EDIT

Edita dataset.

EDIT 'USUARIO.JCL(TESTE)'

BROWSE

Visualiza sem alterar.

BROWSE 'USUARIO.JCL(TESTE)'

DELETE

Remove dataset.

DELETE 'USUARIO.TESTE'

Como criar datasets?

Pode ser:

  • via ISPF;

  • comandos TSO;

  • JCL;

  • utilitários IDCAMS.


Exemplo simples via ISPF

Opção:

3.2

Usada para criar datasets.


O que é catalogação?

O z/OS mantém um catálogo indicando:

  • onde o dataset está;

  • em qual volume;

  • suas informações.

Isso facilita localizar datasets rapidamente.


O que é volume?

É o disco onde o dataset está armazenado.

Exemplo:

VOL001

Organização dos datasets

Datasets possuem atributos importantes:


RECFM

Formato do registro.


LRECL

Tamanho lógico do registro.


BLKSIZE

Tamanho do bloco.


SPACE

Espaço alocado.


DSORG

Tipo de organização.


Isso assusta iniciantes?

Muito.

Mas depois tudo começa a fazer sentido.


Curiosidades incríveis

1. Bancos possuem milhões de datasets

Organizando décadas de informações.


2. Muitos datasets existem há décadas

Ainda em produção.


3. O conceito de dataset é mais antigo que muitos sistemas modernos

E continua extremamente eficiente.


4. O z/OS gerencia armazenamento de forma extremamente rigorosa

Muito diferente de PCs domésticos.


O que iniciantes costumam errar?

“Dataset é igual pasta”

Nem sempre.

PDS parece uma pasta, mas dataset possui lógica própria.


“Tudo funciona como Windows”

O z/OS possui arquitetura diferente.


“Posso alterar qualquer dataset”

Muitos possuem proteção RACF.


Como datasets aparecem no dia a dia?

Usuários trabalham constantemente com:

  • bibliotecas COBOL;

  • JCL;

  • SYSOUT;

  • parâmetros;

  • arquivos batch.

Tudo usando datasets.


Por que aprender datasets?

Porque praticamente tudo no mainframe depende deles.

Datasets são:

  • base do armazenamento;

  • núcleo operacional do z/OS;

  • estrutura fundamental do ambiente.


Conclusão

Dataset é o conceito central de armazenamento no mundo mainframe.

Ele representa os arquivos utilizados pelo z/OS para guardar programas, dados, JCLs e informações corporativas críticas.

Entender datasets é um dos passos mais importantes para qualquer pessoa que deseja aprender mainframe IBM Z.

terça-feira, 9 de janeiro de 2007

50 Comandos TSO Explicados para Iniciantes

 

Bellacosa Mainframe explicando 50 comandos do tso

50 Comandos TSO Explicados para Iniciantes


Os comandos TSO são instruções utilizadas no ambiente z/OS para interagir diretamente com o sistema mainframe IBM. Eles permitem executar tarefas administrativas, acessar datasets, editar arquivos, consultar informações do sistema, submeter JOBs e navegar no ambiente operacional. O TSO, que significa Time Sharing Option, funciona como uma área interativa onde milhares de usuários podem trabalhar simultaneamente no mainframe.

Os comandos TSO normalmente são digitados em locais específicos dentro do ambiente ISPF. O mais comum é utilizar a opção 6 do menu principal do ISPF, chamada COMMAND. Nela, o usuário pode digitar comandos diretamente. Outra forma é utilizar a linha de comando presente no topo das telas ISPF, geralmente identificada como:

COMMAND ===>

Alguns comandos também podem ser executados diretamente no editor ISPF ou em telas utilitárias. Por exemplo, o comando SUBMIT é usado dentro de um JCL para enviar um JOB ao JES2.

Exemplos comuns incluem:

  • LISTDS → lista datasets;

  • SDSF → acessa spool e jobs;

  • EDIT → abre datasets para edição;

  • LOGOFF → encerra sessão.

Aprender comandos TSO é essencial porque eles representam a base da navegação e administração do ambiente mainframe z/OS.




1. LOGON

Para que serve

Faz login no z/OS.

Exemplo

LOGON USUARIO

Passo a passo

  1. Abrir emulador 3270

  2. Conectar ao host

  3. Digitar LOGON

  4. Informar usuário e senha


2. LOGOFF

Para que serve

Encerra a sessão TSO.

Exemplo

LOGOFF

Passo a passo

  1. Digitar LOGOFF

  2. Pressionar ENTER

  3. Sessão encerrada


3. HELP

Para que serve

Mostra ajuda do TSO.

Exemplo

HELP

Passo a passo

  1. Digitar HELP

  2. Pressionar ENTER

  3. Ler opções disponíveis


4. TIME

Para que serve

Mostra horário do sistema.

Exemplo

TIME

Passo a passo

  1. Digitar TIME

  2. ENTER

  3. Ver horário atual


5. LISTALC

Para que serve

Lista datasets alocados.

Exemplo

LISTALC

Passo a passo

  1. Executar LISTALC

  2. Ver datasets em uso


6. LISTCAT

Para que serve

Consulta catálogo de datasets.

Exemplo

LISTCAT ENT('USUARIO.TESTE')

Passo a passo

  1. Digitar LISTCAT

  2. Informar dataset

  3. Ver detalhes catalogados


7. LISTDS

Para que serve

Lista informações de datasets.

Exemplo

LISTDS 'USUARIO.ARQ'

Passo a passo

  1. Informar nome do dataset

  2. ENTER

  3. Consultar atributos


8. LISTDSI

Para que serve

Mostra informações detalhadas.

Exemplo

LISTDSI 'USUARIO.ARQ'

Passo a passo

  1. Digitar LISTDSI

  2. Ver tamanho e organização


9. ALLOC

Para que serve

Aloca datasets.

Exemplo

ALLOC DA('USUARIO.TESTE') NEW SPACE(1,1)

Passo a passo

  1. Informar dataset

  2. Definir espaço

  3. Criar dataset


10. FREE

Para que serve

Libera datasets alocados.

Exemplo

FREE DA('USUARIO.TESTE')

Passo a passo

  1. Digitar FREE

  2. Informar dataset

  3. ENTER


11. DELETE

Para que serve

Apaga datasets.

Exemplo

DELETE 'USUARIO.TESTE'

Passo a passo

  1. Digitar DELETE

  2. Confirmar remoção


12. RENAME

Para que serve

Renomeia datasets.

Exemplo

RENAME 'USUARIO.OLD' 'USUARIO.NEW'

Passo a passo

  1. Informar nome antigo

  2. Informar novo nome

  3. ENTER


13. PROFILE

Para que serve

Mostra perfil do usuário.

Exemplo

PROFILE

Passo a passo

  1. Digitar PROFILE

  2. Consultar parâmetros


14. STATUS

Para que serve

Mostra status da sessão.

Exemplo

STATUS

Passo a passo

  1. Executar STATUS

  2. Ver informações da sessão


15. SEND

Para que serve

Envia mensagem para usuário.

Exemplo

SEND 'OLA' USER(TESTE)

Passo a passo

  1. Informar mensagem

  2. Informar usuário

  3. ENTER


16. RECEIVE

Para que serve

Recebe datasets transmitidos.

Exemplo

RECEIVE

Passo a passo

  1. Executar RECEIVE

  2. Confirmar restauração


17. TRANSMIT

Para que serve

Transmite datasets.

Exemplo

TRANSMIT TESTE.DATA

Passo a passo

  1. Informar destino

  2. Informar dataset

  3. Enviar transmissão


18. EDIT

Para que serve

Abre editor ISPF.

Exemplo

EDIT 'USUARIO.JCL(TESTE)'

Passo a passo

  1. Informar dataset

  2. Abrir editor


19. BROWSE

Para que serve

Visualiza datasets sem editar.

Exemplo

BROWSE 'USUARIO.ARQ'

Passo a passo

  1. Digitar BROWSE

  2. Ler conteúdo


20. VIEW

Para que serve

Visualização avançada.

Exemplo

VIEW 'USUARIO.ARQ'

Passo a passo

  1. Abrir dataset

  2. Navegar no conteúdo


21. SUBMIT

Para que serve

Submete JOB.

Exemplo

SUBMIT 'USUARIO.JCL(MYJOB)'

Passo a passo

  1. Criar JCL

  2. Executar SUBMIT

  3. Ver JOBID


22. SDSF

Para que serve

Abre monitor de spool.

Exemplo

SDSF

Passo a passo

  1. Executar SDSF

  2. Consultar jobs


23. ISRDDN

Para que serve

Mostra datasets alocados.

Exemplo

ISRDDN

Passo a passo

  1. Digitar ISRDDN

  2. Ver DDNAMEs


24. ISRFIND

Para que serve

Localiza strings em datasets.

Exemplo

ISRFIND COBOL

Passo a passo

  1. Informar texto

  2. Buscar ocorrência


25. ISRJCL

Para que serve

Ajuda com JCL.

Exemplo

ISRJCL

Passo a passo

  1. Abrir utilitário

  2. Consultar exemplos


26. HLIST

Para que serve

Lista histórico.

Exemplo

HLIST

27. TERMINAL

Para que serve

Mostra informações do terminal.

Exemplo

TERMINAL

28. OUTTRAP

Para que serve

Captura saída de comandos.

Exemplo

OUTTRAP

29. EXEC

Para que serve

Executa CLIST ou REXX.

Exemplo

EXEC 'USUARIO.REXX(TESTE)'

30. REXX

Para que serve

Executa scripts REXX.

Exemplo

TSO TESTE

31. CLIST

Para que serve

Executa scripts CLIST.

Exemplo

EX TESTE

32. OCOPY

Para que serve

Copia datasets para UNIX.

Exemplo

OCOPY INDD(IN) OUTDD(OUT)

33. OLIST

Para que serve

Lista arquivos UNIX.

Exemplo

OLIST

34. OMVS

Para que serve

Acessa UNIX System Services.

Exemplo

OMVS

35. NETSTAT

Para que serve

Mostra conexões TCP/IP.

Exemplo

NETSTAT

36. PING

Para que serve

Testa conectividade.

Exemplo

PING 127.0.0.1

37. LU

Para que serve

Mostra usuários logados.

Exemplo

LU

38. WHO

Para que serve

Consulta usuários ativos.

Exemplo

WHO

39. ACCOUNT

Para que serve

Consulta informações da conta.

Exemplo

ACCOUNT

40. OUTPUT

Para que serve

Consulta saída de jobs.

Exemplo

OUTPUT

41. PREFIX

Para que serve

Define prefixo de datasets.

Exemplo

PREFIX USUARIO

42. ATTRIB

Para que serve

Altera atributos.

Exemplo

ATTRIB

43. DA

Para que serve

Lista datasets.

Exemplo

DA 'USUARIO.*'

44. DSLIST

Para que serve

Lista datasets via ISPF.

Exemplo

DSLIST

45. HEX

Para que serve

Ativa modo hexadecimal.

Exemplo

HEX ON

46. FIND

Para que serve

Busca texto.

Exemplo

FIND 'COBOL'

47. CHANGE

Para que serve

Substitui texto.

Exemplo

CHANGE 'OLD' 'NEW'

48. SORT

Para que serve

Ordena dados.

Exemplo

SORT

49. LOCATE

Para que serve

Posiciona cursor rapidamente.

Exemplo

LOCATE TESTE

50. RESET

Para que serve

Limpa filtros e comandos.

Exemplo

RESET

Passo a passo

  1. Digitar RESET

  2. ENTER

  3. Tela limpa novamente