Translate

quinta-feira, 15 de março de 2007

O que é Cloud no Mainframe?

 

Bellacosa Mainframe e a cloud na Stack Mainframe

O que é Cloud no Mainframe?

Quando falamos em Cloud no Mainframe, muitas pessoas imaginam que Mainframe e Cloud são tecnologias concorrentes. Na realidade, elas são extremamente complementares.

Hoje, grande parte das soluções de Cloud corporativa se integra diretamente com Mainframes IBM Z e LinuxONE.


O que é Cloud?

Cloud Computing (Computação em Nuvem) é um modelo onde recursos computacionais são disponibilizados sob demanda.

Exemplos:

Servidores
Armazenamento
Banco de Dados
Containers
Inteligência Artificial
APIs

Tudo acessível pela rede.


Os Modelos de Cloud

Cloud Pública

Infraestrutura compartilhada.

Exemplos:

  • AWS

  • Microsoft Azure

  • Google Cloud


Cloud Privada

Infraestrutura exclusiva da empresa.

Exemplo:

Data Center Corporativo
       ↓
IBM Z
       ↓
Cloud Privada

Cloud Híbrida

Combinação entre:

Cloud Pública
       +
Cloud Privada

É o modelo mais comum em ambientes Mainframe.


Onde o Mainframe Entra?

O Mainframe geralmente continua executando:

COBOL
CICS
IMS
DB2
VSAM

Enquanto aplicações modernas executam na Cloud.


Arquitetura Moderna

Aplicativo Mobile
        ↓
API REST
        ↓
Cloud
        ↓
z/OS Connect
        ↓
COBOL
        ↓
DB2

Por que Não Migrar Tudo Para a Cloud?

Porque o Mainframe possui características difíceis de substituir:

✅ Confiabilidade

✅ Segurança

✅ Escalabilidade

✅ Processamento transacional

✅ Disponibilidade


Exemplo Bancário

Quando você faz um PIX:

App Mobile
      ↓
Cloud API
      ↓
Mainframe
      ↓
CICS
      ↓
DB2
      ↓
Resposta

O usuário enxerga a Cloud.

A transação ocorre no Mainframe.


Mainframe como Cloud Privada

O IBM Z pode funcionar como uma enorme Cloud privada.


Exemplo:

Usuários
     ↓
Portal Cloud
     ↓
LinuxONE
     ↓
Máquinas Virtuais

Virtualização no Mainframe

Muito antes da Cloud existir, o Mainframe já possuía:

LPAR
PR/SM
z/VM

Capaz de executar:

Centenas
ou
Milhares
de VMs

simultaneamente.


LinuxONE e Cloud

O LinuxONE foi criado justamente para workloads Cloud.

Executa:

  • Containers

  • Kubernetes

  • OpenShift

  • IA

  • APIs


Arquitetura:

OpenShift
      ↓
Containers
      ↓
LinuxONE

OpenShift no Mainframe

Uma das estratégias mais populares atualmente.

OpenShift
       ↓
Kubernetes
       ↓
LinuxONE
       ↓
IBM Z

Benefícios:

✅ Escalabilidade

✅ Containers

✅ DevOps

✅ Microsserviços


Cloud Híbrida

É o cenário mais comum.


Exemplo:

AWS
  ↓
API Gateway
  ↓
z/OS Connect
  ↓
COBOL

Ou:

Azure
   ↓
API REST
   ↓
CICS

Mainframe e Containers

Hoje é possível executar:

  • Docker

  • Podman

  • Kubernetes

  • OpenShift

sobre LinuxONE.


Mainframe e APIs

A Cloud conversa com Mainframe através de:

REST
JSON
SOAP
MQ
Kafka

z/OS Connect

Uma das tecnologias-chave.

Transforma:

Programa COBOL

em

API REST

Fluxo:

JSON
   ↓
REST
   ↓
z/OS Connect
   ↓
COBOL

DevOps no Mainframe

Cloud impulsionou:

  • Git

  • GitHub

  • GitLab

  • Jenkins

  • Ansible

  • Zowe


Pipeline moderno:

Git
 ↓
Build
 ↓
Teste
 ↓
Deploy
 ↓
z/OS

Cloud e Segurança

O Mainframe é conhecido por sua segurança.

Integra:

RACF
TLS
OAuth
JWT
MFA

com ambientes Cloud.


Cloud e Inteligência Artificial

Hoje o IBM Z e LinuxONE executam:

  • Python

  • TensorFlow

  • PyTorch

  • Watsonx


Exemplo:

Transação
      ↓
IA
      ↓
Detecção de Fraude

em tempo real.


Cloud e Open Banking

Open Finance normalmente utiliza:

REST
JSON
OAuth
APIs

integradas ao Mainframe.


Benefícios

✅ Modernização sem reescrever COBOL

✅ Integração com Cloud Pública

✅ APIs REST

✅ Containers

✅ Kubernetes

✅ DevOps

✅ IA

✅ Redução de custos


Desafios

❌ Integração de sistemas legados

❌ Segurança

❌ Governança

❌ Latência

❌ Capacitação profissional


Tecnologias Mais Utilizadas

TecnologiaFunção
IBM ZPlataforma principal
LinuxONELinux corporativo
z/OS ConnectAPIs REST
OpenShiftContainers
KubernetesOrquestração
ZoweFerramentas modernas
GitControle de versão
AnsibleAutomação
RACFSegurança
DB2Banco de dados

Curiosidade Histórica

Muito antes do termo "Cloud Computing" existir, os Mainframes já ofereciam conceitos semelhantes através de:

VM/CMS (1972)
z/VM
LPAR
PR/SM

permitindo compartilhar recursos computacionais entre múltiplos usuários, algo que hoje é considerado um dos fundamentos da computação em nuvem.


Resumo Rápido

Mobile
   ↓
Cloud
   ↓
API
   ↓
z/OS Connect
   ↓
COBOL
   ↓
DB2

Conclusão

Cloud no Mainframe não significa substituir o IBM Z, mas sim integrá-lo ao ecossistema moderno de APIs, Containers, Kubernetes, OpenShift, DevOps e Inteligência Artificial. O resultado é uma arquitetura híbrida onde a inovação acontece na Cloud e o processamento crítico continua protegido pela confiabilidade, segurança e desempenho do Mainframe.


quarta-feira, 14 de março de 2007

O que é o LinuxONE e Quais Distribuições Linux Roda Nele?

Bellacosa Mainframe olhando o LinuxOne


O que é o LinuxONE e Quais Distribuições Linux Roda Nele?

O LinuxONE é uma família de servidores corporativos da IBM baseada na mesma tecnologia utilizada pelos Mainframes IBM Z, mas projetada especificamente para executar sistemas operacionais Linux.

Em outras palavras:

IBM Z = Mainframe completo

LinuxONE = Plataforma IBM Z otimizada para Linux

O LinuxONE combina:

✅ Segurança de nível bancário

✅ Alta disponibilidade

✅ Escalabilidade massiva

✅ Virtualização avançada

✅ Processamento de Cloud, IA e Containers


História do LinuxONE

A IBM lançou o LinuxONE em 2015 para atender empresas que desejavam executar:

  • Linux

  • Containers

  • Kubernetes

  • OpenShift

  • Cloud Privada

  • Inteligência Artificial

sobre a mesma arquitetura robusta do Mainframe.


Arquitetura Simplificada

Aplicações
      ↓
Containers
      ↓
Kubernetes
      ↓
Linux
      ↓
LinuxONE

LinuxONE é Mainframe?

Tecnicamente:

SIM

Ele utiliza a mesma arquitetura IBM Z.

Porém é comercializado como uma plataforma Linux dedicada.


Principais Modelos

LinuxONE Emperor

Maior capacidade.

Utilizado por:

  • Bancos

  • Cloud Providers

  • Grandes empresas


LinuxONE Rockhopper

Modelo menor.

Voltado para:

  • Empresas médias

  • Ambientes de desenvolvimento

  • Laboratórios


Quais Distribuições Linux Roda no LinuxONE?

O LinuxONE utiliza a arquitetura:

s390x

Portanto a distribuição precisa possuir suporte para IBM Z.


1. Red Hat Enterprise Linux (RHEL)

Uma das mais utilizadas.

Características

✅ Certificada pela IBM

✅ Muito usada com OpenShift

✅ Excelente suporte corporativo


Exemplo:

uname -m

s390x

2. Ubuntu Server

Muito popular.

Suporte oficial da Canonical.


Utilizado para:

  • Containers

  • Cloud

  • IA

  • Desenvolvimento


Exemplo:

Ubuntu Server for IBM Z

3. SUSE Linux Enterprise Server (SLES)

Tradicional no ambiente Mainframe.


Muito usado em:

  • Bancos

  • Seguradoras

  • Governo


Características:

✅ Alta estabilidade

✅ Integração com SAP

✅ Excelente suporte IBM Z


4. Debian

Possui versão:

Debian s390x

Muito utilizada em:

  • Laboratórios

  • Ambientes acadêmicos

  • Open Source


5. Fedora

Também suporta:

s390x

Mais comum para:

  • Testes

  • Desenvolvimento


Distribuições Mais Utilizadas

DistribuiçãoSuporte LinuxONE
RHELSim
UbuntuSim
SUSESim
DebianSim
FedoraSim

O que NÃO Roda?

Versões Linux compiladas apenas para:

x86
ARM

não funcionam diretamente.

Precisam existir binários:

s390x

LinuxONE e Containers

Suporta:

  • Docker

  • Podman

  • Kubernetes

  • OpenShift


Exemplo:

OpenShift
      ↓
Containers
      ↓
LinuxONE

LinuxONE e Cloud

Muito usado para:

  • Cloud privada

  • Cloud híbrida

  • Multicloud


LinuxONE e Inteligência Artificial

Pode executar:

  • Python

  • TensorFlow

  • PyTorch

  • Jupyter

  • Watsonx


LinuxONE e Bancos

Casos comuns:

PIX
Open Finance
Fraudes
APIs
Blockchain
IA

LinuxONE e Mainframe Tradicional

Arquitetura conjunta:

COBOL
CICS
DB2
z/OS
      ↓
LinuxONE
      ↓
Java
Python
APIs
Containers

Vantagens

✅ Criptografia embarcada

✅ Disponibilidade próxima de 100%

✅ Escalabilidade extrema

✅ Menor consumo energético

✅ Consolidação de milhares de servidores


Curiosidades

1. LinuxONE utiliza processadores IBM Telum

2. Executa milhares de máquinas virtuais simultaneamente

3. Possui criptografia em hardware

4. É amplamente utilizado para OpenShift

5. Compartilha tecnologia com os Mainframes IBM Z


Resumo Rápido

ConceitoDescrição
LinuxONEPlataforma Linux baseada em IBM Z
Arquiteturas390x
RHELSuporte oficial
UbuntuSuporte oficial
SUSESuporte oficial
DebianSuporte disponível
FedoraSuporte disponível
ContainersDocker e Podman
KubernetesSim
OpenShiftSim
CloudSim
IASim

Conclusão

O LinuxONE é a plataforma Linux corporativa da IBM baseada na arquitetura IBM Z, oferecendo a robustez, segurança e disponibilidade dos Mainframes para workloads Linux modernos. As distribuições mais utilizadas são Red Hat Enterprise Linux (RHEL), Ubuntu Server, SUSE Linux Enterprise Server (SLES), Debian e Fedora, todas compiladas para a arquitetura s390x e prontas para executar aplicações Cloud, Containers, APIs, Inteligência Artificial e soluções corporativas de missão crítica.

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

O que é Open Mainframe Project?

 

Bellacosa Mainframe apresenta o Open Mainframe Project

O que é Open Mainframe Project?

O Open Mainframe Project (OMP) é uma iniciativa global criada para apoiar o desenvolvimento, a modernização e a adoção de tecnologias abertas no ecossistema Mainframe.

O projeto foi lançado em 2015 e é hospedado pela Linux Foundation, reunindo empresas, universidades, desenvolvedores e especialistas Mainframe de todo o mundo.


Definição Simples

O Open Mainframe Project é uma comunidade colaborativa que busca:

✅ Atrair novos profissionais para Mainframe

✅ Incentivar projetos Open Source

✅ Modernizar aplicações legadas

✅ Promover educação e treinamento

✅ Integrar Mainframe com tecnologias modernas


Por que o Projeto Foi Criado?

Durante muitos anos o Mainframe foi visto como um ambiente fechado.

Ao mesmo tempo:

Cloud
DevOps
Git
Linux
Open Source
Containers
APIs

ganhavam popularidade.

O Open Mainframe Project surgiu para aproximar o Mainframe desse universo moderno.


Objetivos Principais

Educação

Capacitar novas gerações de profissionais.


Comunidade

Criar um ecossistema colaborativo.


Open Source

Estimular projetos abertos para IBM Z.


Modernização

Conectar Mainframe às tecnologias atuais.


Quem Participa?

Diversas empresas fazem parte da iniciativa.

Entre elas:

  • IBM

  • Broadcom

  • Rocket Software

  • Vicom Infinity

  • BMC

  • SUSE

  • Phoenix Software

  • Universidades e instituições acadêmicas


Estrutura do Projeto

Open Mainframe Project
           │
           ├── Educação
           ├── Open Source
           ├── Eventos
           ├── Mentoria
           └── Comunidade

Projetos Importantes

Zowe

Um dos projetos mais famosos do Open Mainframe Project.

O que é?

Framework Open Source para Mainframe.

Permite:

  • CLI moderna

  • APIs REST

  • Interface Web

  • Integração DevOps


Arquitetura

Desenvolvedor
      ↓
Zowe CLI
      ↓
z/OS
      ↓
CICS
DB2
Datasets
JES

Zowe CLI

Exemplo:

zowe jobs list jobs

Consulta Jobs do z/OS usando linha de comando moderna.


Mentorship Program

Programa internacional de mentoria.

Conecta:

Estudantes
     ↓
Mentores
     ↓
Projetos Reais

Mainframe Open Education

Iniciativas educacionais para:

  • COBOL

  • JCL

  • RACF

  • CICS

  • DB2

  • LinuxONE

  • DevOps


Ambientes Gratuitos

O projeto disponibiliza acesso a recursos de aprendizado.

Incluindo:

  • Laboratórios

  • Cursos

  • Documentação

  • Trilhas de certificação


Eventos

O Open Mainframe Project participa de:

  • SHARE

  • GSE

  • Open Source Summit

  • IBM TechXchange


Mainframe e Open Source

O projeto ajuda a integrar:

Git
GitHub
Python
Java
Node.js
Linux
Ansible
Docker
Kubernetes

com o ambiente Mainframe.


DevOps no Mainframe

Promove ferramentas modernas como:

  • Git

  • Jenkins

  • GitLab

  • Ansible

  • Zowe


Exemplo

GitHub
   ↓
Pipeline CI/CD
   ↓
Teste COBOL
   ↓
Deploy z/OS

LinuxONE e Open Mainframe

O projeto também incentiva o uso de:

LinuxONE
Red Hat
Ubuntu
SUSE
OpenShift

executando sobre hardware IBM Z.


Programa de Embaixadores

O Open Mainframe Project possui uma rede global de:

Ambassadors

que promovem:

  • palestras;

  • workshops;

  • treinamentos;

  • eventos técnicos.


Benefícios para Estudantes

✅ Conteúdo gratuito

✅ Mentorias internacionais

✅ Contato com especialistas

✅ Projetos Open Source

✅ Networking global


Benefícios para Empresas

✅ Formação de talentos

✅ Modernização tecnológica

✅ Integração Open Source

✅ Aumento da comunidade Mainframe


Curiosidades

1. O projeto é mantido pela Linux Foundation

2. Possui participantes de dezenas de países

3. O Zowe nasceu dentro do Open Mainframe Project

4. Milhares de estudantes participam de programas educacionais todos os anos

5. É uma das maiores iniciativas globais de promoção da plataforma Mainframe


Recursos Oficiais

Site Oficial

Open Mainframe Project

Projeto Zowe

Zowe

Linux Foundation

Linux Foundation


Resumo Rápido

ConceitoFunção
Open Mainframe ProjectComunidade global Mainframe
Linux FoundationOrganização mantenedora
ZoweFramework Open Source
MentorshipPrograma de mentoria
EducaçãoFormação de profissionais
DevOpsModernização Mainframe
Open SourceProjetos colaborativos
LinuxONEIntegração Linux e IBM Z

Conclusão

O Open Mainframe Project é uma iniciativa global da Linux Foundation dedicada a fortalecer o ecossistema Mainframe através de educação, colaboração, inovação e projetos Open Source. Seu objetivo é conectar a robustez do IBM Z às tecnologias modernas, formando novos profissionais e garantindo que o Mainframe continue evoluindo como uma das plataformas mais importantes do mundo corporativo.


segunda-feira, 12 de março de 2007

O que são APIs e seu Uso no Mainframe?

 

Bellacosa Mainframe apresenta API na Stack Mainframe

O que são APIs e seu Uso no Mainframe?

As APIs (Application Programming Interfaces) revolucionaram a forma como sistemas trocam informações. Hoje, elas são a principal ponte entre aplicações modernas, dispositivos móveis, plataformas Cloud e os sistemas Mainframe que processam as operações mais críticas do mundo.

Quando você consulta saldo pelo celular, faz um PIX, compra com cartão ou utiliza um aplicativo bancário, existe uma grande chance de uma API estar conversando com um programa COBOL executando em um Mainframe IBM Z.


O que é uma API?

API significa:

Application Programming Interface

Ou seja:

Interface de Programação de Aplicações

É um conjunto de regras que permite que um sistema solicite serviços ou informações de outro sistema.


Analogia Simples

Imagine um restaurante:

Cliente
   ↓
Garçom
   ↓
Cozinha
   ↓
Resposta

Nesse cenário:

  • Cliente = Aplicação

  • Garçom = API

  • Cozinha = Sistema Mainframe

A API recebe o pedido, encaminha para o sistema correto e devolve a resposta.


Exemplo do Dia a Dia

Aplicativo bancário:

App Mobile
      ↓
API
      ↓
COBOL
      ↓
DB2
      ↓
Resposta

O cliente vê apenas a tela do aplicativo.

Nos bastidores, uma API conversa com o Mainframe.


Por que APIs são importantes?

Antes das APIs, a integração era feita através de:

Arquivos
FTP
MQ
Batch
Troca de datasets

Essas soluções funcionavam, mas eram mais lentas e complexas.

As APIs permitem:

✅ Integração em tempo real

✅ Menor acoplamento

✅ Reutilização de serviços

✅ Facilidade de manutenção

✅ Integração com Cloud


Principais Tipos de API

REST

O mais utilizado atualmente.

Comunica-se normalmente usando:

HTTP
HTTPS
JSON

Exemplo:

GET /clientes/1001

Resposta:

{
  "id":1001,
  "nome":"JOAO SILVA"
}

SOAP

Muito utilizado em Mainframe.

Baseado em:

XML
WSDL
HTTP

Exemplo:

<ConsultaSaldo>
   <Conta>12345</Conta>
</ConsultaSaldo>

GraphQL

Mais moderno.

Permite solicitar apenas os dados necessários.


APIs e o Mainframe

O Mainframe tradicionalmente trabalha com:

  • COBOL

  • CICS

  • IMS

  • DB2

  • VSAM

As APIs funcionam como uma camada de integração.


Arquitetura Moderna

Mobile
   ↓
API REST
   ↓
z/OS Connect
   ↓
COBOL
   ↓
DB2

Como o Mainframe Consome APIs?

Existem dois cenários.


1. Mainframe Expondo APIs

O COBOL oferece serviços para outros sistemas.

Exemplo:

Programa COBOL
      ↓
API REST
      ↓
Aplicativo Mobile

2. Mainframe Consumindo APIs

O COBOL chama um serviço externo.

Exemplo:

COBOL
   ↓
API Correios
   ↓
Consulta CEP

APIs REST no Mainframe

Hoje são extremamente comuns.

Utilizam:

HTTP
HTTPS
JSON
REST

Métodos HTTP

GET

Consulta dados.

GET /clientes

POST

Inclui dados.

POST /clientes

PUT

Atualiza dados.

PUT /clientes/1001

DELETE

Remove dados.

DELETE /clientes/1001

JSON e COBOL

Uma integração moderna normalmente utiliza:

JSON
   ↓
JSON PARSE
   ↓
COBOL

ou:

COBOL
   ↓
JSON GENERATE
   ↓
API

z/OS Connect

Uma das tecnologias mais importantes da IBM atualmente.

Permite transformar:

Programa COBOL

em

API REST

sem reescrever a aplicação.


Fluxo com z/OS Connect

Cliente REST
        ↓
JSON
        ↓
z/OS Connect
        ↓
Copybook COBOL
        ↓
Programa COBOL
        ↓
DB2

APIs e CICS

O CICS possui suporte para:

  • REST

  • JSON

  • SOAP

  • HTTP

  • Web Services


Exemplo:

REST API
    ↓
CICS
    ↓
COBOL

APIs e IMS

O IMS também pode ser exposto através de APIs.

Exemplo:

API REST
      ↓
IMS Connect
      ↓
IMS TM
      ↓
Programa COBOL

APIs e DB2

Consultas podem ser disponibilizadas através de APIs.

Exemplo:

SELECT SALDO
FROM CLIENTES

{
  "saldo":5000
}

Open Banking e APIs

Grande parte do Open Finance utiliza:

REST
JSON
OAuth
TLS

integrados ao Mainframe.


Segurança das APIs

Aspecto fundamental.

Normalmente utilizam:

  • HTTPS

  • TLS

  • OAuth 2.0

  • JWT

  • Certificados Digitais

  • RACF


Exemplo de Fluxo Seguro

App
 ↓
OAuth
 ↓
API
 ↓
RACF
 ↓
COBOL

Benefícios para o Mainframe

✅ Modernização sem reescrever COBOL

✅ Integração com Cloud

✅ Integração Mobile

✅ Exposição de serviços legados

✅ Reutilização de regras de negócio

✅ Menor custo de transformação digital


Desafios

❌ Segurança

❌ Governança

❌ Controle de versões

❌ Performance

❌ Monitoramento


Tecnologias Comuns

TecnologiaFunção
RESTAPIs modernas
JSONFormato de dados
SOAPWeb Services XML
z/OS ConnectExpor COBOL como API
CICSProcessamento transacional
IMS ConnectAPIs para IMS
DB2Banco de dados
RACFSegurança

Curiosidade

Muitos bancos processam milhões de chamadas de APIs por dia que, nos bastidores, executam programas COBOL escritos há décadas. O aplicativo parece moderno, mas a regra de negócio continua protegida e executada no Mainframe.


Resumo Rápido

Aplicativo
      ↓
API REST
      ↓
JSON
      ↓
z/OS Connect
      ↓
COBOL
      ↓
DB2

Conclusão

As APIs são interfaces que permitem a comunicação entre sistemas. No Mainframe, elas desempenham um papel essencial na modernização das aplicações COBOL, conectando sistemas IBM Z a aplicativos móveis, plataformas Cloud, microsserviços e ecossistemas digitais modernos. Tecnologias como REST, JSON, CICS Web Services, IMS Connect e z/OS Connect tornaram possível integrar décadas de investimento em Mainframe ao mundo das APIs de forma segura, escalável e eficiente.


domingo, 11 de março de 2007

O que é Terminador de Escopo em COBOL?

 

Bellacosa Mainframe e o terminador de escopo em cobol

O que é Terminador de Escopo em COBOL?

Os Terminadores de Escopo (Scope Terminators) são palavras-chave usadas para indicar explicitamente onde termina uma instrução COBOL.

Eles foram introduzidos para resolver um problema clássico dos programas antigos:

saber exatamente onde um comando termina.


Antes dos Terminadores de Escopo

Nas versões antigas do COBOL era comum encontrar:

IF WS-SALDO > 0
   DISPLAY 'CLIENTE ATIVO'
ELSE
   DISPLAY 'CLIENTE INATIVO'.

Quando a lógica crescia, surgiam dúvidas:

Qual IF pertence a qual ELSE?

Problema dos IFs Aninhados

Exemplo:

IF A = 1
   IF B = 2
      DISPLAY 'OK'
ELSE
   DISPLAY 'ERRO'

Pergunta:

O ELSE pertence ao IF A ou ao IF B?

Nem sempre fica claro.


Solução

A IBM e os fabricantes de compiladores introduziram:

Terminadores de Escopo


Principais Terminadores

ComandoTerminador
IFEND-IF
EVALUATEEND-EVALUATE
PERFORMEND-PERFORM
READEND-READ
WRITEEND-WRITE
REWRITEEND-REWRITE
SEARCHEND-SEARCH
STRINGEND-STRING
UNSTRINGEND-UNSTRING
COMPUTEEND-COMPUTE
EXECEND-EXEC

END-IF

O mais conhecido.


Exemplo

IF WS-SALDO > 0

   DISPLAY 'ATIVO'

ELSE

   DISPLAY 'INATIVO'

END-IF

Agora não existe dúvida.


END-EVALUATE

Fecha um EVALUATE.

EVALUATE WS-OPCAO

   WHEN 1
      DISPLAY 'CONSULTA'

   WHEN 2
      DISPLAY 'ALTERACAO'

END-EVALUATE

END-PERFORM

Fecha um PERFORM INLINE.

PERFORM UNTIL EOF = 'S'

   READ ARQCLI

END-PERFORM

END-READ

Fecha um READ.

READ ARQCLI

   AT END
      MOVE 'S' TO EOF

END-READ

END-WRITE

Fecha um WRITE.

WRITE REG-SAIDA

   INVALID KEY
      DISPLAY 'ERRO'

END-WRITE

END-REWRITE

Muito usado com VSAM.

REWRITE REG-CLIENTE

   INVALID KEY
      DISPLAY 'ERRO'

END-REWRITE

END-SEARCH

Usado em tabelas.

SEARCH WS-TABELA

   WHEN WS-CODIGO = WS-CHAVE
      DISPLAY 'ACHOU'

END-SEARCH

END-STRING

Usado em concatenação.

STRING

   WS-NOME
   WS-SOBRENOME

   INTO WS-NOME-COMP

END-STRING

END-UNSTRING

Usado para separar campos.

UNSTRING WS-LINHA

   DELIMITED BY ';'

   INTO WS-CAMPO1
        WS-CAMPO2

END-UNSTRING

END-COMPUTE

Fecha um COMPUTE.

COMPUTE WS-TOTAL =
        WS-A + WS-B

   ON SIZE ERROR
      DISPLAY 'ERRO'

END-COMPUTE

END-EXEC

Muito usado com:

  • DB2;

  • CICS;

  • IMS;

  • MQ.


Exemplo:

EXEC SQL

   SELECT NOME
     INTO :WS-NOME
     FROM CLIENTES

END-EXEC

Como funciona?

Visualmente:

COMANDO
   ↓
BLOCO
   ↓
END-COMANDO

Exemplo Completo

Sem terminadores:

IF A = 1
   IF B = 2
      DISPLAY 'OK'
ELSE
   DISPLAY 'ERRO'

Difícil de entender.


Com terminadores:

IF A = 1

   IF B = 2
      DISPLAY 'OK'
   ELSE
      DISPLAY 'ERRO'
   END-IF

END-IF

Muito mais claro.


Vantagens

Melhor legibilidade


Menos erros


Mais fácil manutenção


Menos ambiguidades


Facilita revisões de código


Programação Estruturada

Os terminadores de escopo foram um marco na evolução do COBOL estruturado.

Eles ajudaram a substituir o uso excessivo de:

GO TO

COBOL Moderno

Hoje praticamente todos os compiladores modernos recomendam:

END-IF
END-EVALUATE
END-PERFORM

em vez de depender apenas de pontos finais.


Curiosidades

1. Os primeiros programas COBOL não possuíam terminadores de escopo


2. Muitos sistemas antigos ainda utilizam apenas pontos finais


3. END-IF foi uma das maiores melhorias de legibilidade do COBOL


4. Grandes bancos exigem terminadores de escopo em seus padrões de desenvolvimento


Erros comuns de iniciantes

Esquecer END-IF


Esquecer END-EVALUATE


Misturar pontos finais com terminadores


Fechar blocos na ordem errada


Resumo rápido

ComandoTerminador
IFEND-IF
EVALUATEEND-EVALUATE
PERFORMEND-PERFORM
READEND-READ
WRITEEND-WRITE
REWRITEEND-REWRITE
SEARCHEND-SEARCH
STRINGEND-STRING
UNSTRINGEND-UNSTRING
COMPUTEEND-COMPUTE
EXECEND-EXEC

Conclusão

Os Terminadores de Escopo são palavras-chave que indicam explicitamente o final de comandos estruturados em COBOL. Eles aumentam a legibilidade, reduzem ambiguidades e são fundamentais para o desenvolvimento moderno de aplicações COBOL em ambientes Mainframe IBM Z, especialmente em sistemas que utilizam CICS, DB2, VSAM e processamento batch.


sábado, 10 de março de 2007

O que são os Comandos EXEC e END-EXEC no COBOL?

 

Bellacosa Mainframe e os comandos EXEC e END-EXEC no cobol

O que são os Comandos EXEC e END-EXEC no COBOL?

Os comandos EXEC e END-EXEC são utilizados para delimitar instruções que não pertencem ao COBOL puro, mas sim a outros subsistemas integrados ao programa.

Eles funcionam como uma espécie de:

"porta de comunicação" entre o COBOL e outros ambientes.

Os mais comuns são:

  • CICS

  • DB2

  • SQL

  • IMS

  • MQ Series (IBM MQ)


Sintaxe básica

EXEC comando
END-EXEC

Ou:

EXEC subsistema
     instruções
END-EXEC

Por que existem?

O compilador COBOL não entende diretamente comandos SQL, CICS ou MQ.

Por isso, um pré-compilador analisa tudo que estiver entre:

EXEC

e

END-EXEC

e converte para chamadas que o COBOL consegue executar.


Fluxo simplificado

Programa COBOL
       ↓
Pré-compilador
       ↓
CICS / DB2 / MQ
       ↓
Programa objeto

EXEC CICS

Uma das utilizações mais famosas.

Permite acessar o ambiente CICS.


Exemplo

EXEC CICS
     SEND
     TEXT('OLA CLIENTE')
END-EXEC

O que acontece?

O CICS envia uma mensagem para a tela do usuário.


Outro exemplo CICS

EXEC CICS
     RETURN
END-EXEC

Retorna o controle ao CICS.


EXEC SQL

Utilizado para acessar bancos de dados DB2.


Exemplo

EXEC SQL

    SELECT NOME
      INTO :WS-NOME
      FROM CLIENTES
     WHERE CPF = :WS-CPF

END-EXEC

O que acontece?

O DB2 executa o SELECT e retorna os dados para a variável COBOL.


Exemplo INSERT

EXEC SQL

    INSERT INTO CLIENTES
           (CPF,NOME)
    VALUES
           (:WS-CPF,
            :WS-NOME)

END-EXEC

Exemplo UPDATE

EXEC SQL

   UPDATE CLIENTES
      SET SALDO = :WS-SALDO
    WHERE CPF   = :WS-CPF

END-EXEC

Exemplo DELETE

EXEC SQL

   DELETE
     FROM CLIENTES
    WHERE CPF = :WS-CPF

END-EXEC

Host Variables

Observe os dois pontos:

:WS-NOME

Essas são:

Host Variables

Variáveis COBOL usadas pelo DB2.


EXEC SQL INCLUDE

Muito comum.

EXEC SQL
    INCLUDE SQLCA
END-EXEC

O que é SQLCA?

Área de comunicação entre:

COBOL
   ↔
DB2

Exemplo SQLCODE

IF SQLCODE = 0

Consulta realizada com sucesso.


EXEC IMS

Usado em aplicações IMS.


Exemplo:

EXEC DLI
     GU
END-EXEC

EXEC MQ

Utilizado para IBM MQ.


Exemplo

EXEC MQPUT
END-EXEC

ou

EXEC MQGET
END-EXEC

END-EXEC

Marca o fim do comando especial.


Exemplo

EXEC SQL
    COMMIT
END-EXEC

Sem END-EXEC o compilador não sabe onde termina a instrução.


Antigamente

Versões antigas utilizavam:

EXEC SQL
   SELECT ...

com ponto final.

Hoje o padrão é:

END-EXEC

Exemplo completo DB2

WORKING-STORAGE SECTION.

01 WS-NOME PIC X(30).

EXEC SQL
   INCLUDE SQLCA
END-EXEC.

PROCEDURE DIVISION.

EXEC SQL

   SELECT NOME
      INTO :WS-NOME
      FROM CLIENTES
     WHERE CPF = '12345678901'

END-EXEC

DISPLAY WS-NOME

Exemplo completo CICS

EXEC CICS
     RECEIVE MAP('TELA1')
END-EXEC

Recebe dados digitados pelo usuário.


EXEC CICS
     SEND MAP('TELA2')
END-EXEC

Envia dados para tela.


O que o compilador faz?

Durante a compilação:

EXEC SQL

não é executado diretamente.

Primeiro ocorre:

Pré-compilação DB2

Depois:

Compilação COBOL

Fluxo DB2

Fonte COBOL
     ↓
Pré-compilador SQL
     ↓
Fonte COBOL expandido
     ↓
Compilador COBOL
     ↓
Link Edit

Onde mais aparece?

CICS

EXEC CICS

DB2

EXEC SQL

IMS

EXEC DLI

MQ

EXEC MQ

Curiosidades

1. EXEC SQL é provavelmente a forma mais usada de EXEC no mundo Mainframe


2. Todo programa COBOL/DB2 passa por pré-compilação


3. EXEC CICS é a base das aplicações online bancárias


4. Milhões de transações por segundo utilizam EXEC CICS e EXEC SQL


Erros comuns de iniciantes

Esquecer END-EXEC


Não incluir SQLCA


Não declarar host variables


Confundir SQLCODE com RETURN-CODE


Resumo rápido

ComandoFunção
EXEC SQLAcesso DB2
EXEC CICSAcesso CICS
EXEC DLIAcesso IMS
EXEC MQAcesso IBM MQ
END-EXECFinaliza instrução
SQLCAComunicação DB2
SQLCODERetorno SQL

Conclusão

Os comandos EXEC e END-EXEC são delimitadores utilizados para integrar programas COBOL com subsistemas do Mainframe, como CICS, DB2, IMS e IBM MQ. Eles permitem que o COBOL execute comandos externos especializados, tornando possível criar aplicações online, acessar bancos de dados e integrar sistemas corporativos executados no ambiente IBM Z.


sexta-feira, 9 de março de 2007

O que é RETURN-CODE em COBOL?

 

Bellacosa Mainframe e o return-code no Cobol

O que é RETURN-CODE em COBOL?

O RETURN-CODE é uma variável especial utilizada para informar ao sistema operacional, ao JCL e aos schedulers o resultado da execução de um programa.

Em outras palavras:

é o código de retorno que o programa devolve ao z/OS quando termina.


Para que serve?

O RETURN-CODE informa se o programa:

  • executou com sucesso;

  • terminou com avisos;

  • encontrou erros;

  • deve interromper o fluxo do JOB.


Fluxo simplificado

PROGRAMA COBOL
       ↓
RETURN-CODE
       ↓
STEP JCL
       ↓
JES2
       ↓
Scheduler (IWS, Control-M, OPC)

Exemplo mais simples

MOVE 0 TO RETURN-CODE

Significa:

Execução OK

Valores mais comuns

Return CodeSignificado
0Sucesso
4Aviso
8Erro
12Erro grave
16Erro crítico

Exemplo

IF WS-ARQUIVO-VAZIO
   MOVE 4 TO RETURN-CODE
END-IF

Resultado:

Job terminou com Warning

Exemplo de erro

IF WS-ERRO-LEITURA
   MOVE 8 TO RETURN-CODE
END-IF

Onde o RETURN-CODE fica?

O compilador COBOL fornece automaticamente a variável especial:

RETURN-CODE

Não precisa ser declarada.


Exemplo completo

IDENTIFICATION DIVISION.
PROGRAM-ID. TESTE.

PROCEDURE DIVISION.

    DISPLAY 'PROCESSAMENTO OK'

    MOVE 0 TO RETURN-CODE

    GOBACK.

Como aparece no JCL?

Após o STEP terminar:

COND CODE 0000

ou

CC 0000

Exemplo com erro

MOVE 8 TO RETURN-CODE

No spool:

COND CODE 0008

Uso em Scheduler

Ferramentas como:

  • IBM IWS (Tivoli Workload Scheduler)

  • OPC

  • Control-M

  • CA-7

  • ESP

avaliam o Return Code.


Exemplo

RC = 0000

Próximo JOB é liberado.


RC = 0008

Fluxo interrompido.


Uso com COND no JCL

//STEP2 EXEC PGM=RELATORIO,
// COND=(8,LT)

Significa:

Se RC anterior < 8
execute o STEP

Uso com IF no JCL

Mais moderno.

// IF (STEP1.RC = 0) THEN
//STEP2 EXEC PGM=PROG2
// ENDIF

Exemplo prático

Processamento de clientes.

IF QTDE-CLIENTES = ZERO
   MOVE 4 TO RETURN-CODE
END-IF

Resultado:

Nenhum cliente processado

Mas sem ABEND.


Return Code não é ABEND

Muitos iniciantes confundem.


RETURN-CODE

Programa terminou normalmente.

RC=8

ABEND

Programa terminou anormalmente.

S0C7
S0C4
U4038

Comparação

SituaçãoResultado
MOVE 8 TO RETURN-CODETérmino normal
S0C7ABEND
S0C4ABEND
U0001ABEND usuário

RETURN-CODE em Subprogramas

Pode ser utilizado antes do:

GOBACK

Exemplo

IF ERRO
   MOVE 12 TO RETURN-CODE
END-IF

GOBACK

RETURN-CODE x GOBACK

MOVE 8 TO RETURN-CODE
GOBACK

O sistema recebe:

RC=8

RETURN-CODE x STOP RUN

Também funciona.

MOVE 0 TO RETURN-CODE
STOP RUN

Convenções corporativas

Muitas empresas adotam padrões:

RCSignificado
0OK
4Warning
8Erro funcional
12Erro grave
16Erro fatal

Exemplo bancário

EVALUATE TRUE

   WHEN ARQUIVO-VAZIO
      MOVE 4 TO RETURN-CODE

   WHEN REGISTRO-INVALIDO
      MOVE 8 TO RETURN-CODE

   WHEN ERRO-BANCO-DADOS
      MOVE 12 TO RETURN-CODE

END-EVALUATE

Como visualizar?

No SDSF:

ST

ou

H

Exemplo:

JOB12345 ENDED RC=0000

ou

JOB12345 ENDED RC=0008

Curiosidades

1. RETURN-CODE existe há décadas no COBOL


2. É fundamental para automação batch


3. Schedulers dependem fortemente dele


4. Grandes bancos possuem tabelas corporativas de RCs padronizados


Erros comuns de iniciantes

Esquecer de definir RETURN-CODE


Retornar sempre zero


Confundir RC com ABEND


Não documentar significado dos RCs


Resumo rápido

ComandoFunção
RETURN-CODECódigo de retorno
RC=0Sucesso
RC=4Aviso
RC=8Erro
RC=12Erro grave
RC=16Erro crítico
GOBACKRetorna ao chamador
STOP RUNFinaliza programa

Conclusão

O RETURN-CODE é o mecanismo utilizado pelos programas COBOL para informar ao z/OS, ao JES2, ao JCL e aos schedulers o resultado da execução. Ele é essencial para o controle de fluxos batch, automação corporativa e monitoramento de processos em ambientes Mainframe IBM Z.