Translate

sexta-feira, 3 de abril de 2020

CICS BMS para Desenvolvedores COBOL – Parte 1

 

Bellacosa Mainframe mini curso de cics bms

☕ Um Café no Bellacosa Mainframe

CICS BMS para Desenvolvedores COBOL – Parte 1

Do Terminal 3270 ao Primeiro Hello World

Salve, jovem Padawan!

Se você está começando sua jornada no universo IBM Z e já ouviu alguém falar frases misteriosas como:

"Precisamos alterar o MAPSET."

"O cursor está parando no campo errado."

"O MDT não está ligado."

"Faz um SEND MAP DATAONLY."

E ficou pensando:

"Que feitiçaria mainframe é essa?"

Pode ficar tranquilo.

Neste artigo vamos iniciar uma jornada pelo BMS (Basic Mapping Support) do CICS. O objetivo é apresentar o assunto pensando em um desenvolvedor COBOL Júnior, explicando desde a origem do BMS até a construção do primeiro mapa funcionando em uma aplicação CICS.

Pegue seu café, abra seu ISPF, reserve uma aba do SDSF e venha comigo.


Um pouco de história

Voltemos algumas décadas.

Estamos nos anos 70.

Não existia navegador.

Não existia JavaScript.

Não existia React.

Não existia Angular.

Nem mesmo Windows.

O usuário corporativo acessava aplicações utilizando terminais burros conectados ao mainframe.

Entre eles destacavam-se:

  • IBM 3270

  • IBM 3278

  • IBM 3279

  • IBM 3287

A tela típica possuía:

24 linhas

80 colunas

Algo parecido com isto:

----------------------------------------
 SISTEMA DE CLIENTES

 Codigo....: _____

 Nome......: _____________________

 Cidade....: _____________________

 PF3=Sair    PF5=Atualizar

----------------------------------------

A grande questão era:

Como desenhar telas sem colocar coordenadas dentro do programa COBOL?

A IBM criou então o BMS.

Basic Mapping Support.


O nascimento do CICS

CICS significa:

Customer Information Control System

O projeto surgiu em 1968.

Originalmente desenvolvido pela IBM para atender grandes empresas que precisavam de processamento transacional online.

Enquanto o Batch processava milhares de registros durante a madrugada...

O CICS permitia:

  • consultar saldo;

  • emitir passagens;

  • cadastrar clientes;

  • aprovar empréstimos;

  • consultar apólices;

  • efetuar reservas.

Tudo em tempo real.

Hoje ainda existem milhões de transações CICS sendo executadas diariamente.


O que é BMS ?

BMS significa:

Basic Mapping Support

Ele é uma camada intermediária entre:

Programa COBOL

e

Terminal 3270.

Ele esconde detalhes do dispositivo.

O desenvolvedor não precisa conhecer:

Posição física do cursor

Bytes de atributo

Intensidade

Cor

Protocolo 3270

Ele apenas manipula variáveis COBOL.


Arquitetura do BMS

Programa COBOL
        │
        │
        ▼
+----------------+
| Symbolic Map   |
+----------------+
        │
        ▼
+----------------+
|      BMS       |
+----------------+
        │
        ▼
+----------------+
| Physical Map   |
+----------------+
        │
        ▼
Terminal 3270

Uma analogia moderna

Imagine:

HTML

CSS

JavaScript

O BMS faz papel semelhante.

Mundo WebMundo CICS
HTMLPhysical Map
JavascriptCOBOL
BrowserTerminal 3270
DOMSymbolic Map
FrameworkBMS

O que é um MAP ?

MAP é uma tela.

Exemplo:

Tela Login

Tela Consulta

Tela Menu

Tela Inclusão

Cada tela é um MAP.


Exemplo

LOGIN

Usuário:


Senha:


ENTER=Entrar
PF3=Sair

Outro MAP

MENU

1 Consultar

2 Alterar

3 Incluir


PF3 Sair

O que é um MAPSET ?

Mapset é um conjunto de mapas.

Pode possuir:

LOGIN

MENU

CONSULTA

ALTERAÇÃO

INCLUSÃO

CONFIRMAÇÃO

Tudo agrupado.

Exemplo:

SISTCLI DFHMSD

Dentro dele

LOGIN DFHMDI


MENU DFHMDI


CONSUL DFHMDI


ALTERA DFHMDI

Physical Map

É um módulo executável.

Gerado pelo assembler.

Fica em:

DFHRPL

Exemplo

CLIENTES

O CICS carrega automaticamente.


Symbolic Map

Copybook COBOL.

Vai para:

COPYLIB

SYSLIB

Exemplo

CLIENTEM

As três macros do BMS

Existem apenas três macros principais.

DFHMSD

Mapset

DFHMDI

Mapa

DFHMDF

Campo


DFHMSD

É o cabeçalho.

Exemplo

CLIENTE DFHMSD TYPE=&SYSPARM,
                 LANG=COBOL,
                 MODE=INOUT,
                 STORAGE=AUTO,
                 TIOAPFX=YES,
                 CTRL=(FREEKB)

TYPE

MAP

DSECT

FINAL


LANG

COBOL

PLI

ASM


MODE

IN

OUT

INOUT


STORAGE

AUTO

BASE=MAP-IOAREA


TIOAPFX

Recomendado:

TIOAPFX=YES

Reserva 12 bytes para BMS.


DFHMDI

Define uma tela.

Exemplo

HELLOMAP DFHMDI
         SIZE=(24,80)

DFHMDF

Define campo.

Exemplo

MSG DFHMDF POS=(5,10),
            LENGTH=20,
            ATTRB=PROT,
            INITIAL='HELLO WORLD'

Nosso primeiro Hello World

Chegou a hora.

Fonte BMS


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


TELA1    DFHMDI SIZE=(24,80)


         DFHMDF POS=(1,25),
                 LENGTH=30,
                 ATTRB=(PROT,BRT),
                 INITIAL='HELLO WORLD BMS'


         DFHMDF POS=(22,2),
                 LENGTH=40,
                 ATTRB=(ASKIP),
                 INITIAL='PF3 SAIR'


         DFHMSD TYPE=FINAL


END




O que este mapa faz?

Exibe:



            HELLO WORLD BMS




PF3 SAIR



Usuário não consegue alterar nada.

Todos campos são protegidos.


Geração do Symbolic Map

O assembler cria um copybook.

Exemplo

01 TELA1O.



05 FILLER PIC X(30).




01 TELA1I.



05 FILLER PIC X(30).


Programa COBOL

Nosso primeiro programa.


IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.


DATA DIVISION.


WORKING-STORAGE SECTION.


COPY HELLO.



PROCEDURE DIVISION.



EXEC CICS SEND

MAP('TELA1')

MAPSET('HELLO')

ERASE

FREEKB

END-EXEC.



EXEC CICS RETURN
END-EXEC.




O que acontece internamente?

Fluxo:



COBOL


SEND MAP


↓

BMS


↓

Physical Map


↓

Terminal


↓

Usuário visualiza


HELLO WORLD




A magia do BMS

Observe.

No COBOL não existe:

Linha 1

Coluna 25

Brilho

Atributo

3270

Bytes hexadecimais

Tudo está encapsulado.

O desenvolvedor apenas escreve:

SEND MAP

E o CICS faz o restante.


Curiosidade Bellacosa Mainframe

Muitos sistemas bancários escritos entre 1980 e 1995 continuam utilizando exatamente a mesma tecnologia apresentada neste artigo.

Alguns processam milhões de transações por dia.

Muitos deles executam em máquinas IBM z16 e z17, utilizando telas BMS desenvolvidas há mais de 30 anos.

É bastante comum encontrar mapas criados em 1987, recompilados diversas vezes ao longo das décadas, ainda em plena operação em seguradoras, bancos, empresas aéreas e grandes varejistas.

E isso talvez seja uma das maiores demonstrações da longevidade e da estabilidade da plataforma IBM Z.


Continua...

Na Parte 2 veremos:

✓ Compilação passo a passo do BMS

✓ JCL de Assembly

✓ Geração do Physical Map

✓ Geração do Symbolic Map

✓ Linkedit

✓ Cadastro via CEDA

✓ Uso do INSTALL

✓ Comandos CEMT

✓ SEND MAP

✓ RECEIVE MAP

✓ DFHEIBLK

✓ DFHAID

✓ Primeira pseudo-conversação CICS

Sem comentários:

Enviar um comentário