Olá!
Ao declarar variáveis no COBOL para serem utilizadas em comandos SQLs (ou seja, variáveis hosts), temos que assegurar que elas são compatíveis com o mesmo tipo e tamanho de dado da coluna do banco de dados (DB).
Pois, o pré-compilador do COBOL realiza a verificação se os tipos de dados são equivalentes entre a variável declarada e a coluna da tabela do DB.
Na tabela abaixo há a representação de cada variável host COBOL equivalente para cada tipo de dado SQL:
Tipo de dado SQL | Variável host COBOL |
SMALLINT | S9(004) COMP-4 S9(004) COMP-5 S9(004) COMP S9(004) BINARY |
INTEGER | S9(009) COMP-4 S9(009) COMP-5 S9(009) COMP S9(009) BINARY |
DECIMAL(p,s) NUMERIC(p,s) | S9(p-s)V9(s) COMP-3 S9(p-s)V9(s) Se DECIMAL com s=0 (sem valores após a virgula), usar: S9(p)V Se NUMERIC com s=0 (sem valores após a virgula), usar: S9(p) Para armazenar somente os números após a vírgula, usar: SV9(s) Se o compilador não suportar 31 dígitos decimal, usar: USAGE COMP-2 Sendo "p" a precisão de números, e "s" a escala |
REAL FLOAT(n) | COMP-1 Sendo "n": 1<= n <= 21 |
DOUBLE FLOAT(n) | COMP-2 Sendo "n": 22 <= n <= 53 |
BIGINT | S9(018) COMP-4 S9(018) COMP-5 S9(018) COMP S9(018) BINARY |
CHAR(n) | Sendo "n" a quantidade de caracteres (tamanho fixo). 01 variavel-nome PIC X(n). |
VARCHAR(n) | Sendo "n" a quantidade de caracteres (tamanho dinâmico). 01 variavel-nome. 49 nome-tamanho PIC S9(004) USAGE BINARY. 49 nome-variavel PIC X(n). Onde, nome-tamanho é a variável que irá armazenar a quantidade de caracteres presentes em nome-variavel. |
DATE | PIC X(n) Sendo "n" determinado pela regra de negocio, caso contrario "n" deve ser no minimo 10 |
TIME | PIC X(n) Sendo "n" determinado pela regra de negocio, caso contrario "n" deve ser no minimo 6, ou 8 para incluir os segundos |
TIMESTAMP | PIC X(n) Sendo "n" no mínimo 19, para incluir os microssegundos "n" deve ser 26 |
Exemplo da declaração de variáveis hosts para a tabela INSCRICOES:
Definição da 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
)
Declaração COBOL para as variáveis hosts, conforme:
*
-- Variaveis hosts da tabela INSCRICOES
01 TAB-INSCRICOES.
03
CODIGO-PESSOA PIC S9(009).
03
NOME PIC X(030).
03
SOBRENOME.
49 TAMANHO-SOBRENOME PIC S9(004) USAGE BINARY.
49 TEXTO-SOBRENOME PIC
X(050).
03
DATA_INSCRICAO PIC
X(010).
03
HORA_SAIDA PIC X(008).
03
TS_CHEGADA PIC X(026).
03 VALOR USAGE COMP-2.
O tipo de dado SQL não está na tabela acima, veja mais tipos de dados aqui.
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