XML

Documentos XML.

Sintaxe

XML [ [ [ GET INTO | PUT FROM ] registro ] FILE arquivo ]
LINE-FEED

SPECIALS marcadores especiais
STATUS
file status

Argumentos

arquivo

Nome do arquivo a ser importado de XML para COBOL ou exportado de COBOL para XML.

GET INTO

Indica que a operação a ser realizada é de importação de um documento XML para um registro COBOL.

PUT FROM

Indica que a operação a ser realizada é de exportação de um registro COBOL produzindo um documento XML.

LINE-FEED

Indica que a documento XML deve ser produzido no formato texto. Neste caso, um terminador de linha X“0D0A” será inserido ao final do encerramento de cada marcação XML e a hierarquia será edentada de modo que seja facilmente visualizável por qualquer editor de textos.

registro


Identificador COBOL de nível 1 que recebe os dados resultantes da requisição GET INTO ou fornece os dados para a produção do documento XML quando solicitado PUT FROM.

Durante a compilação, o registro é analisado produzindo uma associação entre os níveis, nomes e atributos dos campos COBOL e a hierarquia, marcadores e delimitadores XML.

Ao se codificar o registro em COBOL visando a compatibilidade com os padrões XML é preciso observar:

- Maiúsculas e minúsculas nos nomes COBOL fazem diferença nas associações COBOL-XML;

- Quando em COBOL se utiliza o mesmo nome para mais de um campo é necessário qualificar as referências. Para evitar esse inconveniente utiliza-se prefixos separados com hífen como Arquivo-Nome e Ws-Nome, já em XML felizmente não é costumeiro usar hifens pois em outras linguagens Arquivo-Nome geralmente significaria a subtração da variável Nome da variável Arquivo. Sendo assim, durante a associação os prefixos declarados nos registros COBOL não são considerados, tanto Arquivo-Nome como WS-Nome resultam no marcador <Nome>.

- A clausula OCCURS só deve ser utilizada em grupos ou seja, jamais no mesmo nível que a PICTURE, quanto maior o número de ocorrências previstas nos arrays do registro COBOL mais pesado será o processamento;

- Na exportação, as ocorrências não utilizadas devem estar totalmente preenchidas com espaços (no nível do grupo) para que não sejam consideradas, da mesma forma, as marcações XML não encontradas no documento XML durante a importação resultam em ocorrências com o grupo totalmente preenchido com espaços indicando que não há mais dados nas ocorrências restantes no array;

- Os campos precisam ser todos USAGE DISPLAY como é o padrão da linguagem COBOL, entretanto para efeito de produção de um documento XML, a cláusula DISPLAY indica que o campo deve ser gravado como um atributo do marcador do grupo Campo=”Conteúdo”, sem essa declaração, será um tratado como um elemento ordinário <Campo>Conteúdo<Campo/>.

- Os campos preenchidos com LOW-VALUES são considerados nulos e não produzem marcadores XML.

file status

Variável de 2 caracteres que retorna o código do resultado da operação seguindo o padrão do file status do COBOL.

marcadores especiais

Para uso avançado: Permite a definição de listas de marcadores de inicialização a serem inseridos no inicio do documento XML, se omitido será assumido automaticamente:
xml version="1.0" encoding="UTF-8" que atende a grande maioria das necessidades de transferências de dados via XML. Para cada prefixo xml encontrado será gravada uma nova linha de inicialização.

Por exemplo: xml version="1.0" encoding="UTF-8" xml-stylesheet type="text/xsl" href="stylesheet.xsl" produz o cabeçalho de inicialização <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="stylesheet.xsl”?>

Exemplo


Documento XML

<?xml version="1.0" encoding="UTF-8"?>
<curriculo>
   <InformacaoPessoal>
      <DataNascimento>1980-12-01</DataNascimento>
      <Nomecompleto>MONTEIRO LOBATO</Nomecompleto>
      <Contatos>
         <Endereco>
              <Rua>R.COBOL</Rua>
              <Numero>123</Numero>
              <Cidade>RIO DE JANEIRO</Cidade>
              <CEP>99999999</CEP>
              <UF>RJ</UF>
         </Endereco>
         <Telefone>9999-9999</Telefone>
         <Email>contato@COBOLware.com</Email>
      </Contatos>
      <Nacionalidade>Brasileira</Nacionalidade>
      <Sexo>M</Sexo>
   </InformacaoPessoal>
   <objetivo>Atuar na area de TI</objetivo>
   <Experiencias>
    <Emprego Num="1">
    <Cargo>Suporte tecnico</Cargo>
    <Empregador>IBM, RIO DE JANEIRO - RJ</Empregador>
    </Emprego>
    <Emprego Num="2">
    <Cargo>Programador</Cargo>
    <Empregador>Micro Focus, RECIFE - PE</Empregador>
    </Emprego>
    <Emprego Num="3">
    <Cargo>Engenheiro</Cargo>
    <Empregador>COBOLware, Cataguases - MG</Empregador>
    </Emprego>
   </Experiencias>
   <Formacao>Superior Completo</Formacao>
</curriculo>

Codificação COBOL

       IDENTIFICATION DIVISION.
       PROGRAM-ID.    XML.
       AUTHOR.        COBOLware Services Ltda.
       DATE-WRITTEN.  12/11/2010.
       SECURITY.      *************************************************
                      *                                               *
                      *  Exemplo de leitura de documento XML          *
                      *                                               *
                      *************************************************
       DATA DIVISION.
       WORKING-STORAGE SECTION.

       77  FS-XML                          PIC  X(002) VALUE '00'.

       01  DOCUMENTO-XML.
           02 curriculo.
              03 InformacaoPessoal.
                 04 DataNascimento         PIC  X(010).
                 04 Nomecompleto           PIC  X(050).
                 04 Contatos.
                    05 Endereco.
                       06 Rua              PIC  X(050).
                       06 Numero           PIC  X(010).
                       06 Cidade           PIC  X(020).
                       06 CEP              PIC  9(008).
                       06 UF               PIC  X(002).
                     05 Telefone           PIC  X(009).
                     05 Email              PIC  X(050).
                  04 Nacionalidade         PIC  X(020).
                  04 Sexo                  PIC  X(001).
               03 objetivo                 PIC  X(050).
               03 Experiencias.
                  04 Emprego OCCURS 10.
                     05 Num                PIC  9(002) DISPLAY.
                     05 Cargo              PIC  X(030).
                     05 Empregador         PIC  X(030).
               03 Formacao                 PIC  X(030).

       PROCEDURE DIVISION.

       000-INICIO.

           EXEC COBOLware XML GET INTO DOCUMENTO-XML
                File 'teste.xml'
                STATUS FS-XML
           END-EXEC

           IF FS-XML = '00'
              EXEC COBOLware Send
                   Message 'Documento XML carregado com sucesso'
              END-EXEC
           ELSE
              EXEC COBOLware Send
                   Message 'Falha na carga do documento XML'
              END-EXEC
           END-IF.

       000-99-FIM. GOBACK.

       END PROGRAM XML.