domingo, 26 de março de 2017

Variável host para coluna VARCHAR

Olá!

Um programa COBOL que persiste dados em uma tabela que contenha uma coluna do tipo varchar, deve estar preparado com uma variável host que seja um item de grupo que possua a quantidade de caracteres armazenada e o texto.

Tabela:
        CREATE TABLE INSCRICOES
           (
               CODIGO_PESSOA  INT         NOT NULL
           ,   NOME           CHAR(30)    NOT NULL
           ,   SOBRENOME      VARCHAR(50) WITH DEFAULT 'em branco'
           ,   DATA_INSCRICAO DATE        WITH DEFAULT GETDATE()
           ,   HORA_SAIDA     TIME
           ,   TS_CHEGADA     TIMESTAMP
           ,   VALOR          DOUBLE
           )

Então, para coluna SOBRENOME da tabela acima, a variável host pode ser implementada da seguinte forma:
           03  SOBRENOME-PESSOA.
               49 TAMANHO-SOBRENOME     PIC S9(004) USAGE BINARY.
               49 TEXTO-SOBRENOME       PIC  X(050).

Qual variável deve ser mencionada na instrução SQL? O nome do item de grupo ou a variável alpha Pic X?

  • Na instrução SQL deve ser mencionado o nome do item de grupo.

Suponha que se tenha um cursor para buscar todos os registros da tabela de INSCRICOES, assim o comando de leitura do cursor, é:

           EXEC SQL
               FETCH INSENSITIVE ABSOLUTE POSITION-READ CURSOR-NAME
                   INTO :CODIGO-PESSOA
                      , :NOME-PESSOA
                      , :SOBRENOME-PESSOA
                      , :DATA-INSCRICAO
                      , :HORA-SAIDA
                      , :TS-CHEGADA
                      , :VALOR-INSCRICAO
           END-EXEC

De modo que logo após a execução do Fetch o texto armazenado na tabela será movimentado para TEXTO-SOBRENOME, e a quantidade de caracteres será automaticamente contabilizada em TAMANHO-SOBRENOME.

Logo se o registro lido possuir o seguinte sobrenome: "Barbosa Ferreira". Os valores serão armazenados na variável host da seguinte forma:
TAMANHO-SOBRENOME = 16
TEXTO-SOBRENOME = Barbosa Ferreira

Para o processamento de leitura do banco de dados (DB) a variável que armazena o tamanho do texto possui o valor gerado automaticamente. Entretanto, para os processos de inserir ou atualizar dados no DB, deve ser calculado pelo COBOL a quantidade de caracteres que serão persistidas no registro em questão.


Para calcular a quantidade de caracteres de uma variável, veja o post: 


Onde, as variáveis do post citado terão respectivamente a seguinte movimentação:

           MOVE TAM-STRING              TO TAMANHO-SOBRENOME
           MOVE TEXTO                   TO TEXTO-SOBRENOME

Lembrando, que na instrução SQL é mencionado o nome do item de grupo da variável host.

Consultar a relação de Termos e Abreviaturas acesse aqui.
FELIPE BARBOSA FERREIRA

Até o próximo post!

Nenhum comentário:

Postar um comentário