| Bellacosa Mainframe e o json no cobol parte II |
JSON em COBOL no IBM Z: O Holocron das APIs Modernas
Parte 2 – JSON PARSE
Quando o Padawan Aprende a Transformar Texto em Estruturas COBOL
Por Bellacosa Mainframe
"JSON é apenas texto. O verdadeiro poder está em fazer COBOL compreender esse texto como se fosse uma estrutura nativa do IBM Z."
Mestre Bellacosa Sysprog Jedi
Introdução
Na Parte 1, o Padawan descobriu algo surpreendente.
COBOL moderno fala JSON.
Aprendemos:
JSON GENERATE
UTF-8
CCSID
Enterprise COBOL 6.x
APIs REST
JSON em memória
Segurança básica
Agora chegamos ao momento em que o programa COBOL deixa de apenas produzir JSON.
Ele começa a entender JSON.
E isso acontece através de uma instrução quase mágica.
JSON PARSE
O que é JSON PARSE?
JSON PARSE é o tradutor universal.
Ele recebe.
Texto.
Transforma.
Em estruturas COBOL.
Visualmente.
JSON
↓
JSON PARSE
↓
WORKING STORAGE
↓
Programa COBOL
Exemplo.
Recebemos.
{
"id":100,
"nome":"Bellacosa",
"idade":52
}
COBOL deseja.
01 CLIENTE.
05 ID.
PIC 9(5).
05 NOME.
PIC X(30).
05 IDADE.
PIC 999.
JSON PARSE faz isso.
Automaticamente.
Quando surgiu?
IBM introduziu.
JSON PARSE
Enterprise COBOL
Version 6.
Mais utilizado hoje.
6.3
6.4
6.5
Mudou completamente.
Integrações.
Primeiro programa JSON PARSE
Passo 1
Estrutura COBOL
01 WS-CLIENTE.
05 WS-ID.
PIC 9(5).
05 WS-NOME.
PIC X(30).
05 WS-IDADE.
PIC 999.
Passo 2
Buffer JSON
01 WS-JSON.
PIC X(500).
Passo 3
Popular
MOVE
'{"id":100,
"nome":"Bellacosa",
"idade":52}'
TO WS-JSON
Passo 4
Parse
JSON PARSE
WS-JSON
INTO WS-CLIENTE
Passo 5
Display
DISPLAY WS-ID.
DISPLAY WS-NOME.
DISPLAY WS-IDADE.
Resultado.
100
Bellacosa
52
Pronto.
JSON virou COBOL.
O que acontece internamente?
Compilador cria.
Parser interno.
Percorre.
Caractere.
Por caractere.
Reconhece.
Chaves.
Aspas.
Números.
Vetores.
Mapeia.
Campos.
Visualmente.
{
"id"
100
}
↓
COBOL
ID=100
Como funciona na memória?
JSON continua sendo texto.
Exemplo.
Buffer
500 bytes
Parser lê.
Move dados.
Para.
Working Storage.
Resultado.
WS-ID
100
WS-NOME
Bellacosa
Sem ponteiros.
Sem árvore.
Sem DOM.
Muito eficiente.
Objetos Aninhados
JSON suporta.
Estruturas.
Dentro.
De estruturas.
Exemplo.
{
"cliente":{
"id":1,
"nome":"Bellacosa"
}
}
COBOL.
01 CLIENTE.
05 DADOS.
10 ID.
10 NOME.
Muito elegante.
Arrays
Chegamos.
Ao lado divertido.
JSON.
{
"telefones":[
"1111",
"2222"
]
}
COBOL.
05 TELEFONES.
10 TEL OCCURS 10.
15 NUMERO.
PIC X(20).
Parser.
Preenche.
COUNT IN
Muito útil.
Exemplo.
JSON PARSE
WS-JSON
INTO WS-DADOS
COUNT IN WS-CONTADOR
Retorna.
Quantidade.
Itens.
Excelente.
Para.
Arrays.
ON EXCEPTION
Fundamental.
Nunca esquecer.
Exemplo.
JSON PARSE
WS-JSON
INTO WS-CLI
ON EXCEPTION
DISPLAY 'ERRO'
Padawan.
Sempre use.
Exemplo inválido
JSON.
{
"id":100
"nome":"Bellacosa"
Aspa.
Faltando.
Parser.
Falha.
ON EXCEPTION.
Executado.
JSON Malicioso
Poucos falam.
Mas existe.
Payload.
Gigante.
Exemplo.
50 MB.
Consome.
CPU.
Memória.
Tempo.
DoS.
Negação.
Serviço.
Boa prática
Validar.
Tamanho.
Exemplo.
IF WS-LEN > 100000
DISPLAY 'ERRO'
Muito recomendado.
Nomes diferentes
JSON.
Pode vir.
{
"customer_name":"Bellacosa"
}
COBOL.
05 WS-NOME.
Problema.
Precisamos.
Mapear.
Enterprise COBOL possui.
NAME OF.
SUPPRESS.
Falaremos.
Parte 3.
UTF8
Grande inimigo.
JSON.
UTF8.
COBOL.
EBCDIC.
José.
Pode quebrar.
Ç.
Ã.
É.
Atenção.
Sempre.
JSON NULL
JSON.
{
"nome":null
}
COBOL.
Não possui.
Null textual.
Precisamos.
Tratar.
Muito importante.
Performance
Excelente.
JSON PARSE.
É compilado.
Muito rápido.
Melhor.
Que parser.
Manual.
Evite.
UNSTRING
INSPECT
STRING
Desnecessário.
JSON PARSE.
Resolve.
Curiosidades
Muitos bancos.
Recebem.
Milhões.
JSON.
Por dia.
Aplicativos.
PIX.
Cartão.
Open Finance.
Tudo passa.
Por.
JSON.
E em muitos casos.
Existe.
COBOL.
No fim.
Da cadeia.
Debug
Exemplo.
DISPLAY WS-JSON
Muito útil.
Ou.
IBM Debug Tool.
Fault Analyzer.
Dump.
Quando usar?
Excelente.
REST
MQ
Kafka
zOS Connect
Mobile
Open Banking
PIX
Cloud
Quando evitar?
Arquivos internos.
VSAM.
Relatórios.
Batch tradicional.
Bellacosa Best Practices
Sempre
Use ON EXCEPTION
Sempre
Validar tamanho
Sempre
Testar UTF8
Sempre
Documentar JSON
Sempre
Versionar APIs
O Conselho do Mestre Bellacosa
JSON PARSE é provavelmente uma das maiores evoluções já incorporadas ao Enterprise COBOL.
Ele permite que um programa escrito há vinte ou trinta anos compreenda payloads produzidos por smartphones, microsserviços, plataformas OpenShift e aplicações espalhadas pela Internet.
O jovem Padawan deve perceber uma verdade importante.
JSON continua sendo apenas texto.
Mas JSON PARSE transforma esse texto em algo que COBOL entende profundamente.
Estruturas.
Campos.
Vetores.
Níveis.
OCCURS.
Variáveis.
E talvez essa seja a maior beleza do IBM Z moderno.
Ele não exige que o desenvolvedor abandone décadas de conhecimento.
Ele apenas oferece novas ferramentas.
E diz:
Continue programando em COBOL.
Continue usando seus níveis 01, 05 e 10.
Continue confiando em sua experiência.
Eu apenas ensinarei ao seu programa a compreender uma nova linguagem falada por toda a galáxia digital.
Sem comentários:
Enviar um comentário