| Bellacosa Mainframe e o XML no COBOL |
Como se Usa XML em COBOL?
O XML tornou-se muito importante no mundo Mainframe quando bancos, seguradoras e governos passaram a integrar aplicações COBOL com sistemas Web, Java, .NET, APIs e serviços externos.
Hoje é comum um programa COBOL:
receber XML;
gerar XML;
consumir Web Services;
integrar com CICS Web Services;
integrar com z/OS Connect;
trocar mensagens SOAP.
O que é XML?
XML significa:
eXtensible Markup Language
É um formato textual para troca de informações.
Exemplo:
<cliente>
<id>1001</id>
<nome>JOAO SILVA</nome>
<saldo>5000.00</saldo>
</cliente>
Por que XML foi importante no Mainframe?
Antes do XML, a troca de dados era normalmente feita através de:
Arquivos Flat
QSAM
VSAM
Copybooks
O XML permitiu integração entre plataformas diferentes.
XML no COBOL Moderno
O Enterprise COBOL possui dois comandos especiais:
XML GENERATE
Gera XML.
XML PARSE
Lê XML.
XML GENERATE
Transforma uma estrutura COBOL em XML.
Exemplo COBOL
01 CLIENTE.
05 ID-CLI PIC 9(5).
05 NOME-CLI PIC X(30).
05 SALDO-CLI PIC 9(7)V99.
Dados
MOVE 1001 TO ID-CLI
MOVE 'JOAO SILVA' TO NOME-CLI
MOVE 5000 TO SALDO-CLI
Geração XML
XML GENERATE XML-SAIDA
FROM CLIENTE
END-XML
Resultado
<CLIENTE>
<ID-CLI>1001</ID-CLI>
<NOME-CLI>JOAO SILVA</NOME-CLI>
<SALDO-CLI>5000</SALDO-CLI>
</CLIENTE>
Estrutura Completa
01 XML-SAIDA PIC X(5000).
XML GENERATE XML-SAIDA
FROM CLIENTE
END-XML.
XML PARSE
Faz o caminho inverso.
Transforma XML em dados COBOL.
XML Recebido
<CLIENTE>
<ID>1001</ID>
<NOME>JOAO</NOME>
</CLIENTE>
Comando
XML PARSE XML-ENTRADA
PROCESSING PROCEDURE IS PROC-XML
END-XML
Processing Procedure
A cada tag encontrada o COBOL chama um parágrafo.
Exemplo
PROC-XML.
DISPLAY XML-EVENT
DISPLAY XML-TEXT.
Variáveis Automáticas
Durante o PARSE:
XML-CODE
XML-EVENT
XML-TEXT
são preenchidas automaticamente.
XML-CODE
Retorno da operação.
0 = OK
XML-EVENT
Evento encontrado.
Exemplo:
START-OF-ELEMENT
END-OF-ELEMENT
CONTENT-CHARACTERS
XML-TEXT
Conteúdo da tag.
Exemplo Prático
XML:
<NOME>JOAO</NOME>
Durante o PARSE:
EVENT = CONTENT-CHARACTERS
TEXT = JOAO
XML e CICS
Muito utilizado em Web Services.
Fluxo:
Cliente
↓
SOAP XML
↓
CICS
↓
Programa COBOL
Exemplo SOAP
<soap:Envelope>
<soap:Body>
<ConsultaSaldo>
<Conta>12345</Conta>
</ConsultaSaldo>
</soap:Body>
</soap:Envelope>
CICS Web Services
O CICS pode:
✅ Receber XML
✅ Converter XML para COBOL
✅ Converter COBOL para XML
automaticamente.
DFHWS2LS
Ferramenta CICS.
Converte:
XML
↓
COBOL Copybook
DFHLS2WS
Faz o inverso.
Copybook
↓
XML
XML e z/OS Connect
Hoje muitas empresas utilizam:
REST API
↓
JSON
↓
z/OS Connect
↓
COBOL
Mas internamente ainda existem muitos serviços XML.
XML e DB2
Dados DB2 podem ser transformados em XML.
Exemplo
SELECT *
FROM CLIENTES
↓
<CLIENTE>
...
</CLIENTE>
XML Schema (XSD)
Define regras para XML.
Exemplo
<xs:element name="CLIENTE"/>
Benefícios do XML
✅ Padronização
✅ Interoperabilidade
✅ Legibilidade
✅ Integração entre plataformas
✅ Suporte nativo no COBOL
Desvantagens
❌ Verboso
❌ Arquivos grandes
❌ Parsing mais lento que JSON
XML x JSON
XML:
<NOME>JOAO</NOME>
JSON:
{
"nome":"JOAO"
}
Hoje JSON é mais comum em APIs REST.
Mas XML continua muito presente em:
SOAP
Bancos
Governo
Seguros
Mainframe legado
Exemplo Completo XML GENERATE
WORKING-STORAGE SECTION.
01 CLIENTE.
05 ID-CLI PIC 9(5).
05 NOME-CLI PIC X(30).
01 XML-SAIDA PIC X(1000).
PROCEDURE DIVISION.
MOVE 1001 TO ID-CLI
MOVE 'JOAO SILVA' TO NOME-CLI
XML GENERATE XML-SAIDA
FROM CLIENTE
END-XML
DISPLAY XML-SAIDA
STOP RUN.
Resumo Rápido
| Comando | Função |
|---|---|
| XML GENERATE | COBOL → XML |
| XML PARSE | XML → COBOL |
| XML-CODE | Código retorno |
| XML-EVENT | Evento XML |
| XML-TEXT | Conteúdo XML |
| DFHWS2LS | XML → Copybook |
| DFHLS2WS | Copybook → XML |
| SOAP | Web Service XML |
| XSD | Schema XML |
Dica para quem estuda Mainframe
Como você já tem interesse em CICS Web Services e z/OS Connect, o próximo passo natural é montar um laboratório com:
COBOL
↓
COPYBOOK
↓
DFHLS2WS
↓
WSDL
↓
SOAP XML
↓
CICS Web Services
Esse é exatamente o caminho utilizado em muitos bancos para expor programas COBOL como serviços consumidos por aplicações Java, .NET, Mobile e APIs corporativas.
Sem comentários:
Enviar um comentário