COBOL - XML PARSE - Handling XML PARSE exceptions



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

COBOL - XML PARSE - Handling XML PARSE exceptions
Enterprise COBOL for z/OS 6.3.0, Language Reference

Se o analisador XML encontrar uma anomalia ou erro durante a análise, ele definirá um código de exceção no registro especial XML-CODE e sinalizará um evento de exceção XML.
Os códigos de exceção específicos que podem ocorrer e as ações subseqüentes que você pode executar diferem dependendo da configuração da opção do compilador XMLPARSE.

Para XMLPARSE (XMLSS):

Return code and reason code:
O código de exceção é formado a partir do código de retorno e do código de razão que o analisador gera.
O código de retorno e o código de razão são, cada um, um valor binário de meia palavra.
O valor em XML-CODE é uma concatenação desses dois valores.

Como exemplo, o seguinte documento XML não está bem formado porque a tag final do elemento mmsg não corresponde à tag inicial do elemento msg:

<msg>Hello</mmsg>

O código de retorno é hexadecimal 000C (XRC_NOT_WELL_FORMED) e o código de razão é hexadecimal 3035 (XRSN_ENDTAG_NAME_MISMATCH), se você analisar o documento sem validação.
A concatenação desses dois valores, hexadecimal 000C3035, é retornada ao procedimento de processamento no registro especial XML-CODE.

Se você analisar um documento com validação, os valores retornados em XML-CODE para quaisquer erros de formação de forma diferem dos valores retornados para os mesmos erros quando você analisa sem validação.
O código de retorno gerado pelo analisador do z/OS® XML System Services para qualquer erro de validação é 24 (hexadecimal 0018).

Para obter mais informações sobre os códigos de retorno e códigos de razão que podem ser gerados, consulte a referência relacionada sobre exceções com XMLPARSE (XMLSS) em vigor.

Se XMLPARSE (XMLSS) estiver em vigor, os procedimentos de processamento não poderão manipular eventos de exceção e não poderão fazer com que a análise seja retomada.
Quando um procedimento de processamento retorna ao analisador a partir de um evento de exceção, o analisador não sinaliza mais eventos.
O analisador transfere o controle para a instrução especificada na frase ON EXCEPTION da instrução XML PARSE.
Se você não codificou uma frase ON EXCEPTION, o controle é passado para o final da instrução XML PARSE.
CODIGO XML contém o código de exceção original definido pelo analisador.

Se nenhuma exceção ocorrer durante a análise, o controle será passado para a instrução especificada na frase NOT ON EXCEPTION.
Se você não codificou uma frase NOT ON EXCEPTION, o controle é passado para o final da instrução XML PARSE.
XML-CODE contém zero.

Para XMLPARSE (COMPAT):

Se o código de exceção estiver dentro de um determinado intervalo, você poderá manipular o evento de exceção dentro do procedimento de processamento e retomar a análise.

Para manipular uma exceção no procedimento de processamento, siga estas etapas:

  1. Verifique o conteúdo do XML-CODE.
  2. Manipule a exceção adequadamente.
  3. Defina XML-CODE como zero para indicar que você manipulou a exceção.
  4. Retorne o controle para o analisador.

A condição de exceção não existe mais.

Você pode manipular exceções dessa maneira somente se o código de exceção passado no XML-CODE estiver dentro de um dos seguintes intervalos, o que indica que um conflito de codificação foi detectado:

  • 50 - 99
  • 100,001 - 165,535

Códigos de exceção 1 - 49: No procedimento de processamento, você pode fazer um tratamento limitado de exceções para as quais o código de exceção está dentro do intervalo de 1 a 49.
Após uma exceção nesse intervalo, o analisador não sinaliza mais nenhum evento normal, exceto o evento END-OF-DOCUMENT, mesmo se você definir XML-CODE como zero antes de retornar.
Se você definir XML-CODE como zero, o analisador continuará analisando o documento e sinalizará as exceções que encontrar.
(Isso pode fornecer uma maneira útil de descobrir vários erros no documento.)

Restrição:
O analisador COBOL XML do modo de compatibilidade pode não sinalizar todos os eventos de exceção adicionais.
O número de exceções é limitado ao espaço restante na matriz de token de evento XML PARSE, provavelmente 8192 eventos.

No final da análise após uma exceção que possui um código de exceção no intervalo de 1 a 49, o controle é passado para a instrução especificada na frase ON EXCEPTION.
Se você não codificou uma frase ON EXCEPTION, o controle é passado para o final da instrução XML PARSE.
XML-CODE contém o código definido pelo analisador para a exceção mais recente.

Para todas as exceções que não tenham um código de exceção em um dos intervalos descritos acima, o analisador não sinaliza mais eventos, mas passa o controle para a instrução especificada na frase ON EXCEPTION.
XML-CODE contém o código de exceção original, mesmo se você definir XML-CODE no procedimento de processamento antes de retornar o controle ao analisador.

Se você não deseja manipular uma exceção, retorne o controle para o analisador sem alterar o valor de XML-CODE.
O analisador transfere o controle para a instrução especificada na frase ON EXCEPTION.
Se você não codificou uma frase ON EXCEPTION, o controle é transferido para o final da instrução XML PARSE.

Se nenhuma exceção não tratada ocorrer antes do final da análise, o controle será passado para a instrução especificada na frase NOT ON EXCEPTION. Se você não codificou uma frase NOT ON EXCEPTION, o controle é transferido para o final da instrução XML PARSE.
XML-CODE contém zero.



© Copyright IBM Corp.