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
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
, :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