Translate

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.


segunda-feira, 19 de março de 2007

O que é Performance Aplicada em Mainframe?

 

Bellacosa Mainframe avaliando a performance no Mainframe

O que é Performance Aplicada em Mainframe?

A Performance em Mainframe é a disciplina responsável por medir, analisar, otimizar e garantir que os recursos do ambiente IBM Z estejam sendo utilizados da forma mais eficiente possível.

Seu objetivo é garantir que aplicações, bancos de dados, transações online, jobs batch e infraestrutura operem com:

✅ Alta velocidade

✅ Baixo consumo de recursos

✅ Maior capacidade de processamento

✅ Menor tempo de resposta

✅ Melhor custo operacional


Definição Simples

Performance pode ser resumida como:

Fazer mais
com menos recursos
e no menor tempo possível

Por que Performance é Importante?

Imagine um banco processando:

PIX
TED
Cartões
Internet Banking
Open Finance

Se uma transação levar muito tempo:

Cliente espera
↓
Sistema fica lento
↓
Perda financeira

Por isso a performance é crítica.


O que é Medido?

Os especialistas analisam diversos indicadores.


CPU

Quanto processamento está sendo utilizado.

Exemplo:

CPU = 95%

Indica possível gargalo.


Tempo de Resposta

Tempo entre solicitação e resposta.

Exemplo:

Cliente
 ↓
Consulta Saldo
 ↓
0,2 segundos

Throughput

Quantidade de trabalho processado.

Exemplo:

100.000 transações por segundo

Consumo de Memória

Avalia uso da RAM.

Storage Virtual
Frames
Paging

I/O

Avalia acesso a:

  • Discos

  • Storage

  • Bancos de dados


Exemplo:

COBOL
 ↓
DB2
 ↓
Storage

Principais Áreas de Performance

Performance de CPU

Analisa:

  • Consumo

  • Picos

  • Esperas


Performance de Memória

Analisa:

  • Paging

  • Real Storage

  • Cache


Performance de Storage

Analisa:

  • FICON

  • DS8000

  • Cache

  • Latência


Performance de Rede

Analisa:

  • TCP/IP

  • OSA

  • HiperSockets


Performance de Aplicações

Analisa:

  • COBOL

  • CICS

  • IMS

  • Java


Performance em Batch

Exemplo:

JOB = 4 horas

Após otimização:

JOB = 1 hora

Ganho:

75%

Performance em CICS

Mede:

  • Tempo de resposta

  • Esperas

  • Transações por segundo


Exemplo:

Transação
 ↓
50 ms

Excelente resultado.


Performance em DB2

Avalia:

  • SQL

  • Índices

  • Buffer Pools


Exemplo ruim:

SELECT *
FROM CLIENTES

Exemplo melhor:

SELECT NOME
FROM CLIENTES
WHERE CPF = ?

Performance em COBOL

Otimizações comuns:


Evitar Leitura Desnecessária

Ruim:

READ ARQ

milhões de vezes.


Melhor:

Carregar tabela em memória

Usar SEARCH ALL

Mais rápido.

SEARCH ALL

Evitar SORTs Desnecessários

Sort é caro.


Reduzir Acessos ao DB2

Menos SQL = mais performance.


Gargalos Mais Comuns

CPU

Uso excessivo

Storage

Disco lento

SQL

SELECT ineficiente

Rede

Latência

Programação

Loops desnecessários

Ferramentas de Performance


RMF

Resource Measurement Facility

Ferramenta principal do z/OS.


Mede:

  • CPU

  • Memória

  • I/O

  • Rede


SMF

System Management Facility

Coleta estatísticas.


Gera:

SMF Records

OMEGAMON

Monitoramento em tempo real.


Monitora:

  • CICS

  • DB2

  • z/OS


MainView

Ferramenta Broadcom.


IntelliMagic

Análise avançada.


IBM Z Performance and Capacity Analytics

Analytics para capacidade.


Capacity Planning

Planejamento de capacidade.


Pergunta:

O Mainframe suportará
o crescimento do próximo ano?

Avalia:

  • CPU

  • Memória

  • Storage

  • Rede


MIPS e MSU

Métricas tradicionais.


MIPS

Million Instructions Per Second

MSU

Million Service Units

Mais utilizada atualmente.


zIIP e Performance

Grande aliado.

Executa:

  • Java

  • XML

  • JSON

  • DB2


Resultado:

Menos carga nos CPs

Cache

Melhora drasticamente:

CPU
Memória
Storage
DB2

Performance em Cloud Híbrida

Hoje também envolve:

API
Cloud
OpenShift
Containers
z/OS Connect

Exemplo Prático

Fluxo de PIX:

Aplicativo
      ↓
API
      ↓
z/OS Connect
      ↓
CICS
      ↓
COBOL
      ↓
DB2
      ↓
Storage

A equipe de performance mede cada etapa.


Objetivos da Equipe de Performance

✅ Reduzir tempo de resposta

✅ Reduzir consumo de CPU

✅ Melhorar throughput

✅ Evitar gargalos

✅ Planejar crescimento

✅ Reduzir custos de licenciamento


Perfil do Analista de Performance

Conhece:

  • z/OS

  • JES2

  • RMF

  • SMF

  • CICS

  • DB2

  • Storage

  • Redes

  • Workload Manager


Curiosidade

Em muitos bancos, uma redução de apenas 1% no consumo de CPU pode representar uma economia anual de centenas de milhares ou até milhões de dólares em licenciamento e infraestrutura. Por isso, performance é uma das áreas mais valorizadas do universo Mainframe.


Resumo Rápido

ÁreaO que Analisa
CPUProcessamento
MemóriaUso de RAM
StorageI/O e latência
RedeComunicação
CICSTempo de resposta
DB2SQL e Buffer Pools
BatchTempo de execução
RMFMétricas do sistema
SMFEstatísticas
OMEGAMONMonitoramento

Conclusão

Performance aplicada em Mainframe é a prática de monitorar, medir e otimizar todos os recursos do ambiente IBM Z, incluindo CPU, memória, storage, rede, CICS, DB2 e aplicações COBOL. Seu objetivo é garantir que o sistema entregue o máximo desempenho possível, com segurança, estabilidade e o menor custo operacional, suportando milhões de transações críticas diariamente.