Translate

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.

domingo, 25 de março de 2007

O que é DL/I em IMS?

 

Bellacosa Mainframe analisando o DL/I em IMS

O que é DL/I em IMS?

O DL/I (Data Language/I) é a linguagem de acesso a dados e transações utilizada pelo IMS (Information Management System) da IBM.

Ele funciona como uma interface entre os programas (COBOL, PL/I, Assembler) e os bancos de dados hierárquicos do IMS.

De forma simples:

Programa COBOL
       ↓
      DL/I
       ↓
Banco IMS

O que Significa DL/I?

DL/I
Data Language / Interface

É a API original criada pela IBM para acessar bancos IMS.


Por que o DL/I Foi Criado?

Na década de 1960, não existia SQL.

O IMS armazenava dados em estruturas hierárquicas.

Para acessar esses dados era necessário um mecanismo específico.

A IBM criou então:

DL/I

DL/I é o SQL do IMS?

De certa forma, sim.

Compare:

DB2

SELECT *
FROM CLIENTE
WHERE CPF = '12345678900'

IMS DL/I

GU CLIENTE

seguido da navegação hierárquica.


Estrutura Hierárquica do IMS

Exemplo:

CLIENTE
   │
   ├── CONTA
   │      │
   │      └── MOVIMENTO
   │
   └── CARTAO

Como o DL/I Navega?

O DL/I percorre a hierarquia.

CLIENTE
   ↓
CONTA
   ↓
MOVIMENTO

Tipos de Chamadas DL/I

O DL/I trabalha através de comandos conhecidos como:

CALL DL/I

Exemplo COBOL:

CALL 'CBLTDLI'
     USING GU
           PCB-MASK
           AREA-CLIENTE
           SSA-CLIENTE.

Principais Comandos DL/I

GU

Get Unique

Busca um registro específico.


Exemplo:

GU CLIENTE

Resultado:

CLIENTE 12345

GN

Get Next

Busca o próximo segmento.


Exemplo:

CLIENTE 1
CLIENTE 2
CLIENTE 3

Fluxo:

GN
↓
Próximo registro

GNP

Get Next Within Parent

Busca o próximo filho.


Exemplo:

CLIENTE
   │
   ├── CONTA1
   ├── CONTA2
   └── CONTA3

Com:

GNP

navega entre as contas.


GHU

Get Hold Unique

Lê e bloqueia registro.


Utilizado antes de atualização.


GHN

Get Hold Next

Lê próximo registro com bloqueio.


ISRT

Insert

Insere novo segmento.


Exemplo:

Novo Cliente

COBOL:

CALL 'CBLTDLI'
     USING ISRT
           PCB-MASK
           AREA-CLIENTE.

REPL

Replace

Atualiza registro existente.


Fluxo:

GHU
 ↓
REPL

DLET

Delete

Remove segmento.


Fluxo:

GHU
 ↓
DLET

Exemplo Completo

Banco IMS:

CLIENTE
    ↓
CONTA

Passo 1

Buscar cliente.

GU

Passo 2

Alterar dados.

GHU

Passo 3

Atualizar.

REPL

SSA (Segment Search Argument)

Equivalente ao WHERE do SQL.


SQL:

WHERE CPF='123'

DL/I:

CLIENTE(CPF=123)

Exemplo

01 SSA-CLIENTE.
   05 FILLER PIC X(8)
      VALUE 'CLIENTE('.

PCB

Program Communication Block

Define o acesso ao banco.


Exemplo:

PCB CLIENTE

Contém:

  • Status

  • Banco

  • Permissões


Status Codes

Após cada chamada DL/I.


Espaços

'  '

Sucesso.


GE

GE

Registro não encontrado.


GB

GB

Fim de banco.


II

II

Inserção inválida.


Exemplo de Leitura Sequencial

GU
 ↓
GN
 ↓
GN
 ↓
GN

Resultado:

CLIENTE1
CLIENTE2
CLIENTE3
CLIENTE4

Exemplo COBOL

CALL 'CBLTDLI'
     USING GU
           PCB-CLIENTE
           REG-CLIENTE
           SSA-CLIENTE.

Verificando retorno:

IF PCB-STATUS = '  '
   DISPLAY 'ENCONTRADO'
END-IF.

DL/I em Ambiente Online

Muito comum em:

CICS
IMS TM

Fluxo:

Terminal
    ↓
IMS TM
    ↓
COBOL
    ↓
DL/I
    ↓
IMS DB

DL/I em Batch

Também muito utilizado.

JOB
 ↓
COBOL
 ↓
DL/I
 ↓
IMS DB

Comparação SQL x DL/I

SQL (DB2)DL/I (IMS)
SELECTGU/GN
INSERTISRT
UPDATEREPL
DELETEDLET
WHERESSA
CursorGN
LockGHU

Vantagens do DL/I

✅ Extremamente rápido

✅ Baixo consumo de CPU

✅ Excelente para grandes volumes

✅ Muito usado em bancos

✅ Altamente confiável


Curiosidades

1. O DL/I surgiu antes do SQL

2. Foi criado para o Projeto Apollo da NASA

3. Ainda processa bilhões de transações diariamente

4. Continua amplamente utilizado em bancos e seguradoras

5. É uma das APIs de banco de dados mais antigas ainda em produção


Resumo Rápido

ComandoFunção
GUGet Unique
GNGet Next
GNPGet Next Within Parent
GHUGet Hold Unique
GHNGet Hold Next
ISRTInsert
REPLReplace
DLETDelete
SSACritério de busca
PCBControle de acesso

Conclusão

O DL/I (Data Language/I) é a interface de acesso ao banco de dados IMS. Ele permite que programas COBOL, PL/I e Assembler leiam, insiram, atualizem e removam segmentos em bancos hierárquicos IMS por meio de comandos como GU, GN, ISRT, REPL e DLET. Embora seja anterior ao SQL, continua sendo uma das tecnologias mais importantes do universo Mainframe, sustentando aplicações críticas em bancos, governos, seguradoras e grandes corporações ao redor do mundo.


sábado, 24 de março de 2007

Como Funciona o FTP no Ambiente Mainframe (Modo Batch e Modo Online)

 

Bellacosa Mainframe tranferindo arquivos com FTP

Como Funciona o FTP no Ambiente Mainframe (Modo Batch e Modo Online)

O FTP (File Transfer Protocol) é uma das formas mais tradicionais de transferir arquivos entre Mainframes, servidores Linux, Windows, Unix e plataformas Cloud.

No z/OS, o FTP pode ser executado de duas formas:

Modo Online (TSO)

Modo Batch (JCL)


O que é FTP?

FTP significa:

File Transfer Protocol

É um protocolo utilizado para:

  • Enviar arquivos

  • Receber arquivos

  • Trocar datasets

  • Integrar sistemas


Arquitetura Básica

Mainframe
     ↓
FTP
     ↓
Servidor Linux

ou

Mainframe A
      ↓
FTP
      ↓
Mainframe B

Modos de Transferência

ASCII

Converte caracteres.

Utilizado para:

JCL
COBOL
TXT
PROC

BINARY

Não converte conteúdo.

Utilizado para:

LOADLIB
XMIT
ZIP
PDF
Executáveis

FTP Online (TSO)

Executado diretamente no terminal TSO.


Passo 1 – Entrar no FTP

No prompt TSO:

FTP 192.168.1.100

ou

FTP servidor.empresa.com

Passo 2 – Informar Usuário

Name:

Digite:

USER01

Passo 3 – Informar Senha

Password:

Digite:

*******

Conexão Estabelecida

Connected to server.

Comandos Básicos


Listar Diretório

LS

ou

DIR

Mudar Diretório

CD /home/arquivos

Ver Diretório Atual

PWD

Enviando Arquivos

Exemplo

Dataset:

USER.CLIENTES

Comando:

PUT 'USER.CLIENTES' clientes.txt

Fluxo:

Dataset Mainframe
      ↓
PUT
      ↓
Arquivo Linux

Recebendo Arquivos

GET clientes.txt 'USER.CLIENTES'

Fluxo:

Linux
 ↓
GET
 ↓
Dataset z/OS

Definindo Modo ASCII

ASCII

Definindo Modo BINARY

BINARY

Exemplo Completo Online

FTP servidor.empresa.com

USER user01
PASS senha

ASCII

PUT 'USER.COBOL.SOURCE(MEUCOBOL)' programa.cbl

QUIT

Resultado:

programa.cbl

enviado para o servidor.


FTP Batch (JCL)

Muito utilizado em produção.


Vantagens

✅ Automação

✅ Execução noturna

✅ Integração Batch

✅ Sem intervenção humana


Estrutura Básica

//FTPJOB JOB ...
//STEP01 EXEC PGM=FTP
//SYSPRINT DD SYSOUT=*
//INPUT DD *
...
/*

Exemplo 1 – Enviar Arquivo

//FTPJOB JOB CLASS=A,MSGCLASS=X

//FTPSTEP EXEC PGM=FTP
//SYSPRINT DD SYSOUT=*
//OUTPUT   DD SYSOUT=*
//INPUT DD *

192.168.1.100

USER01
SENHA

ASCII

PUT 'USER.CLIENTES' clientes.txt

QUIT

/*

Fluxo

JCL
 ↓
FTP
 ↓
Servidor
 ↓
clientes.txt

Exemplo 2 – Receber Arquivo

//FTPJOB JOB CLASS=A

//FTPSTEP EXEC PGM=FTP
//SYSPRINT DD SYSOUT=*
//INPUT DD *

192.168.1.100

USER01
SENHA

ASCII

GET clientes.txt 'USER.CLIENTES'

QUIT

/*

Exemplo 3 – Transferindo XMIT

Arquivo:

USER.COBOL.XMIT

Sempre usar:

BINARY

JCL:

//FTPSTEP EXEC PGM=FTP
//INPUT DD *

192.168.1.100

USER01
SENHA

BINARY

PUT 'USER.COBOL.XMIT' COBOL.XMIT

QUIT

/*

Recebendo Arquivo XMIT

GET COBOL.XMIT 'USER.COBOL.XMIT'

Depois:

RECEIVE INDSN('USER.COBOL.XMIT')

FTP Entre Mainframes

Muito comum.


Mainframe A:

BANCO A

PUT 'PROD.CLIENTES'

BANCO B

Criando Dataset Remoto

Muitos servidores FTP do z/OS aceitam:

SITE

Exemplo:

SITE RECFM(F B) LRECL(80) BLKSIZE(8000)

Depois:

PUT CLIENTES.TXT 'USER.CLIENTES'

SITE Command

Muito importante.

Permite definir:

  • LRECL

  • BLKSIZE

  • RECFM

  • SPACE


Exemplo

SITE

RECFM(FB)
LRECL(80)
CYLINDERS
PRIMARY=5
SECONDARY=2

FTP Seguro

Atualmente utiliza-se:

FTPS

FTP com TLS.


SFTP

Via SSH.


Fluxo:

Mainframe
 ↓
SFTP
 ↓
Linux

Exemplos de Uso Real


Banco

PIX
 ↓
FTP
 ↓
Arquivo BACEN

Seguradora

Batch Noturno
 ↓
FTP
 ↓
Parceiro

Governo

Arrecadação
 ↓
FTP
 ↓
Receita

Erros Mais Comuns

Login Inválido

530 Login Incorrect

Dataset Não Encontrado

550 File Not Found

Permissão Negada

550 Access Denied

ASCII x BINARY

Erro clássico.

Enviar XMIT em ASCII:

Arquivo Corrompido

Correto:

BINARY

Boas Práticas

✅ XMIT → BINARY

✅ LOADLIB → BINARY

✅ Texto COBOL → ASCII

✅ Usar FTPS/SFTP

✅ Automatizar via JCL

✅ Validar retorno FTP


Resumo Rápido

ComandoFunção
FTP hostConectar
PUTEnviar
GETReceber
ASCIIModo texto
BINARYModo binário
DIRListar
CDTrocar diretório
QUITEncerrar
SITEDefinir atributos
RECEIVERestaurar XMIT

Exemplo Clássico de Produção

JOB Batch
      ↓
FTP
      ↓
Arquivo Remessa
      ↓
Banco Parceiro
      ↓
Processamento
      ↓
Arquivo Retorno
      ↓
FTP GET
      ↓
Mainframe

Esse é um dos cenários mais comuns em bancos, seguradoras, telecomunicações e órgãos governamentais que utilizam Mainframe para integração de arquivos em larga escala.


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.


quinta-feira, 22 de março de 2007

O que é DSN em JCL?

 

Bellacosa Mainframe explicando dsn em jcl

O que é DSN em JCL?

No ambiente Mainframe, DSN significa:

Data Set Name

Ou seja:

Nome de um Dataset

O parâmetro DSN= é um dos mais utilizados em JCL e serve para informar qual arquivo (dataset) será utilizado por um programa, utility ou procedimento.


Definição Simples

Pense no DSN como o caminho de um arquivo no Windows.

Windows:

C:\ARQUIVOS\CLIENTES.TXT

Mainframe:

USER.PROJETO.CLIENTES

Esse nome é o DSN.


Exemplo Básico

//ARQENT DD DSN=USER.PROJETO.CLIENTES,
//       DISP=SHR

Onde:

DSN=USER.PROJETO.CLIENTES

é o dataset utilizado.


Significado da Sigla

SiglaSignificado
DSData Set
NName
DSNData Set Name

Estrutura de um DSN

Um dataset é composto por qualificadores.

Exemplo:

EMPRESA.FINANCEIRO.CLIENTES

Cada parte possui significado.

EMPRESA
   ↓
FINANCEIRO
   ↓
CLIENTES

Exemplo Corporativo

BANCO.PRODUCAO.COBOL
BANCO.TESTE.COBOL
BANCO.CLIENTES.VSAM
BANCO.JCL.PROC

Uso em DD Statements

O uso mais comum.

//ENTRADA DD DSN=USER.ARQ.ENTRADA,
//            DISP=SHR

Dataset Sequencial

//SAIDA DD DSN=USER.ARQ.SAIDA,
//          DISP=OLD

Dataset VSAM

//CLIENTE DD DSN=BANCO.CLIENTE.KSDS,
//            DISP=SHR

Dataset GDG

//RELAT DD DSN=USER.RELATORIO.GDG(+1),
//          DISP=(NEW,CATLG)

Dataset Temporário

//SORTWK DD DSN=&&TEMP,
//           DISP=(NEW,PASS)

O dataset existe apenas durante o Job.


DSN e DISP

Normalmente aparecem juntos.

//ARQ DD DSN=USER.CLIENTES,
//        DISP=SHR

Onde:

DSN = Nome do Dataset

DISP = Como será utilizado

DSN em Criação de Arquivos

//SAIDA DD DSN=USER.NOVO.ARQUIVO,
//          DISP=(NEW,CATLG,DELETE),

O dataset será criado.


DSN em SYSUT1 e SYSUT2

Muito comum em utilities.

//SYSUT1 DD DSN=USER.ARQ.ORIGEM,
//            DISP=SHR
//SYSUT2 DD DSN=USER.ARQ.DESTINO,
//            DISP=(NEW,CATLG)

DSN em IDCAMS

//ARQVSAM DD DSN=EMPRESA.CLIENTE.KSDS

DSN em SORT

//SORTIN DD DSN=USER.CLIENTES,
//           DISP=SHR

//SORTOUT DD DSN=USER.CLIENTES.ORD,
//            DISP=(NEW,CATLG)

DSN e Catálogo

O catálogo do z/OS mantém informações sobre o dataset.

Quando informamos:

DSN=USER.CLIENTES

o sistema consulta o catálogo para localizar o arquivo.


Regras para Nomes

Um DSN:

✅ Pode ter até 44 caracteres

✅ Pode possuir vários qualificadores

✅ Usa ponto (.) como separador


Exemplo:

EMPRESA.FINANCEIRO.ARQUIVOS.CLIENTES

Qualificadores

Cada qualificador pode ter:

1 a 8 caracteres

Exemplo:

EMPRESA
FINANCE
CLIENTES

Caracteres Permitidos

Normalmente:

A-Z
0-9
@
#
$

Exemplo Real

//STEP01 EXEC PGM=COBOLPGM

//ENTRADA DD DSN=BANCO.PROD.CLIENTES,
 //          DISP=SHR

//SAIDA DD DSN=BANCO.PROD.RELATORIO,
 //         DISP=(NEW,CATLG,DELETE)

Erros Comuns

Dataset Não Existe

IEC141I
DATA SET NOT FOUND

Nome Incorreto

JCL ERROR

Dataset Em Uso

DATA SET IN USE

Boas Práticas

✅ Utilizar nomenclatura padronizada

✅ Separar Produção e Teste

✅ Usar qualificadores significativos

✅ Evitar nomes genéricos


Curiosidade

O conceito de DSN existe desde os primeiros sistemas OS/360 da IBM nos anos 1960. Mesmo após décadas de evolução tecnológica, ele continua sendo uma das estruturas fundamentais do z/OS, organizando bilhões de datasets utilizados diariamente por bancos, seguradoras e governos.


Resumo Rápido

ComandoFunção
DSN=USER.ARQDataset existente
DSN=ARQ(+1)Nova geração GDG
DSN=&&TEMPDataset temporário
DSN=ARQ.VSAMArquivo VSAM
DSN=ARQ.SEQArquivo sequencial

Conclusão

O DSN (Data Set Name) é o nome lógico de um dataset no Mainframe. Utilizado principalmente em instruções DD do JCL, ele identifica arquivos sequenciais, VSAM, GDGs, bibliotecas, datasets temporários e diversos outros recursos do z/OS. Dominar o uso de DSN é um dos primeiros passos para compreender JCL, Batch e administração de arquivos em ambientes Mainframe.


quarta-feira, 21 de março de 2007

O que é a Norma ISO 1989?

 

Bellacosa Mainframe e a norma iso 1989 a certidao de nascimento do cobol

O que é a Norma ISO 1989?

A ISO 1989 é a norma internacional que define oficialmente a linguagem COBOL (Common Business-Oriented Language).

Ela estabelece as regras, sintaxe, recursos e padrões que os compiladores COBOL devem seguir para garantir compatibilidade e portabilidade entre diferentes fabricantes e plataformas.

Em resumo:

ISO 1989 = Padrão Oficial do COBOL

O que é ISO?

ISO significa:

International Organization for Standardization

É a organização responsável pela criação de padrões internacionais utilizados em praticamente todos os setores da tecnologia e da indústria.


Objetivo da ISO 1989

O principal objetivo é garantir que um programa COBOL escrito em um ambiente possa ser compreendido e executado em outros ambientes compatíveis.

Exemplo:

IBM COBOL
     ↓
COBOL Padrão ISO
     ↓
Micro Focus COBOL

História da Norma

O COBOL nasceu em:

1959

através do comitê CODASYL.

Posteriormente surgiu a necessidade de padronização internacional.


Evolução da ISO 1989

ISO 1989:1978

Primeira padronização internacional.


ISO 1989:1985

Conhecida como:

COBOL-85

Foi a versão mais popular da história.

Introduziu:

  • END-IF

  • Escopo explícito

  • Melhor legibilidade


Exemplo:

IF SALDO > 0

   DISPLAY 'OK'

END-IF

ISO 1989:2002

Grande modernização da linguagem.

Introduziu:

  • Programação Orientada a Objetos

  • XML

  • Tipos de dados modernos

  • Métodos


ISO 1989:2014

Atualização importante.

Incluiu:

  • JSON

  • Melhorias OO

  • Novos recursos de interoperabilidade


ISO 1989:2023

Versão mais recente da norma.

Incorpora diversas melhorias acumuladas ao longo dos anos para manter o COBOL alinhado às necessidades modernas de integração e desenvolvimento corporativo.


O que a Norma Define?


Estrutura do Programa

IDENTIFICATION DIVISION.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.

Regras de Sintaxe

Exemplo:

MOVE A TO B

Tipos de Dados

PIC X
PIC 9
COMP
COMP-3

Comandos

  • IF

  • PERFORM

  • CALL

  • READ

  • WRITE

  • OPEN

  • CLOSE


Arquivos

QSAM

VSAM

Sequential

Indexed

Relative


Funções

FUNCTION CURRENT-DATE

Manipulação de Strings

STRING
UNSTRING
INSPECT

Benefícios da Padronização

Portabilidade

Permite mover aplicações entre compiladores.


Compatibilidade

Reduz dependência de fornecedor.


Evolução Controlada

Novos recursos seguem um padrão global.


Treinamento

Facilita formação de profissionais.


COBOL IBM e a ISO 1989

O Enterprise COBOL da IBM segue a norma ISO, mas também possui extensões próprias.

Exemplos:

CICS
DB2
JSON
XML
LE

Padrão ISO x Extensões Proprietárias

Padrão ISO

IF A = B

Extensão do Fabricante

EXEC CICS
END-EXEC

Áreas Cobertas pela Norma

ÁreaCoberta
Sintaxe COBOLSim
Tipos de DadosSim
ArquivosSim
FunçõesSim
OO COBOLSim
XMLSim
JSONSim
CICSNão
DB2Não
IMSNão

Relação com Mainframe

Grande parte dos programas COBOL executados hoje em:

  • IBM Z

  • z/OS

  • CICS

  • Batch

  • DB2

segue conceitos definidos pela ISO 1989.


Exemplo Clássico ISO COBOL

IDENTIFICATION DIVISION.
PROGRAM-ID. EXEMPLO.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 WS-NOME PIC X(20).

PROCEDURE DIVISION.

MOVE 'BELLACOSA' TO WS-NOME

DISPLAY WS-NOME

GOBACK.

Curiosidades

1. COBOL é uma das poucas linguagens com padrão ISO formal há décadas.

2. A versão COBOL-85 (ISO 1989:1985) ainda influencia milhares de sistemas em produção.

3. Muitas funcionalidades modernas de JSON e XML foram incorporadas às versões recentes da norma.

4. A IBM participa ativamente dos grupos internacionais que evoluem o padrão COBOL.

5. Milhões de linhas de código executadas diariamente em bancos e governos seguem regras definidas pela ISO 1989.


Resumo Rápido

NormaMarco
ISO 1989:1978Primeiro padrão
ISO 1989:1985COBOL-85
ISO 1989:2002Orientação a Objetos
ISO 1989:2014JSON e melhorias
ISO 1989:2023Atualização moderna

Conclusão

A ISO 1989 é a norma internacional que define oficialmente a linguagem COBOL. Ela garante padronização, compatibilidade e evolução controlada da linguagem desde os anos 1970, permitindo que aplicações COBOL continuem sendo desenvolvidas e mantidas em ambientes modernos como IBM Z, LinuxONE, Cloud, APIs REST, XML e JSON, preservando décadas de investimento tecnológico das organizações.


terça-feira, 20 de março de 2007

O que é CODASYL?

 

Bellacosa Mainframe apresenta o Codasyl

O que é CODASYL?

O CODASYL (Conference on Data Systems Languages) foi um consórcio criado em 1959 por fabricantes de computadores, empresas e órgãos governamentais com o objetivo de desenvolver padrões para linguagens e sistemas de informação.

O CODASYL ficou mundialmente famoso por dois grandes legados:

✅ A criação da linguagem COBOL

✅ O modelo de banco de dados em rede (Network Database Model)


Significado da Sigla

CODASYL
Conference on Data Systems Languages

Em português:

Conferência sobre Linguagens para Sistemas de Dados

Como Surgiu?

No final da década de 1950 existiam diversos fabricantes:

  • IBM

  • UNIVAC

  • Burroughs

  • Honeywell

  • RCA

Cada um possuía sua própria linguagem.

O problema era:

Programa IBM
      ≠
Programa UNIVAC

Não havia portabilidade.


A Missão do CODASYL

Criar padrões que permitissem:

  • Compartilhamento de conhecimento

  • Portabilidade

  • Padronização

  • Integração entre fabricantes


O Nascimento do COBOL

Em 1959 o CODASYL criou um comitê para desenvolver uma linguagem de negócios.

O resultado foi:

COBOL

Common Business Oriented Language

Curiosidade Histórica

Grace Hopper participou ativamente das discussões que influenciaram a criação do COBOL.


O Modelo CODASYL de Banco de Dados

Na década de 1960 o grupo criou outro marco importante:

Banco de Dados em Rede

(Network Database Model)


Como Funciona?

Os registros são ligados por relacionamentos.

Exemplo:

CLIENTE
    │
    ├── CONTA
    │
    ├── CARTÃO
    │
    └── EMPRÉSTIMO

Conceitos Básicos

Record

Equivalente a um registro.

CLIENTE

Set

Relacionamento entre registros.

CLIENTE
      ↓
   CONTA

Owner

Registro proprietário.

CLIENTE

Member

Registro associado.

CONTA

Exemplo Visual

CLIENTE (Owner)
      │
      ├──── CONTA 1
      │
      ├──── CONTA 2
      │
      └──── CONTA 3

Comparação com Modelo Hierárquico

Hierárquico (IMS)

CLIENTE
    ↓
CONTA
    ↓
MOVIMENTO

Um único caminho.


CODASYL

CLIENTE
   ↔
CONTA
   ↔
CARTÃO
   ↔
EMPRÉSTIMO

Múltiplos caminhos.


Vantagem do CODASYL

Maior flexibilidade.


Exemplo Bancário

CLIENTE
     │
     ├── CONTA
     │
     ├── CARTÃO
     │
     ├── INVESTIMENTO
     │
     └── SEGURO

Linguagem de Acesso

Os programas navegavam diretamente pelos relacionamentos.

Exemplo:

FIND CLIENTE
↓
FIND CONTA
↓
FIND MOVIMENTO

Navegação

O programador precisava conhecer:

Caminhos
Relacionamentos
Estruturas

do banco.


Produtos Baseados em CODASYL

Os mais conhecidos foram:

IDMS

(Integrated Database Management System)

Muito utilizado em Mainframe.


IDS

Integrated Data Store.


TOTAL

Outro banco de dados famoso da época.


CODASYL x Banco Relacional

Década de 1970:

Edgar F. Codd propõe:

Modelo Relacional


CODASYL:

Navegação

Relacional:

SELECT *
FROM CLIENTES

Exemplo

CODASYL:

CLIENTE
 ↓
CONTA
 ↓
MOVIMENTO

Relacional:

SELECT *
FROM MOVIMENTO
WHERE CONTA = 123

Diferenças

CODASYLRelacional
NavegacionalDeclarativo
RecordTabela
SetRelacionamento
OwnerPai
MemberFilho
Acesso físicoSQL

CODASYL e Mainframe

Durante décadas foi extremamente utilizado em:

  • Bancos

  • Seguradoras

  • Governo

  • Telecom


Muitos sistemas críticos ainda utilizam:

IDMS

baseado no modelo CODASYL.


Influência Atual

Embora o modelo relacional tenha se tornado dominante, várias ideias do CODASYL influenciaram:

  • Bancos orientados a grafos

  • Bancos NoSQL

  • Neo4j

  • Modelagem de relacionamentos complexos


CODASYL x Grafos

Curiosamente:

CODASYL (1969)
       ↓
Relacionamentos
       ↓
Grafos Modernos

Existe certa semelhança conceitual.


Curiosidades

1. O CODASYL ajudou a criar o COBOL

2. O modelo de banco em rede surgiu antes do DB2

3. O IDMS ainda existe em alguns ambientes Mainframe

4. Foi um dos modelos de banco mais importantes da história

5. Influenciou conceitos utilizados em bancos de grafos modernos


Resumo Rápido

ConceitoDescrição
CODASYLOrganização de padronização
COBOLCriado sob o CODASYL
Modelo RedeBanco de dados em rede
RecordRegistro
SetRelacionamento
OwnerRegistro pai
MemberRegistro filho
IDMSBanco baseado em CODASYL
IMSModelo hierárquico
DB2Modelo relacional

Conclusão

O CODASYL foi uma das organizações mais importantes da história da computação. Além de participar da criação do COBOL, desenvolveu o modelo de banco de dados em rede, que dominou muitos ambientes corporativos antes da popularização dos bancos relacionais. Seu legado permanece vivo em sistemas Mainframe, especialmente em ambientes IDMS, e influenciou conceitos modernos de modelagem de dados e bancos orientados a relacionamentos.