Translate

domingo, 21 de junho de 2026

Natural x CICS BMS para Desenvolvedores COBOL

 

Bellacosa Mainframe e uma breve comparação entre Natural e CICS BMS

☕ Um Café no Bellacosa Mainframe

Natural x CICS BMS para Desenvolvedores COBOL

Entendendo duas filosofias diferentes de construir aplicações Online no Mainframe

Salve jovem Padawan.

Uma das dúvidas mais comuns de quem começa no mundo Mainframe é:

Se eu sei desenvolver online em Natural, já sei desenvolver em CICS?

A resposta curta é:

Não.

A resposta longa é:

Você conhece o objetivo, mas não conhece o mecanismo.

Natural e CICS possuem filosofias completamente diferentes para construir aplicações online.


A grande diferença

Natural é uma plataforma completa.

CICS é um monitor transacional.

Podemos pensar da seguinte maneira:

NaturalCICS
FrameworkMonitor Transacional
IDE integradaFerramentas separadas
Tela automáticaBMS
Segurança integradaRACF/CICS
Navegação nativaProgramada
Dicionário PredictCopybooks
Estado mantido pelo NaturalCOMMAREA
Desenvolvimento RADDesenvolvimento explícito

Arquitetura Natural

Em Natural normalmente temos:

Usuário

↓

Terminal 3270

↓

Natural Runtime

↓

Programa Natural

↓

Predict

↓

Adabas

Natural faz praticamente tudo.

O desenvolvedor apenas escreve:

INPUT

'CPF' CPF

'Nome' NOME


END-INPUT

Pronto.

Tela criada.


Arquitetura CICS

No CICS:

Usuário

↓

3270

↓

BMS

↓

MAPSET

↓

COBOL

↓

COMMAREA

↓

DB2


Tudo é responsabilidade do desenvolvedor.


Natural é quase um framework

Natural lembra.

Django

Rails

PowerBuilder

Oracle Forms


Exemplo Natural


INPUT USING MAP 'CLI001'

END-INPUT



Natural já sabe.

Mapa.

Campos.

Validação.

Cursor.

Ajuda.

PF Keys.

Tudo praticamente pronto.


CICS é uma caixa de ferramentas

CICS fornece:

SEND

RECEIVE

LINK

RETURN

HANDLE

Mas você constrói.


Exemplo


SEND MAP


RECEIVE MAP


VALIDA


CONSULTA DB2


SEND


RETURN



Predict

Aqui está uma grande diferença.


Natural usa Predict.

Predict é um catálogo.

Um dicionário corporativo.


Armazena.

Campos

Programas

Mapas

Arquivos

Views

Documentação

Relacionamentos


Exemplo


CLIENTE


CPF


NOME


ENDERECO


LIMITE




Natural gera automaticamente.

Campos.

Mapas.

Views.

Documentação.


Exemplo


1 CPF

1 NOME

1 CIDADE


Tudo centralizado.


CICS não possui Predict

No CICS.

Criamos.

Copybooks.

Layouts.

BMS.

Manualmente.


Exemplo


COPY CLIENTE.


COPY CLIMAP.




Construção de Menus

Natural

Muito simples.


MENU

1 Consulta

2 Inclusao

3 Alteracao



CICS

Criamos.

MAPSET.

COBOL.

Fluxo.

PF Keys.


Exemplo

MENU01


1 Consultar


2 Incluir


3 Alterar



PF3



Hierarquia de programas

Natural

Quase sempre.

Programa chama programa.



MENU


↓

CLIENTE


↓

CONSULTA


↓

ALTERA


Natural controla.


No CICS.

Mais cuidado.


Podemos usar.

LINK

XCTL

START


LINK

Retorna.


EXEC CICS LINK

PROGRAM('CLI002')

END-EXEC



XCTL

Não retorna.



EXEC CICS XCTL

PROGRAM('MENU')


END-EXEC



Como segregar funções

Boa prática.


MENU

Só navegação.


CLIENTE

Negócio.


DBCLI

DB2.


TELA

BMS.


UTIL

Rotinas.


Exemplo



MENU0001



CLI0001



DBCLI01



UTILCPF



MSGERRO




Segurança

Natural

Muito integrada.


Natural Security.

NSC.

Predict.

Menus.

Perfis.


Exemplo

Usuário João.

Pode.

Consultar.

Não alterar.


Natural faz.


No CICS.

Usamos.

RACF.


Transação.

Programa.

Arquivo.

Fila.

TSQ.

TDQ.


Exemplo


CLI1


CONS



ALT1


ADM1




RACF controla.


Navegação

Natural

Automática.


ENTER.

PF3.

PF12.


Tudo tratado.


CICS.

Manual.


Precisamos verificar.


COPY DFHAID





EVALUATE EIBAID



WHEN DFHPF3


PERFORM SAIR



WHEN DFHPF5


PERFORM REFRESH


END-EVALUATE



BMS

Natural

Mapas do Natural.


CICS

BMS.


MAP

Tela.


MAPSET

Conjunto de telas.


Exemplo



LOGIN



MENU



CLIENTE



CONSULTA



HELP




Mapset.


DFHMSD




Tela.


DFHMDI




Campo.


DFHMDF




PF Keys

Muito importante.


PF1

Ajuda


PF3

Sair


PF5

Atualizar


PF7

Anterior


PF8

Próximo


PF12

Cancelar


No terminal 3270

Emuladores modernos.

PCOMM.

Rocket.

Vista.

x3270.


Teclas mapeadas.


Exemplo.

F3

PF3


F7

PF7


Shift+F12

PF24


Clear

PA1


Attention

PA2


SYSREQ

PA3


Comportamento curioso

No 3270.

ENTER.

Não é.

Carriage Return.


É um.

AID.

Attention Identifier.


CICS recebe.


EIBAID



Natural trata.

Automaticamente.


Uma analogia moderna

Natural é parecido com:

Oracle Forms

PowerBuilder

GeneXus


CICS é parecido com.

HTML

CSS

Javascript

Backend Java


Natural oferece produtividade.

CICS oferece controle.


O que é melhor?

Depende.

Natural é excelente para:

Desenvolvimento rápido.

CRUD.

Adabas.


CICS é excelente para:

Grandes volumes.

Flexibilidade.

Integração.

APIs.

DB2.

MQ.


Minha recomendação para um COBOL Júnior

Aprenda primeiro:

  • BMS

  • SEND/RECEIVE

  • DFHAID

  • COMMAREA

  • Pseudo-conversação

  • LINK/XCTL

  • TSQ

  • CEDF

Depois estude:

  • Natural

  • Predict

  • Adabas

  • Natural Security

Quando você conhecer os dois mundos, perceberá algo interessante:

Natural tenta esconder a complexidade do CICS.

CICS mostra explicitamente como as engrenagens funcionam.

E, para quem deseja realmente entender os bastidores das aplicações bancárias e seguradoras do IBM Z, estudar CICS/BMS costuma ser uma excelente forma de aprender como um sistema transacional corporativo é construído desde a fundação.

sábado, 20 de junho de 2026

☕ LAB - CICS BMS para Padawans

 

Bellacosa Mainframe laboratorio pratico CICS BMS

☕ LAB Bellacosa Mainframe

CICS BMS para Padawans

Bem-vindo ao Laboratório Bellacosa Mainframe – CICS BMS para Padawans. Este conjunto de exercícios foi projetado para conduzir um desenvolvedor COBOL iniciante por uma jornada gradual de aprendizado, partindo da criação do primeiro MAPSET BMS até a construção de uma pequena aplicação pseudo-conversacional semelhante às encontradas em bancos, seguradoras e grandes empresas. 

O objetivo não é apenas aprender a sintaxe das macros DFHMSD, DFHMDI e DFHMDF, mas desenvolver a forma de pensar utilizada por desenvolvedores CICS experientes.

Ao longo dos laboratórios, o aluno será estimulado a raciocinar em termos de interface, estado, fluxo de navegação, persistência temporária de informações e interação entre usuário e aplicação. Inicialmente, o foco será compreender como uma tela 3270 é construída, como os campos são definidos, protegidos ou liberados para edição e como o BMS abstrai as características do terminal. 

Em seguida, serão introduzidos os conceitos de SEND MAP, RECEIVE MAP, EIBAID, DFHAID, posicionamento dinâmico de cursor e tratamento de teclas funcionais.

Nos desafios mais avançados, espera-se que o aluno seja capaz de projetar uma aplicação utilizando pseudo-conversação, COMMAREA, paginação, mensagens de erro e validações, adotando uma abordagem semelhante à empregada em sistemas corporativos reais. 

Mais importante do que memorizar comandos é desenvolver o raciocínio arquitetural necessário para compreender como aplicações CICS foram concebidas, evoluíram ao longo das décadas e continuam sustentando milhões de transações críticas diariamente no ecossistema IBM Z.

10 Laboratórios Práticos de BMS


LAB01 – Meu Primeiro BMS

Objetivo:

Criar o primeiro MAPSET.

Resultado esperado:

HELLO BMS

PF3=Sair

Atividades

Criar um DFHMSD

Criar um DFHMDI

Criar dois DFHMDF

Gerar Physical Map

Gerar Symbolic Map


Solução

HELLO DFHMSD TYPE=&SYSPARM,
       LANG=COBOL,
       MODE=OUT,
       TIOAPFX=YES

TELA1 DFHMDI SIZE=(24,80)

      DFHMDF POS=(5,25),
              LENGTH=10,
              INITIAL='HELLO BMS',
              ATTRB=(PROT,BRT)

      DFHMDF POS=(22,2),
              LENGTH=8,
              INITIAL='PF3=Sair',
              ATTRB=(ASKIP)

      DFHMSD TYPE=FINAL

END

LAB02 – Criando Campo de Entrada

Objetivo

Campo editável.


Resultado

Nome :

______________

Atividades

Adicionar campo input

Posicionar cursor

Testar MDT


Solução

NOME DFHMDF POS=(5,15),
              LENGTH=30,
              ATTRB=(UNPROT,IC)

LAB03 – Campos Protegidos

Objetivo

Criar labels.


Resultado

CPF:


Cidade:


Email:

Solução

DFHMDF POS=(1,1),
        LENGTH=4,
        INITIAL='CPF:',
        ATTRB=(ASKIP)

LAB04 – Tela Cadastro Cliente

Objetivo

Montar tela completa.


Resultado

Codigo:


Nome:


CPF:


Cidade:


Telefone:



PF3


PF5


ENTER

Atividades

Criar 5 campos

Criar mensagens

Criar PF Keys


Solução

CODIGO DFHMDF
        POS=(5,15),
        LENGTH=6,
        ATTRB=(UNPROT,IC)



CPF DFHMDF
        POS=(7,15),
        LENGTH=11,
        ATTRB=(UNPROT,NUM)

LAB05 – SEND MAP

Objetivo

Mostrar tela.


Atividades

Criar programa COBOL

Executar SEND


Solução

EXEC CICS SEND MAP

MAP('TELA01')

MAPSET('CLIMAP')

ERASE

FREEKB

END-EXEC.

LAB06 – RECEIVE MAP

Objetivo

Receber dados.


Atividades

Capturar nome.

Capturar CPF.


Solução

EXEC CICS RECEIVE

MAP('TELA01')

MAPSET('CLIMAP')

INTO(TELA01I)

END-EXEC.

LAB07 – Tratando ENTER e PF3

Objetivo

Usar DFHAID.


Atividades

Copy DFHAID

Verificar tecla


Solução

COPY DFHAID.



EVALUATE EIBAID


WHEN DFHENTER

PERFORM PROCESSA



WHEN DFHPF3

PERFORM SAIR



END-EVALUATE

LAB08 – Cursor Dinâmico

Objetivo

Cursor em campo inválido.


Exemplo

CPF inválido


Cursor volta CPF

Solução

MOVE -1 TO CPFL



EXEC CICS SEND

CURSOR

END-EXEC

LAB09 – Pseudo Conversação

Objetivo

Implementar COMMAREA.


Atividades

Salvar contexto

Retornar transação


Solução

EXEC CICS RETURN


TRANSID('CLI1')


COMMAREA(WS-COMM)


LENGTH(100)


END-EXEC.

Primeira vez

IF EIBCALEN = ZERO

PERFORM PRIMEIRA-VEZ

END-IF.

LAB10 – Mini Sistema Bancário

Objetivo

Criar aplicação real.


Funcionalidades

Consultar Cliente

Cadastrar

Alterar

Excluir

Paginar

PF7

PF8

PF3


Tela


==================================

CLIENTES


Codigo


Nome


CPF



PF3=Sair

PF5=Limpar

PF7=Anterior

PF8=Próximo


==================================


Desafio Extra

Implementar:

MAPFAIL

HANDLE CONDITION

HANDLE AID

FSET

FRSET

DATAONLY

MAPONLY


Gabarito Esperado

Ao final dos 10 labs o aluno deverá dominar:

✅ DFHMSD

✅ DFHMDI

✅ DFHMDF

✅ SEND MAP

✅ RECEIVE MAP

✅ DFHAID

✅ EIBAID

✅ CURSOR

✅ MDT

✅ FSET

✅ COMMAREA

✅ Pseudo-conversação

✅ CEDA

✅ CEMT

✅ INSTALL

✅ BMS Physical

✅ Symbolic Maps


🏆 Desafio Bellacosa Mainframe (Boss Fight)

Construa uma aplicação semelhante a um sistema bancário contendo:

  • Login

  • Menu Principal

  • Consulta Cliente

  • Inclusão

  • Alteração

  • Exclusão

  • Paginação PF7/PF8

  • Help PF1

  • Mensagens de erro

  • COMMAREA

  • TSQ para paginação

  • DB2 (simulado)

  • CEDF para debug

Se conseguir completar este laboratório, você estará muito próximo do nível esperado de um Desenvolvedor COBOL/CICS Júnior pronto para atuar em projetos corporativos IBM Z.


sexta-feira, 19 de junho de 2026

🚀 CICS BMS para Padawans: Do Primeiro MAP ao Mundo Real dos Sistemas Bancários

Selecione um artigo ☕