JSON

Documentos JSON.

Sintaxe

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

STATUS file status

Argumentos

arquivo

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

GET INTO

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

PUT FROM

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

LINE-FEED

Indica que a documento JSON deve ser produzido no formato texto. Neste caso, um terminador de linha X“0D0A” será inserido ao final da linhas 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 JSON 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 de delimitadores JSON.

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

- Maiúsculas e minúsculas nos nomes COBOL não fazem diferença nas associações COBOL-JSON, contudo, a linguagem de destino pode ser case sensitive, nesse caso, basta declarar os campos utilizando maiúsculas e minúsculas que esses nomes serão associados independentemente da case para o COBOL, mas as strings de origem serão preservadas na produção de documentos JSON.

- Se o nome campo a ser tratado for uma palavra reservada em COBOL, por exemplo “value”, isso pode ser contornado com a inserção do prefixo “JSON-”, desse modo o nome em COBOL ficaria “JASON-VALUE”, o COBOL aceita o nome, porém o nome tratado será “VALUE”.

- 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 JSON não encontradas no documento JSON 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..

- Os campos preenchidos com LOW-VALUES resultam na declaração null como valor dos campos em JSON.

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.

Exemplo


Documento JSON

{"json":{
    "curriculo":{
       "InformacaoPessoal":{
          "DataNascimento":"1980-12-01","Nomecompleto":"MONTEIRO LOBATO",
          "Contatos":{
             "Endereco":{
                "Rua":"R.COBOL","Numero":"123","Cidade":"RIO DE JANEIRO","CEP":99999999,"UF":"RJ"
                },"Telefone":"9999-9999","Email":"contato@COBOLware.com"
             },"Nacionalidade":"Brasileira","Sexo":"M"
          },"objetivo":"Atuar na area de TI","Experiencias":{
          "Emprego":[
             {"Num":1,"Cargo":"Suporte tecnico","Empregador":"IBM, RIO DE JANEIRO - RJ"},
             {"Num":2,"Cargo":"Programador","Empregador":"Micro Focus, RECIFE - PE"},
             {"Num":3,"Cargo":"Engenheiro","Empregador":"COBOLware, Americana - SP"}
             ]
          },"Formacao":"Superior Completo"
   }
}}

Codificação COBOL

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

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

       01  DOCUMENTO-JSON.
           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).
                     05 Cargo              PIC  X(030).
                     05 Empregador         PIC  X(030).
               03 Formacao                 PIC  X(030).

       PROCEDURE DIVISION.

       000-INICIO.

           EXEC COBOLware JSON GET INTO DOCUMENTO-JSON
                File 'teste.json'
                STATUS FS-JSON
           END-EXEC

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

       000-99-FIM. GOBACK.

       END PROGRAM JSON.