| Bellacosa Mainframe apresenta a Parte II do mini curso CICS BMS |
☕ Um Café no Bellacosa Mainframe
CICS BMS para Desenvolvedores COBOL – Parte 2
Da Codificação do MAPSET até a Instalação no CICS
"No primeiro artigo aprendemos a desenhar nosso primeiro mapa. Agora chegou a hora de colocá-lo em produção dentro do CICS."
Pegue seu café, abra o SDSF, reserve uma aba do JESMSGLG e vamos continuar nossa jornada.
O que produz um MAPSET?
Muitos desenvolvedores iniciantes acreditam que um mapa BMS gera apenas uma tela.
Na verdade ele produz dois artefatos distintos.
Mapa Físico
MAPSET Source
│
Assembler
│
▼
Physical Map
│
DFHRPL
Exemplo
CLIENTES
É utilizado pelo CICS.
Mapa Simbólico
MAPSET Source
│
Assembler
│
SYSPUNCH
│
▼
Symbolic Map
│
COPYLIB
Exemplo
CLIENTEM
Será utilizado pelo COBOL.
Utilizando &SYSPARM
Muito elegante.
Ao invés de manter dois fontes.
Errado
TYPE=MAP
TYPE=DSECT
Correto
TYPE=&SYSPARM
Assembly
Mapa físico
PARM='MAP'
Mapa simbólico
PARM='DSECT'
Compilando um BMS
Etapa 1
Assembler
Etapa 2
Linkedit
Etapa 3
Instalação CICS
Exemplo JCL
Symbolic
//ASM EXEC PGM=ASMA90,
// PARM='OBJECT,NODECK'
//SYSIN DD DSN=USER.BMS(CLIENTE)
//SYSPUNCH DD DSN=USER.COPYLIB(CLIENTE)
Physical
//ASM EXEC PGM=ASMA90
//SYSLMOD DD
DSN=CICS.LOAD(CLIENTE)
Linkedit
//LKED EXEC PGM=IEWL
//SYSLMOD DD
DSN=CICS.LOAD(CLIENTE)
Onde fica cada objeto?
| Objeto | Biblioteca |
|---|---|
| Physical Map | DFHRPL |
| Programa COBOL | DFHRPL |
| Symbolic Map | COPYLIB |
| JCL | PROCLIB |
| BMS Fonte | SOURCELIB |
CEDA
Definir recursos.
Menu clássico.
CEDA DEF MAPSET(CLIENTE)
Exemplo
CEDA DEF MAPSET(CLIENTE)
GROUP(BANCO)
DESCRIPTION(Clientes)
INSTALL
Após definir.
Necessário instalar.
CEDA INSTALL GROUP(BANCO)
ou
CEDA INSTALL MAPSET(CLIENTE)
Verificando
Com CEMT
CEMT INQ MAPSET(CLIENTE)
Resultado
Enabled
Installed
CEMT
Comando preferido dos administradores.
Consultar
CEMT I MAPSET
Desabilitar
CEMT SET MAPSET(CLIENTE)
DISABLED
Habilitar
CEMT SET MAPSET(CLIENTE)
ENABLED
Nosso primeiro RECEIVE
Programa envia.
Usuário digita.
Programa recebe.
EXEC CICS RECEIVE
MAP('TELA01')
MAPSET('CLIENTE')
INTO(TELA01I)
END-EXEC
O EIB
Executive Interface Block
Equivale ao SQLCA.
DB2
SQLCA
CICS
EIB
DFHEIBLK
Copy automático.
Não precisa incluir.
Campos úteis.
EIBTRNID
Transação.
CLI1
EIBTRMID
Terminal.
A123
EIBTASKN
Task atual.
EIBCALEN
Comprimento da COMMAREA.
Muito importante.
EIBAID
Tecla pressionada.
DFHAID
Copybook.
COPY DFHAID.
ENTER
DFHENTER
PF3
DFHPF3
PF5
DFHPF5
PF7
DFHPF7
PF8
DFHPF8
CLEAR
DFHCLEAR
Tratando teclas
EVALUATE EIBAID
WHEN DFHENTER
PERFORM PROCESSA
WHEN DFHPF3
PERFORM SAIR
WHEN DFHPF5
PERFORM REFRESH
WHEN DFHPF7
PERFORM PAGEUP
WHEN DFHPF8
PERFORM PAGEDOWN
WHEN OTHER
PERFORM ERRO
END-EVALUATE
HANDLE AID
Muito elegante.
Instala um roteador.
EXEC CICS HANDLE AID
DFHENTER(PROC1)
DFHPF3(PROC2)
DFHPF7(PROC3)
DFHPF8(PROC4)
ANYKEY(PROC5)
END-EXEC
Pseudo Conversação
Um dos conceitos mais importantes do CICS.
Não mantemos programa residente.
Fluxo:
Usuário
↓
EXECUTA
↓
PROGRAMA
↓
SEND MAP
↓
RETURN
TRANSID
COMMAREA
↓
Task termina
==================
Usuário ENTER
==================
Nova Task
↓
RECEIVE
↓
PROCESSA
↓
SEND
↓
RETURN
EIBCALEN
Primeira execução?
Ou retorno?
IF EIBCALEN = ZERO
PERFORM PRIMEIRA-VEZ
ELSE
PERFORM RETORNO
END-IF
Primeira pseudo-conversação
IF EIBCALEN = ZERO
PERFORM MONTA-TELA
ELSE
PERFORM PROCESSA
END-IF
EXEC CICS RETURN
TRANSID('CLI1')
COMMAREA(WS-COMM)
LENGTH(100)
END-EXEC
Curiosidades Bellacosa Mainframe
Durante os anos 80 e 90 era comum encontrar MAPSETs contendo 40 ou 50 telas.
Muitos bancos utilizavam convenções curiosas:
CLI001
CLI002
CLI003
CLI999
Algumas equipes chamavam a última tela de erro de:
TELAMORTE
ABEND01
SOC4MAP
LASTMAP
Easter Egg Mainframe
Pouca gente sabe, mas muitos desenvolvedores antigos escondiam mensagens em campos DRK (Dark).
Exemplo:
DFHMDF POS=(24,1),
LENGTH=20,
ATTRB=(DRK,PROT),
INITIAL='BELLACOSA RULES'
O usuário nunca via.
Mas bastava descarregar a TIOA em um dump IPCS para encontrar a mensagem.
Continua na Parte 3
Na próxima etapa construiremos um Sistema de Cadastro de Clientes completo, contendo:
✔ Cadastro, Consulta e Alteração;
✔ Campos protegidos e desbloqueados;
✔ Cursor dinâmico;
✔ FSET, MDT e FRSET;
✔ Mensagens de erro;
✔ PF3, PF5, PF7 e PF8;
✔ Múltiplos mapas no mesmo MAPSET;
✔ Fluxograma completo de navegação;
✔ Troubleshooting de MAPFAIL, INVREQ, LENGERR e ASRA;
✔ Curiosidades sobre SDF II, 3279 colorido e a evolução do BMS até o CICS TS 6.x.
Sem comentários:
Enviar um comentário