Leer documentos XML desde Enterprise COBOL

Podemos procesar documentos XML desde programas Cobol usando el mandato XML PARSE. Este mandato es el interface de alta velocidad del lenguaje Cobol, que es parte del “run-time” del compilador.

El tratamiento de un documento XML  implica el control en ambos sentidos.  XML PARSE especifica un procedimiento que recibe control desde el analizador de XML para manejar sus eventos. Tienes que usar registros especiales  en el programa para cambiar información con el analizador.

Utiliza estas facilidades de COBOL para procesar documentos XML:

  • Mandatos XML PARSE para comenzar el  analizador XML e identificar el documento y procesar en la PROCEDURE.
  • Procedimientos en la “PROCEDURE” para controlar el analizador: recibir y procesar eventos XML, y fragmentos de documentos asociados y opcionalmente manejar excepciones.
  • Registros especiales para recibir y pasar información:
  • XML-CODE para determinar el estado del analizador XML.
  • XML-EVENT  para recibir el nombre de cada evento XML.
  • XML-TEXT para recibir fragmentos de documento desde un documento alfanumérico.
  • XML-NTEXT para recibir fragmentos de documento XML desde datos nacionales.

XML PARSER en Cobol

El COBOL Enterprise proporciona un interface basado en eventos que le permite analizar documentos XML y transformarles a estructuras de datos Cobol. El analizador de XML busca fragmentos (asociados con eventos XML) dentro del documento, y los procesa (en la PROCEDURE) actuando sobre estos fragmentos.

En todas partes de esta operación, el control pasa hacia adelante y hacia atrás entre  el analizador gramatical y su procedimiento.

Este cambio comienza usando el XML PARSE, que designa el nombre de la rutina que va a analizar el documento. Cada ejecución de la rutina analiza el documento e informa del siguiente evento, devolviendo a su rutina el fragmento encontrado, y así una y otra vez.

También podemos especificar en el mandato XML PARSE dos declaraciones imperativas al que  queremos pasar el control al final del analizador:

  • Uno para la terminación normal
  • Y otro si el mandato termina con salidas de excepción.

Flujo del analizador XML

Normalmente, el analizador continúa hasta que todo el documento XML ha sido analizado.

Cuando el analizador gramatical XML analiza documentos XML, los comprueba para la mayor parte de aspectos, tanto de  forma, como de definición, en la especificación XML. Un documento está  bien formado si  se adhiere a la sintaxis XML y sigue algunas reglas adicionales, como el empleo apropiado  de etiquetas de final y la unicidad de nombres de atributo.

 Acceso a documentos  XML

Antes de analizar un documento XML con el mandato XML PARSE, debe hacer que el documento esté accesible para nuestro programa.

El método más probable  para la adquisición del documento es a través de un mensaje MQ SERIES, una cola TS o la COMMAREA  de CICS, o un mensaje  de IMS.

Si el documento XML que usted quiere analizar está soportado en un archivo, utilizaremos los mandatos que Cobol nos proporciona para colocar el documento en un área de datos en nuestro programa:

  • Una entrada FILE-CONTROL para definir el fichero.
  • El mandato OPEN para abrir el fichero.
  • El mandato READ para leer todos los registros del fichero en un área de datos alfanumérica o datos  que estarán definidos en la WORKING-STORAGE SECTION del programa.
  • Opcionalmente un mandato STRING  para concatenar todos los registros separados, juntos, en una corriente continua, para quitar espacios en blanco extraños, y manejar registros de longitud variable.

Análisis de Documentos XML

Para analizar documentos XML, usaremos el mandato XML PARSE:

    XML PARSE XMLDOCUMENTO
      PROCESSING PROCEDURE XML-MANEJADOR-EVENTOS
      ON EXCEPTION
          DISPLAY 'XML error documento ' XML-ERROR
          STOP RUN
      NOT ON EXCEPTION
          DISPLAY 'XML documento bien analizado.'
    END-XML.

 

EL XML PARSE analiza el área de datos XMLDOCUMENTO (ver ejemplo) que contiene el documento XML. En la DATA DIVISION le declaramos como un campo alfanumérico (o campo nacional de datos).

Después especificamos el nombre de la Rutina de la PROCEDURE que va a analizar los eventos de XML desde el documento (en el ejemplo la rutina es XML-MANEJADOR-EVENTOS).

Además podemos especificar cada uno o ambas de las declaraciones imperativas para recibir el control al final del análisis:

  • ON EXCEPTION, para recibir el control si se produce una terminación excepcional
  • NOT ON EXCEPTION, para recibir el control si el analizador termina bien.

Podemos finalizar el mandato XML PARSE con el terminador END-XML.

El intercambio de control entre su analizador XML y la rutina de la PROCEDURE continúa hasta que ocurren una de las siguientes cosas:

  • Todo el documento XML ha sido analizado, indicado por el evento END-OF-DOCUMENT.
  • El analizador detecta un error en el documento y lanza un evento EXCEPTION. Su rutina de la PROCEDURE no reinicializa el registro especial XML-CODE a cero  antes de retornar al analizador gramatical.
  • Terminamos el análisis deliberadamente poniendo el registro especial XML-CODE a -1 antes de retornar al analizador.

Comments are closed.