Translate

Mostrar mensagens com a etiqueta PDSE. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta PDSE. Mostrar todas as mensagens

sexta-feira, 20 de março de 2026

🚀 Do COPY ao CORE Bancário: A Jornada Jedi de um Programa COBOL no z/OS (ou: como um .CBL vira dinheiro no mundo real)

Bellacosa Mainframe apresenta COBOL LE Enterprise


🚀 Do COPY ao CORE Bancário: A Jornada Jedi de um Programa COBOL no z/OS (ou: como um .CBL vira dinheiro no mundo real)

“Padawan, muitos escrevem código. Poucos entendem como ele realmente vive.” 💙

Se você acha que COBOL é só um DISPLAY "HELLO", prepare-se.
No mainframe, um programa não nasce pronto — ele passa por uma verdadeira linha de produção industrial de software.

Hoje vamos percorrer essa jornada completa, estilo Bellacosa Mainframe™, com:

🔥 Passo a passo real
🧠 Conceitos que diferenciam dev júnior de arquiteto
💎 Easter eggs históricos
🏦 Exemplos do mundo bancário
⚙️ Bastidores que ninguém te conta


🧙‍♂️ Capítulo 1 — O nascimento: o código fonte

Tudo começa com um membro em um PDS ou PDSE:

USER.COBOL.SOURCE(PROG1)

Exemplo simples:

IDENTIFICATION DIVISION.
PROGRAM-ID. CPRIME.

PROCEDURE DIVISION.
DISPLAY "MAY THE MAINFRAME BE WITH YOU".
STOP RUN.

💡 Curiosidade Jedi:
COBOL foi criado para ser legível por pessoas de negócio. Por isso parece “verbal”.


📚 Capítulo 2 — COPY: os pergaminhos antigos

Nenhum sistema corporativo vive sem COPYBOOKS.

COPY CLIENT-RECORD.

Esses artefatos ficam nas bibliotecas apontadas por:

//SYSLIB DD DSN=CORP.COPYLIB

💎 Easter egg:
Grandes bancos têm copybooks mais antigos que muitos desenvolvedores.


⚙️ Capítulo 3 — Compilação: o forno industrial (IGYCRCTL)

Agora entra o compilador Enterprise COBOL.

//COMPILE EXEC PGM=IGYCRCTL

📥 Entradas principais

DDFunção
SYSINCódigo fonte
SYSLIBCopybooks
SYSUTxÁrea de trabalho

📤 Saídas

DDResultado
SYSPRINTMensagens
SYSLINObject code

👉 O objeto ainda NÃO é executável.


🧠 Analogia moderna

MainframeLinux
Compilegcc -c
Objeto.o

💥 Capítulo 4 — O Binder: alquimia digital (IEWL)

Agora o objeto vira programa executável.

//LKED EXEC PGM=IEWL

📥 Entrada

SYSLIN → objeto compilado

📤 Saída

SYSLMOD → executável final

💎 Easter egg:
Antes do Binder moderno, isso se chamava “link-edit”.


📦 Program Object: o formato moderno

Hoje o resultado normalmente é um:

👉 Program Object em PDSE

Não mais um load module antigo.


🧬 Capítulo 5 — O espírito invisível: Language Environment (LE)

Aqui está o segredo que separa aprendizes de mestres.

💥 Programas COBOL não rodam sozinhos.

Eles precisam do LE.

O LE fornece:

✔️ Memória
✔️ Inicialização
✔️ Tratamento de erros
✔️ Serviços runtime
✔️ Interoperabilidade


🧠 Analogia suprema

PlataformaRuntime
JavaJVM
.NETCLR
z/OS⭐ LE

⚙️ Capítulo 6 — Opções de runtime (CEEOPTS)

Exemplo famoso:

ALL31(ON)

Permite usar memória acima da linha de 16 MB.

🧪 Override via JCL

//CEEOPTS DD *
ALL31(ON)
/*

🚫 Nunca no código COBOL.


🏦 Capítulo 7 — Onde o programa pode rodar?

Um único executável pode viver em vários mundos:

AmbienteUso típico
BatchProcessamento massivo
CICSTransações online
IMSSistemas críticos
Db2 SPLógica no banco
TSOExecução interativa
USSScripts UNIX

❌ System exit — proibido (sem LE)


🐧 Capítulo 8 — USS e o mundo moderno

Você também pode compilar no UNIX do z/OS:

cob2 -q'RENT,LIST' pgm1.cbl

💡 O mainframe também fala “Linux”.


🧩 Capítulo 9 — Compatibilidade histórica (o verdadeiro poder)

Enterprise COBOL consegue recompilar código:

✔️ VS COBOL II (anos 80)
✔️ COBOL for OS/390

Mas não diretamente:

❌ OS/VS COBOL
❌ COBOL-68 / COBOL-74

💥 Isso é o que mantém sistemas funcionando por décadas.


🧙‍♂️ Capítulo 10 — A verdadeira força do mainframe

Um programa COBOL pode:

💥 Processar milhões de transações por segundo
💥 Rodar por décadas sem reescrita
💥 Integrar com APIs modernas
💥 Conviver com código de 40 anos atrás


🏆 Pipeline final — a jornada completa

Source (.CBL)

Compile (IGYCRCTL)

Object module

Binder (IEWL)

Program Object

Execution (Batch / CICS / IMS / etc.)

💎 Easter egg final

💰 Grande parte do dinheiro do planeta passa por sistemas exatamente assim.

Cada saque, compra com cartão ou transferência:

👉 Pode estar executando código COBOL semelhante ao seu.


🧠 Conclusão 

Padawan, aprender COBOL não é aprender uma linguagem.

É entender uma arquitetura de computação empresarial completa, refinada por mais de meio século.

🚀 O código é apenas o começo.
🏗️ O processo é o verdadeiro poder.
💙 O mainframe é a fábrica invisível do mundo moderno.



sábado, 28 de dezembro de 2013

☕🔥 ABEND S806 — O “PROGRAMA FANTASMA” DO z/OS

 

Bellacosa Mainframe e o Abend S806

☕🔥 ABEND S806 — O “PROGRAMA FANTASMA” DO z/OS

Quando o Mainframe Diz:

“EU NÃO ENCONTREI O QUE VOCÊ MANDOU EXECUTAR.”

Se existe um ABEND que já fez TODO programador COBOL Junior Padawan olhar para o JCL em silêncio absoluto…

é o lendário:

🚨 S806

E normalmente ele aparece assim:

IEF450I JOBNAME STEP01 - ABEND=S806

ou:

CSV028I ABEND806-04 JOBNAME STEP01
PROGRAM PROGXYZ NOT FOUND

ou ainda:

IEC130I PROGRAM NOT FOUND

E então começa a crise existencial:

“MAS O PROGRAMA EXISTE!”
“EU COMPILEI!”
“FUNCIONAVA ONTEM!”
“O LOADLIB SUMIU?”
“O z/OS ESTÁ ME GASLIGHTEANDO?”

☕ Respira.

Porque o S806 é um dos ABENDs MAIS CLÁSSICOS da história do mainframe.

E um dos mais importantes para aprender:

JCL

LOADLIB

STEPLIB

LINKLIST

BINDER

EXEC PGM

load modules


🔥 O QUE É O S806?

O S806 é um:

🚨 PROGRAM NOT FOUND

Traduzindo:

O z/OS NÃO CONSEGUIU ENCONTRAR O PROGRAMA EXECUTÁVEL.


☕ A FILOSOFIA DO S806

Seu JCL disse:

//STEP1 EXEC PGM=COBPROG

O z/OS respondeu:

❌ “NÃO EXISTE NENHUM EXECUTÁVEL COM ESSE NOME NOS LUGARES ONDE PROCUREI.”


🔥 O QUE O z/OS FAZ QUANDO VÊ EXEC PGM=

Fluxo real:

EXEC PGM=PROG1
 ↓
Procurar módulo
 ↓
STEPLIB
 ↓
JOBLIB
 ↓
LNKLST
 ↓
SYS1.LINKLIB
 ↓
Encontrou?

Se NÃO:

💥 S806


☕ ANALOGIA BELLACOSA MAINFRAME

Imagine um aeroporto.

O sistema anuncia:

“CHAMEM O PILOTO DO VOO.”

Mas:

  • piloto não apareceu

  • nome errado

  • terminal errado

  • aeroporto errado

  • piloto nem existe

O voo nunca sai.

Isso é o:

☠️ S806


🔥 O MAIOR SEGREDO

S806 NÃO significa:

“source COBOL não existe.”

Significa:

o LOAD MODULE executável não foi encontrado.


☕ SOURCE ≠ EXECUTÁVEL

Isso traumatiza juniors.

Você pode ter:

✅ source COBOL
✅ compile OK

Mas sem:

LINK-EDIT/BINDER

não existe executável.


🔥 O MAIOR VILÃO DO S806

🚨 STEPLIB ERRADA

O rei absoluto.


☕ EXEMPLO CLÁSSICO

 //STEPLIB DD DSN=EMPRESA.TEST.LOAD,DISP=SHR

Mas o programa está em:

EMPRESA.PROD.LOAD

Resultado:

💥 S806


🔥 O ERRO MAIS HUMANO DA HISTÓRIA

//STEP1 EXEC PGM=COBPRG1

Mas o member real é:

COBPROG1

Faltou:

O

Resultado:

☠️ S806


☕ O MAINFRAME NÃO “ADIVINHA”

No z/OS:

nome precisa ser EXATO.


🔥 O S806 E O BINDER

Aqui nasce o verdadeiro conhecimento Jedi.


☕ O QUE É O BINDER?

Ferramenta que cria:

LOAD MODULES

Executáveis do z/OS.


🔥 FLUXO REAL COBOL

SOURCE COBOL
 ↓
COMPILER
 ↓
OBJETO
 ↓
BINDER/LINK-EDIT
 ↓
LOAD MODULE
 ↓
EXECUÇÃO

Se faltar binder:

💥 S806


☕ O ERRO CLÁSSICO DO PADAWAN

“Compilei com sucesso.”

Mas esqueceu:

LINK-EDIT


🔥 O S806 E O FTP ASCII

Lenda urbana real.

Load module transferido em:

ASCII

ao invés de:

BINARY

O executável vira lixo hexadecimal.

Às vezes:

  • S806

  • S0C1

  • S0C4

dependendo do dano.


☕ O S806 E O CALL

Outro clássico COBOL.

CALL 'CALCPGM'

Mas:

CALCPGM não existe na loadlib

Resultado:

💥 S806


🔥 O CALL DINÂMICO MALDITO

CALL WS-PGM

Mas:

WS-PGM = 'ABC123'

e esse módulo não existe.


☕ O S806 E O CICS

No CICS normalmente aparece como:

🚨 PGMIDERR

ou:

AEI0

ASRA

dependendo do cenário.


🔥 O S806 E O DB2

Outro clássico sombrio.

Programa depende de runtime DB2:

DSNHLI

ou módulos LE.

STEPLIB errada?

☠️ caos.


☕ COMO INVESTIGAR O S806 PASSO A PASSO


✅ PASSO 1 — IDENTIFIQUE O PROGRAMA

Mensagem:

CSV028I ABEND806-04 PROGRAM PROGXYZ NOT FOUND

Suspeito identificado.


✅ PASSO 2 — VERIFIQUE STEPLIB

Veja:

//STEPLIB DD DSN=...

Confirme:

  • dataset correto

  • DISP=SHR

  • biblioteca existe


✅ PASSO 3 — USE ISPF 3.4

Procure o member.

Existe?

PROGXYZ

✅ PASSO 4 — CONFIRA O NOME

Mainframe não perdoa:

  • typo

  • espaço

  • caractere errado


✅ PASSO 5 — VERIFIQUE O BINDER

Talvez o módulo nunca tenha sido gerado.


🔥 O SEGREDO DO ISPF 3.4

Veteranos vivem nele.

Comandos:

MEMBER

ou:

B

ajudam localizar executáveis.


☕ O S806 E O LNKLST

Se não há STEPLIB/JOBLIB:

o z/OS procura em:

LINKLIST

Bibliotecas globais do sistema.


🔥 O S806 FANTASMA

O mais traiçoeiro.

Funcionava ontem.

Hoje:

💥 S806

Porque:

  • loadlib mudou

  • promoção falhou

  • member deletado

  • IEBCOPY sobrescreveu

  • deploy incompleto


☕ O S806 E O PDSE

Hoje muitos ambientes usam:

PDSE

Mais moderno que PDS.

Mas problemas de sincronização e membros ainda acontecem.


🔥 O S806 E O JCLLIB

Às vezes o PROC aponta:

biblioteca errada

E o EXEC herda erro invisível.


☕ O DUMP DO S806

Normalmente pouco útil.

Porque o programa:

NEM CHEGOU A EXECUTAR.

O problema ocorre ANTES.


🔥 O OURO ESTÁ NAS MENSAGENS

Especialmente:

CSV028I
IEF452I
IEWxxxx

☕ COMO O VETERANO PENSA

Veterano vê:

S806

e imediatamente pergunta:

“ONDE ESTÁ A LOADLIB?”


🔥 CURIOSIDADE HISTÓRICA

O S806 vem da era:

IBM OS/360

Década de:

🏛️ 1960

Naquela época:

  • programas eram carregados fisicamente de bibliotecas em disco/tape

  • loader era parte vital do sistema

O S806 virou um dos ABENDs mais clássicos da história corporativa.


☕ EASTER EGG MAINFRAME

Veteranos brincam:

“S806 é o z/OS dizendo:

VOCÊ TEM CERTEZA QUE ESSE PROGRAMA EXISTE?”


🔥 O MAIOR ERRO DO PADAWAN

Ver:

S806

e recompilar COBOL.

Frequentemente o problema NÃO está no source.

Está em:

  • loadlib

  • binder

  • STEPLIB

  • deploy

  • member

  • ambiente


☕ COMO EVITAR S806


✅ Validar STEPLIB


✅ Confirmar LOADLIB


✅ Revisar BINDER


✅ Nunca FTP executável em ASCII


✅ Conferir nome do member


✅ Padronizar deploy


✅ Validar CALLs dinâmicos


🔥 A VERDADE FINAL

O S0C7 pune números inválidos.
O S0C4 pune memória inválida.
O S013 pune datasets incompatíveis.
O S322 pune tempo excessivo.
O S306 pune falhas de carregamento.

Mas…

☕ O S806 É O MOMENTO EM QUE O z/OS PROCURA UM PROGRAMA… E ENCONTRA APENAS O VAZIO.

terça-feira, 24 de setembro de 2013

☕🔥 ABEND S306 — O “PORTAL QUE NÃO ABRIU” DO z/OS

 

Bellacosa Mainframe abend s306

☕🔥 ABEND S306 — O “PORTAL QUE NÃO ABRIU” DO z/OS

Quando o Mainframe Diz:

“EU NÃO CONSIGO INICIAR ESSE PROGRAMA.”

Se existe um ABEND que faz o Junior Padawan olhar para o JCL como se fosse um grimório amaldiçoado…

é o lendário:

🚨 S306

E normalmente ele aparece assim:

IEF452I JOBNAME STEP1 - ABEND=S306

ou:

CSV003I REQUESTED MODULE NOT FOUND

ou ainda:

PROGRAM FETCH FAILED

E então o desespero começa:

“O programa sumiu?”
“A loadlib evaporou?”
“O COBOL compilou errado?”
“O JES2 perdeu meu módulo?”
“O STEPLIB abriu um portal para outra dimensão?”

☕ Respira.

Porque o S306 é um dos ABENDs MAIS IMPORTANTES para entender:

load modules

STEPLIB

JOBLIB

program fetch

link-edit

APF

bibliotecas z/OS


🔥 O QUE É O S306?

O S306 é um:

🚨 PROGRAM FETCH ERROR

Traduzindo:

O z/OS NÃO CONSEGUIU CARREGAR O PROGRAMA NA MEMÓRIA.


☕ A FILOSOFIA DO S306

Seu JCL disse:

//STEP1 EXEC PGM=COBPROG

O z/OS respondeu:

❌ “EU NÃO ENCONTREI OU NÃO CONSEGUI CARREGAR ESSE MÓDULO.”


🔥 O QUE É “FETCH”?

FETCH é o processo de:

localizar

carregar

preparar

o programa executável na memória.


☕ O FLUXO DA MAGIA

EXEC PGM=PROG1
 ↓
Loader/Search
 ↓
STEPLIB/JOBLIB/LNKLST
 ↓
Load Module encontrado?
 ↓
Carregar memória
 ↓
Executar

Se algo falha:

💥 S306


🔥 ANALOGIA BELLACOSA MAINFRAME

Imagine um teatro.

O diretor diz:

“TRAGAM O ATOR PRINCIPAL.”

Mas:

  • ator não existe

  • entrou pela porta errada

  • está trancado

  • veio versão incompatível

  • está corrompido

O espetáculo para.

Isso é o:

☠️ S306


☕ O MAIOR VILÃO DO S306

🚨 STEPLIB ERRADA

O campeão absoluto.


🔥 EXEMPLO CLÁSSICO

//STEPLIB DD DSN=EMPRESA.COBOL.LOAD,DISP=SHR

Mas o programa está em:

EMPRESA.TESTE.LOAD

Resultado:

☠️ S306


☕ O MAINFRAME PROCURA EM ORDEM


☕ STEPLIB

Biblioteca do STEP.


☕ JOBLIB

Biblioteca do JOB.


☕ LNKLST

Bibliotecas globais do sistema.


🔥 O SEGREDO

Se o módulo NÃO estiver em nenhum desses lugares:

💥 S306


☕ O S306 vs S806

Junior confunde MUITO.


☕ S806

Programa não encontrado.


☕ S306

Programa encontrado OU parcialmente localizado…

mas:

não conseguiu carregar/executar corretamente.


🔥 O CASO MAIS FAMOSO

LOAD MODULE CORROMPIDO


☕ COMO ISSO ACONTECE?

  • link-edit incompleto

  • PDS corrompido

  • módulo truncado

  • IEBCOPY errado

  • transferência FTP ASCII

  • member quebrado


🔥 O FTP ASCII DA MORTE

Lenda urbana real do mainframe.

Alguém transfere loadlib em:

ASCII

ao invés de:

BINARY

O executável vira lixo hexadecimal.

Resultado:

☠️ S306


☕ O S306 E O LINK-EDIT

Outro clássico.

Programa compilou.

Mas:

link-edit falhou

ou:

módulo incompleto

Resultado:

💥 S306


🔥 O S306 E O RENT/NORENT

Modo arquimago ativado.

Problemas com:

  • RENT

  • REUS

  • RMODE

  • AMODE

podem impedir carregamento correto.


☕ O S306 E O APF

Outro território sombrio.

Programas privilegiados precisam:

APF authorization

Se biblioteca APF estiver errada:

☠️ caos.


🔥 O S306 E O COBOL

Exemplo clássico:

CALL 'PGMXYZ'

Mas:

  • módulo não está na STEPLIB

  • nome errado

  • versão incorreta

Resultado:

💥 S306


☕ O CALL DINÂMICO MALDITO

Outro trauma coletivo.

CALL WS-PGM

Mas:

WS-PGM = 'PGM123'

e módulo não existe.


🔥 O S306 E O CICS

No CICS pode aparecer como:

ASRA

AEY9

PGMIDERR

dependendo do contexto.


☕ O S306 E O DB2

Outro clássico.

Programa depende de:

DSNHLI

ou módulos DB2 runtime.

Biblioteca errada?

💥 S306


🔥 COMO INVESTIGAR O S306 PASSO A PASSO


✅ PASSO 1 — IDENTIFIQUE O MÓDULO

Mensagem típica:

CSV003I REQUESTED MODULE PROG1 NOT FOUND

Agora temos o suspeito.


✅ PASSO 2 — VERIFIQUE STEPLIB/JOBLIB

Veja:

//STEPLIB DD ...

Confirme:

  • DSN correto

  • DISP correto

  • biblioteca existe


✅ PASSO 3 — USE ISPF 3.4

Procure:

member do load module

✅ PASSO 4 — VERIFIQUE O MEMBER

Existe mesmo?

PROG1

ou:

PROG01

Erro de nome é clássico.


✅ PASSO 5 — CONFIRA O LINK-EDIT

Talvez o módulo nunca tenha sido gerado.


🔥 O SEGREDO DOS LOAD MODULES

Load module NÃO é source.

É:

binário executável IBM Z.


☕ O QUE O DUMP DIZ

O dump do S306 geralmente aponta:

  • loader

  • fetch routine

  • CSV modules

  • search failure


🔥 MENSAGENS IMPORTANTES


☕ CSV003I

Loader/fetch issue.


☕ IEWxxxx

Problemas de binder/link-edit.


☕ IECxxxx

Possíveis problemas dataset.


🔥 O S306 E O BINDER

Outro mundo oculto.

O BINDER cria:

load modules executáveis

Se faltar:

  • INCLUDE

  • ENTRY

  • NAME

o módulo pode nascer defeituoso.


☕ O MAIOR ERRO DOS JUNIORS

Pensar:

“compilou = funciona.”

Não.

Compile ≠ executável válido.


🔥 O S306 FANTASMA

O mais traiçoeiro.

Programa funcionava ontem.

Hoje:

💥 S306

Porque:

  • loadlib mudou

  • versão errada entrou

  • IEBCOPY sobrescreveu

  • promoção falhou


☕ O S306 E O PDSE

Hoje muitos ambientes usam:

PDSE

Mais moderno que PDS.

Mas problemas de cache/member ainda podem gerar situações bizarras.


🔥 O S306 E O “NOT AUTHORIZED”

Às vezes o módulo existe.

Mas:

sem autorização.

Então:

  • RACF

  • APF

  • proteção de biblioteca

entram no jogo.


☕ COMO EVITAR S306


✅ Conferir STEPLIB


✅ Validar LOADLIB


✅ Confirmar member correto


✅ Nunca FTP loadlib em ASCII


✅ Revisar link-edit


✅ Padronizar promoção


✅ Verificar APF


🔥 CURIOSIDADE HISTÓRICA

Nos tempos do OS/360:

programas eram carregados diretamente de bibliotecas físicas em disco/tape.

O mecanismo de FETCH era parte crítica do sistema operacional.

S306 virou um dos erros clássicos da era dos load modules.


☕ EASTER EGG MAINFRAME

Veteranos brincam:

“S306 é o mainframe dizendo:

EU SEI QUE VOCÊ JURA QUE O PROGRAMA EXISTE… MAS EU NÃO ACREDITO.”


🔥 O MAIOR ENSINAMENTO DO S306

Ele ensina algo profundo:

no z/OS, EXECUTAR um programa é um ritual complexo.

Não basta existir source.

É preciso:

  • compilar

  • linkar

  • catalogar

  • localizar

  • autorizar

  • carregar


☕ A VERDADE FINAL

O S0C7 pune dados inválidos.
O S0C4 pune memória inválida.
O S013 pune datasets incompatíveis.
O S322 pune tempo excessivo.

Mas…

☕ O S306 PUNE PROGRAMAS QUE NÃO CONSEGUIRAM ATRAVESSAR O PORTAL DE LOAD DO z/OS.


segunda-feira, 26 de março de 2007

O que é um Dataset no Mainframe?

 

Bellacosa Mainframe o que é um dataset

O que é Dataset no Mainframe?

No ambiente mainframe IBM Z, um dos conceitos mais importantes é:

Dataset.

Praticamente tudo no z/OS gira em torno deles:

  • programas;

  • JCL;

  • arquivos COBOL;

  • relatórios;

  • bibliotecas;

  • cargas batch;

  • bancos VSAM.


Definição simples

Dataset é:

um conjunto organizado de dados armazenado no disco do mainframe.

É equivalente a:

  • arquivos no Windows;

  • arquivos Linux;

  • documentos digitais.

Mas no mainframe os datasets possuem:

muito mais controle e estrutura.


Analogia simples


Windows

C:\TEMP\CLIENTES.TXT

Mainframe

EMPRESA.PROD.CLIENTES

Dataset = arquivo do mainframe


Onde datasets ficam?

Normalmente em:

DASD.


O que é DASD?

Direct Access Storage Device

Disco do mainframe.


Tipos mais comuns de dataset


Sequential Dataset (PS)

Arquivo sequencial.


PDS

Partitioned Dataset.

Biblioteca com membros.


PDSE

Versão moderna do PDS.


VSAM

Dataset avançado indexado.


GDG

Geração de datasets.


Dataset sequencial (PS)

Muito usado em:

  • COBOL batch;

  • relatórios;

  • arquivos entrada;

  • saída batch.


Exemplo

BANCO.CLIENTES.ARQ

Como funciona?

Os registros são lidos:

em sequência.


Fluxo

REG1
 ↓
REG2
 ↓
REG3

Muito usado com COBOL READ


O que é PDS?

Partitioned Dataset

Dataset dividido em:

membros.


Analogia

Como uma pasta contendo:

  • vários arquivos.


Muito usado para:

  • JCL;

  • PROC;

  • COBOL source;

  • CLIST;

  • REXX.


Exemplo

USER.JCLLIB

Membros:

TESTE
COBOL
BACKUP

O que é PDSE?

Versão moderna do:

PDS.


Vantagens do PDSE

  • menos fragmentação;

  • gerenciamento automático;

  • mais eficiente;

  • mais moderno.


O que é VSAM?

Dataset mais sofisticado.

Pode possuir:

  • índice;

  • acesso direto;

  • chave.


Muito usado em:

  • bancos;

  • sistemas online;

  • CICS.


O que é GDG?

Generation Data Group

Controle de versões de datasets.


Exemplo

RELATORIO(+1)

Como datasets são identificados?

Por:

DSN.


DSN = Dataset Name


Exemplo

EMPRESA.FINANCEIRO.CLIENTES

Regras comuns

  • separados por ponto;

  • até 44 caracteres;

  • níveis hierárquicos.


Estrutura visual

EMPRESA
   ↓
FINANCEIRO
   ↓
CLIENTES

Como datasets aparecem no JCL?

Via:

DD statement.


Exemplo

//CLIENTE DD DSN=EMPRESA.CLIENTES,
//            DISP=SHR

Explicando

ElementoFunção
DDDefine dataset
DSNNome dataset
DISPTipo acesso

DISP mais comuns

DISPSignificado
SHRCompartilhado
OLDExclusivo
NEWNovo dataset
MODAcrescentar dados

Como COBOL usa dataset?

Através de:

  • SELECT;

  • ASSIGN;

  • READ;

  • WRITE.


Exemplo COBOL

SELECT ARQCLI
ASSIGN TO CLIENTE.

Ligação COBOL ↔ JCL

COBOL ASSIGN
      ↓
DDNAME JCL
      ↓
Dataset real

O que é layout do dataset?

Estrutura do registro.


Exemplo

12345JOAO SILVA          0001500

Layout COBOL

05 ID      PIC 9(5).
05 NOME    PIC X(20).
05 SALDO   PIC 9(7).

Dataset pode conter:

  • texto;

  • números;

  • binários;

  • packed decimal;

  • JCL;

  • programas.


Dataset no SDSF/ISPF

Muito acessado usando:

  • 3.4 ISPF;

  • SDSF;

  • utilities.


Comandos famosos

LISTCAT

ALLOC

IEBGENER

O que é catalog?

Catálogo do z/OS.

Guarda:

  • localização;

  • volume;

  • informações dataset.


O que é volume?

Disco físico/lógico onde dataset está.


Dataset temporário

Criado temporariamente no JOB.


Exemplo

//TEMP DD DSN=&&TEMP

Dataset permanente

Fica armazenado após execução.


Dataset e batch

Praticamente todo batch:

  • lê datasets;

  • processa;

  • grava novos datasets.


Fluxo batch clássico

INPUT DATASET
      ↓
COBOL PROCESSA
      ↓
OUTPUT DATASET

Curiosidades incríveis

1. Mainframes armazenam bilhões de datasets


2. PDS foi uma revolução para bibliotecas JCL/COBOL


3. VSAM ainda é extremamente usado em bancos


4. Muitos datasets existem há décadas em produção


Erros comuns de iniciantes


1. Confundir PDS com dataset sequencial


2. DDNAME diferente do ASSIGN


3. DISP incorreto


4. Layout incompatível


5. Não entender organização do dataset


Dicas importantes

Entenda PS vs PDS vs VSAM


Sempre valide DDNAME


Aprenda DISP corretamente


Conheça layouts COBOL


Resumo rápido

TipoFunção
PSSequencial
PDSBiblioteca
PDSEBiblioteca moderna
VSAMIndexado
GDGVersionamento
DSNNome dataset
DDAssociação JCL

Conclusão

Dataset é a estrutura fundamental de armazenamento no ambiente mainframe IBM Z.

Eles armazenam programas, arquivos batch, bibliotecas, dados corporativos e informações críticas, sendo essenciais para COBOL, JCL, CICS e processamento no z/OS.

sexta-feira, 23 de março de 2007

O que é XMIT em Mainframe?

 

Bellacosa Mainframe explica o XMIT

O que é XMIT em Mainframe?

O comando XMIT (Transmit) é um utilitário do TSO/E utilizado para empacotar e transmitir datasets entre usuários, sistemas z/OS ou ambientes Mainframe.

Ele funciona como uma espécie de:

ZIP do Mainframe
+
Envio de Arquivos

O resultado é um arquivo especial conhecido como:

XMIT File
ou
Transmitted Dataset

Muito utilizado para:

✅ Compartilhar JCLs

✅ Enviar fontes COBOL

✅ Transferir PDSs completos

✅ Distribuir ferramentas

✅ Migrar objetos entre ambientes


Como Funciona?

Imagine que você possui uma biblioteca:

USER.COBOL.SOURCE

Com dezenas de programas COBOL.

O XMIT transforma tudo em um único arquivo:

USER.COBOL.XMIT

que pode ser enviado para outro usuário.


Fluxo Simplificado

PDS
 ↓
XMIT
 ↓
Arquivo XMIT
 ↓
FTP / E-mail / Connect:Direct
 ↓
RECEIVE
 ↓
PDS Restaurada

Comando Básico XMIT

No TSO:

XMIT USERID -
DSNAME('USER.COBOL.SOURCE')

Onde:

USERID = Destinatário

DSNAME = Dataset enviado

Exemplo 1 – Enviar um PDS

Suponha:

USER.JCL

contendo:

JOB1
JOB2
JOB3

Execute:

XMIT BELLACOSA -
DSNAME('USER.JCL')

Resultado:

Arquivo Transmitido

na fila do usuário destino.


Exemplo 2 – Criar Arquivo XMIT

Muito comum para download.

XMIT BELLACOSA -
DSNAME('USER.JCL') -
OUTDSN('USER.JCL.XMIT')

Resultado:

USER.JCL.XMIT

Agora você pode:

FTP
IND$FILE
Download
Connect:Direct

Estrutura

Antes:

USER.JCL
   ├── JOB001
   ├── JOB002
   └── JOB003

Depois:

USER.JCL.XMIT

Como Receber?

Utilizando RECEIVE.


Comando RECEIVE

RECEIVE INDSN('USER.JCL.XMIT')

Sistema pergunta:

Restore dataset?

Resposta:

YES

Dataset restaurado.


Exemplo Completo

Passo 1

Criar arquivo transmitido.

XMIT BELLACOSA -
DSNAME('USER.COBOL.SOURCE') -
OUTDSN('USER.COBOL.XMIT')

Passo 2

Transferir.

FTP
IND$FILE
SFTP
Connect:Direct

Passo 3

Receber.

RECEIVE INDSN('USER.COBOL.XMIT')

Passo 4

Confirmar restauração.

Restore?
YES

Passo 5

Dataset recriado.

USER.COBOL.SOURCE

Enviando PDS Completa

XMIT preserva:

✅ Membros

✅ Estatísticas

✅ Estrutura

✅ Atributos


Exemplo:

USER.COBOL

contendo:

PROG001
PROG002
PROG003

Após RECEIVE:

PROG001
PROG002
PROG003

continuam intactos.


XMIT via Batch

Também pode ser executado por JCL.


Exemplo:

//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSTSIN  DD *
 XMIT USERID
  DSNAME('USER.JCL')
/*

RECEIVE via Batch

//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
 RECEIVE INDSN('USER.JCL.XMIT')
/*

O que Pode Ser Transmitido?

PDS

USER.JCL

PDS/E

USER.COBOL

Sequential

USER.ARQUIVO

Load Library

USER.LOADLIB

O que NÃO É Recomendado?

Arquivos muito grandes.

Exemplo:

DB2 Tablespace
VSAM Gigantesco

Normalmente usa-se:

DFDSS
ADRDSSU
FTP

XMIT e FTP

Fluxo muito comum:

Mainframe A
      ↓
XMIT
      ↓
Arquivo .XMIT
      ↓
FTP
      ↓
Mainframe B
      ↓
RECEIVE

XMIT e IND$FILE

Muito usado para baixar exemplos da internet.


Passo típico:

Site Mainframe
      ↓
Arquivo.XMIT
      ↓
Download PC
      ↓
Upload Mainframe
      ↓
RECEIVE

Erros Comuns

Dataset Não Existe

DATA SET NOT FOUND

Espaço Insuficiente

INSUFFICIENT SPACE

RECEIVE em Dataset Inválido

INVALID TRANSMISSION DATASET

Vantagens

✅ Fácil utilização

✅ Preserva atributos

✅ Mantém membros

✅ Funciona em qualquer z/OS

✅ Muito usado na comunidade Mainframe


Curiosidade

Durante décadas, a comunidade Mainframe distribuiu ferramentas, utilitários, macros, exits e exemplos COBOL através de arquivos .XMIT. Muitos pacotes clássicos disponíveis em fóruns, grupos SHARE e CBT Tape eram distribuídos exatamente nesse formato.


Resumo Rápido

ComandoFunção
XMITTransmitir dataset
RECEIVERestaurar dataset
OUTDSNCriar arquivo XMIT
DSNAMEDataset origem
IKJEFT01Executar via Batch
PDS/PDSETotalmente suportados

Exemplo Clássico

XMIT BELLACOSA -
DSNAME('USER.COBOL.SOURCE') -
OUTDSN('USER.COBOL.XMIT')

Depois:

RECEIVE INDSN('USER.COBOL.XMIT')

Resultado:

PDS original restaurada
com todos os membros.

Essa é a forma mais tradicional de empacotar e transportar bibliotecas COBOL, JCL, PROC e utilitários entre ambientes Mainframe z/OS.


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.

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.