Documentos XML.
XML [ [ [
GET INTO | PUT
FROM ]
registro ]
FILE arquivo
]
LINE-FEED
SPECIALS
marcadores especiais
STATUS file
status
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”?>
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. |