É apresentado neste post o UNSTRING do conteúdo de um XML, pode ser também considerado como exemplo para texto ou variável.
A ideia é que o COBOL seja capaz de extrair o conteúdo que esteja presente entre delimitadores predefinidos, ou seja, neste exemplo independente do conteúdo que o XML tenha entre as TAGs a rotina COBOL deverá extrair.
XML:
Para o exemplo consideremos o XML abaixo:
<?xml version="1.0"
encoding="ISO-8859-1"?>
<mensagem nome="testeUnstring">
<codMsg>1234567890</codMsg>
<txMsg>Mensagem de teste</txMsg>
<dtMsg>22/01/2015</dtMsg>
</mensagem>
- Recebe o conteúdo do XML, como: TX-CONTEUDO = “<codMsg>1234567890</codMsg><txMsg>Mensagem de teste</txMsg><dtMsg>22/0 1/2015</dtMsg>”
- Para cada TAG com o comando UNSTRING descobre a posição inicial do conteúdo, exemplo: para a TAG <codMsg> a posição inicial é 9
- Com a posição inicial descoberta, é feito um loop para realizar a transferência de um carácter por vez para uma variável temporária até que o delimitador final “<” seja encontrado.
- Por final é transferido o texto para a variável final.
Segue o código respectivo aos passos acima.
Código da mensagem -> GDA-CD-MSG = 1234567890
Texto da mensagem -> GDA-TX-MSG = Mensagem de teste
Data da mensagem -> GDA-DT-MSG = 22/01/2015
Ou seja, a mecânica/lógica é que se tenha delimitadores (tag) de início e fim, para que por meio do delimitador de início seja encontrado a posição inicial do conteúdo dentro do XML. Para isso, usamos o comando UNSTRING com WITH POINTER VL-PSC-RCPD, onde a variável VL-PSC-RCPD recebe o número da posição do último carácter da tag. Então, se a primeira tag for <codMsg>, a variável VL-PSC-RCPD tem o valor 9, sendo o seguinte passo realizar um loop a partir da posição 9 para extrair um carácter por vez para uma variável temporária até encontrar a tag final </codMsg>.
Caso o XML, seja:
<?xml version="1.0"
encoding="ISO-8859-1"?>
<mensagem nome="testeUnstring">
<codMsg>123312</codMsg>
<txMsg>Outra mensagem de teste</txMsg>
<dtMsg>01/01/2014</dtMsg>
</mensagem>Código da mensagem -> GDA-CD-MSG = 123312
Texto da mensagem -> GDA-TX-MSG = Outra mensagem de teste
Data da mensagem -> GDA-DT-MSG = 01/01/2014
Para Ctrl + C do código acesse aqui.
Consultar a relação de Termos e Abreviaturas acesse aqui.
Até o próximo post!
Nenhum comentário:
Postar um comentário