domingo, 12 de março de 2017

Equivalência tamanho variável SQL / COBOL

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 SQLVariá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