DB2 - Banco de dados - Dclgen - declarations generator


Volta a página anterior

Volta ao Menu Principal


Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

Dclgen - declarations generator

O DCLGEN é um programa que gera uma codificação de declaração de variáveis HOST correspondentes às colunas de uma dada tabela.

Seu programa deve declarar as tabelas e visualizações que ele acessa.
O gerador de declarações do DB2 , DCLGEN, produz essas instruções DECLARE para os programas C, COBOL e PL / I, para que você não precise codificar as instruções sozinho.
DCLGEN também gera estruturas variáveis ??de host correspondentes.

O DCLGEN gera uma tabela ou declaração de exibição e a coloca em um membro de um conjunto de dados particionados que você pode incluir no seu programa.
Quando você usa o DCLGEN para gerar uma declaração de tabela, o DB2 obtém as informações relevantes do catálogo do DB2.
O catálogo contém informações sobre a definição de tabela ou exibição e a definição de cada coluna na tabela ou exibição.
O DCLGEN usa essas informações para produzir uma instrução SQL DECLARE TABLE para a tabela ou exibição e uma declaração de estrutura PL / I ou C correspondente ou uma descrição do registro COBOL.

Tipos de dados que o DCLGEN usa para declarações de variáveis.

SQL data type1 C COBOL PL/I
SMALLINT short int PIC S9(4) USAGE COMP BIN FIXED(15)
INTEGER long int PIC S9(9) USAGE COMP BIN FIXED(31)
DECIMAL(p,s) or NUMERIC(p,s) decimal(p,s)2 PIC S9(p-s)V9(s) USAGE COMP-3 DEC FIXED(p,s)

If p > 15, the PL/I compiler must support this precision, or a warning is generated.

REAL or FLOAT(n) 1 <= n <= 21 float USAGE COMP-1 BIN FLOAT(n)
DOUBLE PRECISION, DOUBLE, or FLOAT(n) double USAGE COMP-2 BIN FLOAT(n)
CHAR(1) char PIC X(1) CHAR(1)
CHAR(n) char var [n+1] PIC X(n) CHAR(n)
VARCHAR(n)
struct
{short int var_len;
 char var_data[n];
} var;
10 var.
   49 var_LEN PIC 9(4) USAGE COMP.
   49 var_TEXT PIC X(n).
CHAR(n) VAR
CLOB(n)3 SQL TYPE IS CLOB_LOCATOR USAGE SQL TYPE IS CLOB-LOCATOR SQL TYPE IS CLOB_LOCATOR
GRAPHIC(1) sqldbchar PIC G(1) GRAPHIC(1)
GRAPHIC(n)

n > 1

sqldbchar var[n+1];
PIC G(n) USAGE DISPLAY-1.4
or
PIC N(n).4
GRAPHIC(n)
VARGRAPHIC(n)
struct VARGRAPH
 {short len;
  sqldbchar data[n];
 } var;
10 var.
   49 var_LEN PIC 9(4) USAGE COMP.
   49 var_TEXT PIC G(n) 
      USAGE DISPLAY-1.4
or

10 var.
   49 var_LEN PIC 9(4) USAGE COMP.
   49 var_TEXT PIC N(n).4
GRAPHIC(n) VAR
DBCLOB(n)3 SQL TYPE IS DBCLOB_LOCATOR USAGE SQL TYPE IS DBCLOB-LOCATOR SQL TYPE IS DBCLOB_LOCATOR
BINARY(n) SQL TYPE IS BINARY(n) USAGE SQL TYPE IS BINARY(n) SQL TYPE IS BINARY(n)
VARBINARY(n) SQL TYPE IS VARBINARY(n) USAGE SQL TYPE IS VARBINARY(n) SQL TYPE IS VARBINARY(n)
BLOB(n)3 SQL TYPE IS BLOB_LOCATOR USAGE SQL TYPE IS BLOB-LOCATOR SQL TYPE IS BLOB_LOCATOR
DATE char var[11]5 PIC X(10)5 CHAR(10)5
TIME char var[9]6 PIC X(8)6 CHAR(8)6
TIMESTAMP char var[27] PIC X(26) CHAR(26)
TIMESTAMP(0) char var[20] PIC X(19) CHAR(19)
TIMESTAMP(p) p > 0 char var[21+p] PIC X(20+p) CHAR(20+p)
TIMESTAMP(0) WITH TIME ZONE
struct
{short int var_len;
 char var_data[147];
} var;
01 var.
   49 var_LEN  PIC S9(4) COMP.
   49 var_TEXT PIC X(147).
DCL var CHAR(147) VAR;
TIMESTAMP(p) WITH TIME ZONE
struct
{short int var_len;
 char var_data[148 + p];
} var;
01 var.
   49 var_LEN  PIC S9(4) COMP.
   49 var_TEXT PIC X(148 + p).
DCL var CHAR(148 + p) VAR;
ROWID SQL TYPE IS ROWID USAGE SQL TYPE IS ROWID SQL TYPE IS ROWID
BIGINT long long int PIC S9(18) USAGE COMP FIXED BIN(63)
XML7 SQL TYPE IS XML AS CLOB(1M) SQL TYPE IS XML AS CLOB(1M) SQL TYPE IS XML AS CLOB(1M)
Notas:
  1. Para um tipo distinto, o DCLGEN gera o equivalente no idioma do host do tipo de dados de origem.
    For a distinct type, DCLGEN generates the host language equivalent of the source data type.

  2. Se o seu compilador C não suportar o tipo de dados decimal, edite sua saída DCLGEN e substitua as declarações de dados decimais por declarações do tipo double.
    If your C compiler does not support the decimal data type, edit your DCLGEN output and replace the decimal data declarations with declarations of type double.

  3. Para um tipo de dados BLOB, CLOB ou DBCLOB, o DCLGEN gera um localizador de LOB.
    For a BLOB, CLOB, or DBCLOB data type, DCLGEN generates a LOB locator.

  4. DCLGEN escolhe o formato com base no caractere que você especifica como o símbolo DBCS no painel Padrões COBOL.
    DCLGEN chooses the format based on the character that you specify as the DBCS symbol on the COBOL Defaults panel.

  5. Esta declaração é usada, a menos que exista uma rotina de saída da instalação da data para formatar datas; nesse caso, o comprimento é o especificado para a opção de instalação LOCAL DATE LENGTH.
    This declaration is used unless a date installation exit routine exists for formatting dates, in which case the length is that specified for the LOCAL DATE LENGTH installation option.

  6. Esta declaração é usada, a menos que exista uma rotina de saída da instalação de horário para os horários da formatação; nesse caso, o comprimento é aquele especificado para a opção de instalação LOCAL TIME LENGTH.
    This declaration is used unless a time installation exit routine exists for formatting times, in which case the length is that specified for the LOCAL TIME LENGTH installation option.

  7. A configuração padrão para XML é 1M; no entanto, pode ser necessário ajustá-lo.
    The default setting for XML is 1M; however, you might need to adjust it.

Exemplo de Dclgen:

      ******************************************************************
      * DCLGEN TABLE(DB2.SAGTBS02_CURSOS)                              *
      *        LIBRARY(DES.DB2.DCLGEN(SAGTBS02))                       *
      *        ACTION(REPLACE)                                         *
      *        LANGUAGE(COBOL)                                         *
      *        STRUCTURE(SAGTBS02)                                     *
      *        APOST                                                   *
      * ... IS THE DCLGEN COMMAND THAT MADE THE FOLLOWING STATEMENTS   *
      ******************************************************************

           EXEC SQL DECLARE DB2.SAGTBS02_CURSOS TABLE
           ( CO_CURSO                       INTEGER NOT NULL,          
             NO_CURSO                       CHAR(25) NOT NULL,         
             DT_INCLUSAO                    DATE NOT NULL,             
             DT_ALTERACAO                   DATE,                      
             DT_EXCLUSAO                    DATE,                      
             NO_TOPICO                      CHAR(15) NOT NULL,         
             NO_NIVEL                       CHAR(15) NOT NULL,         
             NO_OBJETIVO                    VARCHAR(150),              
             NO_DESTINA_SE                  CHAR(70) NOT NULL,
             NO_PRE_REQUIS                  CHAR(70) NOT NULL,
             NU_CARGA_HORA                  INTEGER NOT NULL,
             IC_SEG                         CHAR(1), 
             IC_TER                         CHAR(1),                    
             IC_QUA                         CHAR(1), 
             IC_QUI                         CHAR(1), 
             IC_SEX                         CHAR(1), 
             IC_SAB                         CHAR(1),                    
             IC_DOM                         CHAR(1),
             DT_INICIO                      DATE NOT NULL,
             DT_FIM                         DATE NOT NULL,
             NO_ANDAMENTO                   CHAR(35),                  
             VR_CURSO_1                     DECIMAL(15, 2) NOT NULL,
             VR_CURSO_2                     DECIMAL(15, 2) NOT NULL,
             VR_CURSO_3                     DECIMAL(15, 2) NOT NULL,
             IC_SITUACAO                    CHAR(1)
           ) END-EXEC.

      ******************************************************************
      * COBOL DECLARATION FOR TABLE DB2.SAGTBS02_CURSOS                *
      ******************************************************************

       01  SAGTBS02.
           10 CO-CURSO             PIC S9(9) USAGE COMP. 
           10 NO-CURSO             PIC X(25).
           10 DT-INCLUSAO          PIC X(10).
           10 DT-ALTERACAO         PIC X(10). 
           10 DT-EXCLUSAO          PIC X(10).
           10 NO-TOPICO            PIC X(15).                           
           10 NO-NIVEL             PIC X(15).
           10 NO-OBJETIVO.
              49 NO-OBJETIVO-LEN   PIC S9(4) USAGE COMP.
              49 NO-OBJETIVO-TEXT  PIC X(150).                          
           10 NO-DESTINA-SE        PIC X(70).
           10 NO-PRE-REQUISITOS    PIC X(70).
           10 NU-CARGA-HORA        PIC S9(9) USAGE COMP.                  
           10 IC-SEG               PIC X(1).
           10 IC-TER               PIC X(1).
           10 IC-QUA               PIC X(1).
           10 IC-QUI               PIC X(1).                            
           10 IC-SEX               PIC X(1).
           10 IC-SAB               PIC X(1).
           10 IC-DOM               PIC X(1).
           10 DT-INICIO            PIC X(10).                           
           10 DT-FIM               PIC X(10). 
           10 NO-ANDAMENTO         PIC X(35).
           10 VR-CURSO-1           PIC S9(13)V9(2) USAGE COMP-3.
           10 VR-CURSO-2           PIC S9(13)V9(2) USAGE COMP-3.
           10 VR-CURSO-3           PIC S9(13)V9(2) USAGE COMP-3.
           10 IC-SITUACAO          PIC X(1).
      ******************************************************************
      * THE NUMBER OF COLUMNS DESCRIBED BY THIS DECLARATION IS 19      *
      ****************************************************************** 

Veja também: