DB2 - Banco de dados - DCLGEN (DECLARATIONS GENERATOR) (DSN)


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) (DSN)

Db2 para z/OS 12 - Db2 for z/OS 12

O gerador de declarações (DCLGEN) produz uma instrução SQL DECLARE TABLE e uma declaração de dados COBOL, PL/I ou C para uma tabela ou visão nomeada no catálogo.
The declarations generator (DCLGEN) produces an SQL DECLARE TABLE statement and a COBOL, PL/I, or C data declaration for a table or a view named in the catalog.

Ambiente - Environment

O gerador de declarações é executado pelo subcomando DSN DCLGEN.
Esse subcomando pode ser emitido a partir de uma sessão DSN, em execução no modo de primeiro ou segundo plano, ou pode ser emitido por meio de DB2I.
Você também pode usar o procedimento armazenado SYSPROC.ADMIN_COMMAND_DSN para enviar este subcomando.

The declarations generator is executed by the DSN subcommand DCLGEN.
That subcommand can be issued from a DSN session, running in either foreground or background mode, or it can be issued through DB2I.
You can also use the SYSPROC.ADMIN_COMMAND_DSN stored procedure to submit this subcommand.

Escopo de compartilhamento de dados: Grupo
Data sharing scope: Group

Autorização - Authorization

Para executar este comando, você deve usar um conjunto de privilégios do processo que inclui um dos seguintes privilégios ou autoridades:
To execute this command, you must use a privilege set of the process that includes one of the following privileges or authorities:

  • Propriedade da tabela ou visão
    Ownership of the table or view

  • Privilégio SELECT na tabela ou visão
    SELECT privilege on the table or view

  • Autoridade DBADM no banco de dados que contém a tabela
    DBADM authority on the database containing the table

  • Autoridade SYSADM
    SYSADM authority

  • Autoridade SYSCTRL (apenas tabelas de catálogo)
    SYSCTRL authority (catalog tables only)

Sintaxe - Syntax

Descrições de opções - Option descriptions

TABELA - TABLE
Especifica a tabela ou exibição para a qual uma declaração é gerada.
table-name ou view-name é o nome qualificado ou não qualificado da tabela ou view.
O nome deve seguir estas regras:

Specifies the table or view for which a declaration is generated.
table-name or view-name is the qualified or unqualified name of the table or view.
The name must follow these rules:
  • Se o nome for uma string de byte único ou mista e contiver caracteres especiais diferentes de sublinhados (_), ele deve ser colocado entre apóstrofos (').
    Se o idioma for COBOL, sublinhados de byte único no nome são traduzidos em hifens (-) por DCLGEN.
    Os nomes do conjunto de caracteres de byte duplo (DBCS) não precisam ser colocados entre apóstrofos.

    If the name is a single-byte or mixed string and contains special characters other than underscores (_), it must be enclosed between apostrophes (').
    If the language is COBOL, single-byte underscores in the name are translated into hyphens (-) by DCLGEN.
    Double-byte character set (DBCS) names need not be enclosed in apostrophes.

  • Se o nome contiver apóstrofos de byte único, cada um deve ser duplicado (''). (Algumas linguagens de host não permitem apóstrofos em nomes de variáveis.)
    If the name contains single-byte apostrophes, each one must be doubled (''). (Some host languages do not permit apostrophes in variable names.)
Uma tabela ou nome de exibição que contém um ponto e não está entre apóstrofos é um nome de tabela qualificado.
Os caracteres à esquerda do ponto constituem o proprietário da mesa e aqueles à direita do ponto constituem o nome da tabela.
Qualquer nome de tabela entre apóstrofos é um nome de tabela não qualificado.
Para entender como DCLGEN determina o qualificador de nome de tabela, consulte a descrição da opção OWNER, a seguir.

A table or view name that contains a period and is not enclosed by apostrophes is a qualified table name.
The characters to the left of the period constitute the table owner, and those to the right of the period constitute the table name.
Any table name enclosed in apostrophes is an unqualified table name.
To understand how DCLGEN determines the table name qualifier, see the description of the OWNER option, which follows.

PROPRIETÁRIO (nome do proprietário) - OWNER( owner-name )
Especifica um qualificador para o nome da tabela. nome-do-proprietário é o qualificador para o nome da tabela.
Se você especificar um nome de tabela qualificado para a opção TABLE (nome da tabela) e também especificar OWNER (nome do proprietário), a parte do qualificador do nome da tabela substituirá o nome do proprietário como o qualificador do nome da tabela.
Se você especificar um nome de tabela não qualificado para a opção TABLE (nome da tabela) e não especificar OWNER (nome do proprietário), o ID de autorização do SQL será o qualificador do nome da tabela.

Specifies a qualifier for the table name. owner-name is the qualifier for the table name.
If you specify a qualified table name for the TABLE( table-name ) option, and you also specify OWNER( owner-name ), the qualifier portion of table-name supersedes owner-name as the table name qualifier.
If you specify an unqualified table name for the TABLE( table-name ) option, and you do not specify OWNER( owner-name ), the SQL authorization ID is the table name qualifier.

DCLGEN suporta o uso de sublinhado (_) como um caractere válido no parâmetro de palavra-chave do nome do proprietário.
DCLGEN supports the use of underscore (_) as a valid character in the owner-name keyword parameter.

A tabela a seguir ilustra o processo de decisão para determinar o qualificador de nome de tabela DCLGEN.
The following table illustrates the decision process for determining the DCLGEN table name qualifier.

Tabela 1. Processo de decisão para determinar o qualificador de nome de tabela DCLGEN
Table 1. Decision process for determining the DCLGEN table name qualifier

Table name OWNER( owner-name ) specified OWNER( owner-name ) not specified
TABLE( table-name ) qualified table-name qualifier table-name qualifier
TABLE( table-name ) unqualified owner-name SQL authorization ID

AT (nome do local) - AT( location-name )
Identifica a localização da tabela ou nome da visão especificada em TABLE (nome da tabela).
nome-do-local, que pode consistir de 1 a 16 caracteres, identifica exclusivamente uma instância de uma tabela ou exibição em uma rede.
Se você especificar AT, o nome do local será usado como o prefixo do nome da tabela e o nome da tabela ou a exibição da tabela deverá ser um nome qualificado.

DCLGEN suporta o uso de sublinhado (_) como um caractere válido no parâmetro de palavra-chave do nome do local.

Identifies the location of the table or view name specified in TABLE ( table-name ).
location-name , which can consist of 1 to 16 characters, uniquely identifies an instance of a table or view in a network.
If you specify AT, location-name is used as the prefix for the table name, and table-name or table-view must be a qualified name.

DCLGEN supports the use of underscore (_) as a valid character in the location-name keyword parameter.

BIBLIOTECA (nome da biblioteca (nome do membro) / senha) - LIBRARY( library-name ( member-name )/ password )
Especifica o conjunto de dados para o qual vão as declarações.
Este conjunto de dados já deve existir e estar acessível ao gerador de declarações.
Pode ser sequencial ou particionado. a senha é opcional.
Se o nome da biblioteca não estiver entre apóstrofos, DCLGEN construirá o seguinte nome de conjunto de dados completo:

Specifies the data set into which the declarations go.
This data set must already exist and be accessible to the declarations generator.
It can be either sequential or partitioned. password is optional.
If the library name is not enclosed within apostrophes, DCLGEN constructs the following full data set name:


user-prefix.library-name.language.(member-name)

Onde: - where:

prefixo do usuário - user-prefix
O prefixo do usuário do ID de autorização primário da transação. The user prefix of the primary authorization ID of the transaction.
Linguagem - Language
O valor da opção LANGUAGE: PLI, C ou COBOL.
The value of the LANGUAGE option: PLI, C, or COBOL.
(nome do membro) - (member-name)
Opcional; se não for usado, a saída vai para um conjunto de dados sequencial.
Optional; if not used, the output goes to a sequential data set.
AÇAO - ACTION
Indica se deseja adicionar ou substituir o conjunto de dados. Indicates whether to add or replace the data set.
(ADICIONAR) - (ADD)
Adiciona o conjunto de dados como um novo membro, se ainda não existir.
O padrão é AÇÃO (ADICIONAR).
Adds the data set as a new member, if it does not already exist.
The default is ACTION ( ADD ).

(SUBSTITUIR) - (REPLACE)
Substitui um membro ou conjunto de dados existente pelo novo.
Se a saída for para um conjunto de dados particionado e nenhum membro existir com o nome fornecido, um será adicionado.
Replaces an existing member or data set with the new one.
If the output is to a partitioned data set, and no member exists with the given name, one is added.
LINGUAGEM - LANGUAGE
Especifica o idioma da declaração gerada.
Os idiomas possíveis são:
Specifies the language of the generated declaration.
Possible languages are:
  • (PLI), para PL/I - (PLI), for PL/I
  • (C), para C/370 - (C), for C/370
  • (IBMCOB), para IBM® COBOL - (IBMCOB), for IBM® COBOL
  • (CPP), para C ++ - (CPP), for C++

NAMES (prefixo) - NAMES(prefix)
Permite que nomes de campo sejam formados na declaração.
Evite possíveis conflitos de nome entre a saída DCLGEN e o programa de origem.
Se ocorrer um conflito, use NAMES ou STRUCTURE ou edite manualmente a declaração gerada ou o programa de origem.

prefixo pode conter caracteres de byte duplo.

Os nomes dos campos consistem em prefixos concatenados com um número de um a três dígitos.
O prefixo pode ter até 28 caracteres.
Se prefix for uma string de byte único ou mista e o primeiro caractere não for alfabético, ele deve ser colocado entre apóstrofos.
Por exemplo, se o prefixo for ABCDE, os nomes dos campos serão ABCDE1, ABCDE2 e assim por diante, até um máximo de ABCDE999.
Caracteres especiais podem ser usados, mas tenha cuidado para evitar possíveis conflitos de nome.

Para COBOL e PL / I, se o prefixo for uma sequência DBCS, o nome do campo será o prefixo DBCS concatenado com a representação DBCS do número.
Por exemplo, se o prefixo for (onde representam os caracteres shift-out e shift-in, respectivamente, e D1D2D3 representam caracteres de byte duplo), os nomes dos campos gerados serão , , e assim por diante.
O ponto (.) Representa X'42 '.

Os nomes das colunas na tabela são considerados nomes padrão para os campos na saída.

Allos field names to be formed in the declaration.
Avoid possible name conflicts between DCLGEN output and the source program.
If a conflict occurs, use NAMES or STRUCTURE, or manually edit the generated declaration or source program.

prefix can contain double-byte characters.

The field names consist of prefix concatenated with a number from one to three digits in length.
prefix can have up to 28 characters.
If prefix is a single-byte or mixed string and the first character is not alphabetic, it must be enclosed in apostrophes.
For example, if prefix is ABCDE, the field names will be ABCDE1, ABCDE2, and so on, up to a maximum of ABCDE999.
Special characters can be used, but use caution to avoid possible name conflicts.

For COBOL and PL/I, if the prefix is a DBCS string, the field name will be the DBCS prefix concatenated with the DBCS representation of the number.
For example, if prefix is (where < and > represent shift-out and shift-in characters, respectively, and D1D2D3 represent double-byte characters), generated field names will be , , and so on.
The period (.) represents X'42'.

The column names in the table are taken as default names for the fields in the output.

ESTRUTURA (nome da estrutura) - STRUCTURE( structure-name )
Especifica a estrutura de dados gerada.
nome-da-estrutura pode ter até 31 caracteres.
Se o nome da estrutura for uma string de byte único ou mista e o primeiro caractere não for alfabético, ele deve ser colocado entre apóstrofos.
Você pode usar caracteres especiais, mas tenha cuidado para evitar possíveis conflitos de nome.

nome-da-estrutura pode conter caracteres de byte duplo.

Para a saída SQL, o nome é igual ao nome da tabela ou visualização.
Se o idioma do host for C, o nome da estrutura padrão é o prefixo DCL concatenado com o nome da tabela.
Se o idioma do host for COBOL ou PL / I e o nome da tabela for um byte único ou string mista, o nome da estrutura padrão também será o prefixo DCL concatenado com o nome da tabela.
Se o idioma do host for COBOL ou PL / I e o nome da tabela for uma string DBCS, o nome da estrutura padrão será o prefixo <.DCL> concatenado com o nome da tabela ou visualização.
< and > representam caracteres shift-out e shift-in, respectivamente.
Você deve se proteger contra possíveis conflitos com nomes no programa de origem.
DCLGEN permite que o nome da estrutura especificada seja igual ao nome da tabela ou visualização, mas emitirá uma mensagem de aviso.

Specifies the generated data structure.
structure-name can have up to 31 characters.
If structure-name is a single-byte or mixed string and the first character is not alphabetic, it must be enclosed in apostrophes.
You can use special characters, but use caution to avoid possible name conflicts.

structure-name can contain double-byte characters.

For SQL output, the name is the same as the table or view name.
If the host language is C, the default structure name is the prefix DCL concatenated with the table name.
If the host language is COBOL or PL/I and the table name is a single-byte or mixed string, the default structure name is also the prefix DCL concatenated with the table name.
If the host language is COBOL or PL/I and the table name is a DBCS string, the default structure name is the prefix <.D.C.L> concatenated with the table or view name.
< and > represent shift-out and shift-in characters, respectively.
You must guard against possible conflicts with names in the source program.
DCLGEN allows the specified structure name to be the same as the table or view name, but will issue a warning message.

APOST or QUOTE
Especifica o caractere delimitador de string usado no idioma do host.
Esta opção é efetiva apenas para programas COBOL.
APOST especifica o apóstrofo (') como o delimitador de string do idioma host; o delimitador SQL é as aspas (").

QUOTE especifica as aspas (") como o delimitador de idioma do host; o delimitador SQL é o apóstrofo (').

O delimitador de string delimita strings em instruções do idioma host.
O caractere de escape SQL delimita nomes de tabelas e colunas na instrução SQL DECLARE TABLE produzida por DCLGEN.
É possível, por escolha feita durante a instalação do Db2, colocar ambos os delimitadores em aspas ou ambos em apóstrofos.

Specifies the string delimiter character used in the host language.
This option is effective only for COBOL programs.
APOST specifies the apostrophe (') as the host language string delimiter; the SQL delimiter is the quotation mark (").

QUOTE specifies the quotation mark (") as the host language delimiter; the SQL delimiter is the apostrophe (').

If neither APOST nor QUOTE is specified, the default is either APOST or QUOTE for COBOL, depending on what was specified on Db2 installation panel DSNTIPF.

The string delimiter delimits strings in host language statements.
The SQL escape character delimits table and column names in the SQL DECLARE TABLE statement produced by DCLGEN.
It is possible, by a choice made during Db2 installation, to make both delimiters the quotation mark or both the apostrophe.

RÓTULO - LABEL
Indica se incluir rótulos de coluna na saída como comentários.
(Os rótulos das colunas podem ser atribuídos pela instrução LABEL ON.)
Indicates whether to include column labels in the output as comments.
(Column labels can be assigned by the LABEL ON statement.)
( NO )
Omite os rótulos das colunas.
Omits the column labels.
( YES )
Inclui os rótulos das colunas.
Includes the column labels.
DBCSSYMBOL
Especifica o símbolo usado para denotar um tipo de dado gráfico em uma cláusula COBOL PICTURE.
Specifies the symbol used to denote a graphic data type in a COBOL PICTURE clause.
(G)
Os dados gráficos são denotados com G.
Graphic data is denoted using G.
(N)
Os dados gráficos são denotados por N.
Graphic data is denoted using N.
DBCSDELIM
Especifica se a tabela DBCS e os nomes das colunas na instrução da tabela DECLARE gerada serão delimitados.
Specifies whether the DBCS table and column names in the generated DECLARE table statement will be delimited.
( YES )
Os nomes das tabelas e colunas DBCS serão delimitados na declaração da tabela DCLGEN.
DBCS table and column names will be delimited in the DCLGEN table declaration.
(NO)
Os nomes das tabelas e colunas DBCS não serão delimitados na declaração da tabela DCLGEN.
DBCS table and column names will not be delimited in the DCLGEN table declaration.
COLSUFFIX
Determina se os nomes dos campos devem ser formados anexando o nome da coluna ao prefixo fornecido pela opção NAMES.
Determines whether to form field names by attaching the column name to the prefix given by the NAMES option.
( NO )
O nome da coluna não é usado como sufixo e os nomes dos campos são controlados pela opção NAMES.
The column name is not used as a suffix, and field names are controlled by the option NAMES.
(YES)
Se NAMES for especificado, DCLGEN formará nomes de campo adicionando nomes de coluna como um sufixo ao valor de NAMES.
Por exemplo, se o prefixo fornecido por NAMES for NEW e o nome da coluna for EMPNO, o nome do campo será NEWEMPNO.
Se NAMES não for especificado, DCLGEN emitirá uma mensagem de aviso e usará os nomes das colunas como os nomes dos campos.

If NAMES is specified, DCLGEN forms field names by adding column names as a suffix to the value of NAMES.
For example, if the prefix given by NAMES is NEW and the column name is EMPNO, the field name is NEWEMPNO.
If NAMES is not specified, DCLGEN issues a warning message and uses the column names as the field names.
INDVAR
Determina se deve criar uma matriz de variável indicadora para a estrutura de variável do host.
Determines whether to create an indicator variable array for the host variable structure.
( NO )
DCLGEN não cria uma matriz de variável indicadora.
DCLGEN does not create an indicator variable array.
(YES)
DCLGEN cria uma matriz de indicador para a estrutura da variável do host.
O nome da matriz é o nome da tabela com um prefixo I (ou letra DBCS <I> se o nome da tabela for de byte duplo).
DCLGEN creates an indicator array for the host variable structure.
The array name is the table name with a prefix of I (or DBCS letter <I> if the table name is double-byte).
RMARGIN
Especifica o ponto de interrupção para tokens de instrução que devem ser agrupados em um ou mais registros subsequentes de saída DCLGEN.
Specifies the break point for statement tokens that must be wrapped onto one or more subsequent records of DCLGEN output.
(STD)
Os tokens de instrução serão agrupados após a coluna 72.
Statement tokens will be wrapped after column 72.
(WIDE)
Os tokens de instrução serão agrupados após a coluna 80.
Statement tokens will be wrapped after column 80.
DCLBIT
Especifica se deve gerar uma instrução DECLARE VARIABLE de variáveis SQL para colunas definidas como FOR BIT DATA.
Esta instrução é necessária em aplicativos IBM COBOL que possuem variáveis de host para colunas FOR BIT DATA e são preparadas usando a opção SQLCCSID do coprocessador Db2 integrado.
A instrução também é válida, mas não necessária atualmente, para C / C ++ e PL / I e para COBOL que não é preparado usando a opção SQLCCSID do coprocessador Db2 integrado.

Specifies whether to generate a DECLARE VARIABLE statement of SQL variables for columns that are defined as FOR BIT DATA.
This statement is required in IBM COBOL applications that have host variables for FOR BIT DATA columns and are prepared by using the SQLCCSID option of the integrated Db2 coprocessor.
The statement is also valid, but not currently required, for C/C++ and PL/I, and for COBOL that is not prepared by using the SQLCCSID option of the integrated Db2 coprocessor.
( NO )
Não gera uma instrução DECLARE VARIABLE de variáveis SQL para colunas definidas como FOR BIT DATA.
Does not generate a DECLARE VARIABLE statement of SQL variables for columns that are defined as FOR BIT DATA.
( YES )
Gera uma instrução DECLARE VARIABLE de variáveis SQL para colunas definidas como FOR BIT DATA.
Se a tabela ou exibição não tiver nenhuma coluna FOR BIT DATA, a instrução não será gerada.

Generates a DECLARE VARIABLE statement of SQL variables for columns that are defined as FOR BIT DATA.
If the table or view does not have any FOR BIT DATA columns, the statement is not generated.

Notas de uso - Usage notes

A análise do comando DCLGEN está em conformidade com as convenções de análise padrão do TSO.
Parsing of the DCLGEN command conforms to standard TSO parsing conventions.

A instrução DECLARE:
A instrução DECLARE gerada por DCLGEN definirá todas as colunas criadas com um tipo de dados de VARCHAR ou LONG VARCHAR como VARCHAR.
As colunas criadas com um tipo de dados VARGRAPHIC ou LONG VARGRAPHIC serão definidas como VARGRAPHIC.

The DECLARE statement:
The DECLARE statement generated by DCLGEN will define all columns created with a data type of VARCHAR or LONG VARCHAR as VARCHAR.
Columns created with a data type of VARGRAPHIC or LONG VARGRAPHIC will be defined as VARGRAPHIC.

Comentários:
a saída para todos os idiomas do host inclui comentários.
O bloco de comentário inicial ecoa o subcomando DCLGEN que solicitou as declarações.
O bloco de comentário final indica o número de variáveis declaradas.

Comments:
The output for all host languages includes comments.
The leading comment block echoes the DCLGEN subcommand that requested the declarations.
The trailing comment block indicates the number of variables declared.

Usando a saída:
Para incluir a saída DCLGEN em um programa de aplicativo, use a instrução SQL INCLUDE.
O mesmo nome de membro especificado no parâmetro DCLGEN LIBRARY é especificado na instrução INCLUDE.

Using the output:
To include the DCLGEN output in an application program, use the SQL INCLUDE statement.
The same member name specified in the DCLGEN LIBRARY parameter is specified on the INCLUDE statement.

Prompts:
O TSO online solicitará opções ausentes ou especificadas incorretamente.
Online TSO will prompt for missing or incorrectly specified options.

Editando a saída:
Espera-se que a saída do DCLGEN não atenda a todas as necessidades.
Você pode editar livremente a saída antes de incluí-la em um programa.
Por exemplo, você pode querer alterar o nome de uma variável ou incluir caracteres de escape SQL.

Editing the output:
It is expected that the output of DCLGEN will not meet every need.
You can freely edit the output before including it in a program.
For example, you might want to change a variable name, or include SQL escape characters.

Você pode editar a saída para adicionar WITH DEFAULT a NOT NULL para colunas que não permitem valores nulos.
Se você editar a saída, deverá fornecer um valor padrão.
You can edit the output to add WITH DEFAULT to NOT NULL for columns that do not allow null values.
If you edit the output, you must provide a default value.

Se os nomes das colunas contiverem espaços em branco incorporados, eles também serão refletidos nas declarações de variáveis do host e você terá que remover ou converter quaisquer caracteres em branco em algum outro valor.
If your column names contain embedded blanks, they will also be reflected in the host variable declarations, and you will have to remove, or translate, any blank characters to some other value.

Para uma coluna com um tipo de dados XML, DCLGEN gera o seguinte saída: SQL TYPE IS XML AS CLOB (1M).
O valor de comprimento padrão para a variável de host XML é 1 MB.
Você pode atualizar manualmente a saída DCLGEN se quiser um tamanho maior ou menor.

For a column with an XML data type, DCLGEN generates the following output: SQL TYPE IS XML AS CLOB(1M).
The default length value for the XML host variable is 1MB.
You can manually update the DCLGEN output if you want a larger or smaller size.

C: O suporte DCLGEN da linguagem C é único nas seguintes maneiras:
DCLGEN support of the C language is unique in the following ways:

  • DCLGEN não dobra os valores de STRUCTURE, NAMES ou TABLE em maiúsculas.
    DCLGEN does not fold the STRUCTURE, NAMES, or TABLE values to uppercase.

  • Para qualquer coluna Db2 que possui o tipo de dados CHAR (n), onde n> 1, DCLGEN gera a variável de host correspondente como CHAR (n + 1) para evitar o aviso Db2.
    Para n = 1, a variável de host correspondente é CHAR.
    For any Db2 column that has the data type CHAR( n ), where n > 1, DCLGEN generates the corresponding host variable as CHAR( n + 1) to avoid the Db2 warning.
    For n = 1, the corresponding host variable is CHAR.

COBOL e inteiros binários:
Db2 usa o tamanho total dos inteiros binários.
Ele pode colocar valores maiores do que o permitido no número especificado de dígitos em uma variável COBOL, o que pode resultar em valores truncados.
Para evitar esse problema, você pode modificar a saída DCLGEN para declarar variáveis COBOL que correspondem a colunas inteiras binárias com USAGE COMP-5 em vez de USAGE COMP ou USAGE BINARY.

COBOL and binary integers:
Db2 uses the full size of binary integers.
It can place larger values than allowed in the specified number of digits in a COBOL variable, which can result in truncated values.
To avoid this problem, you can modify the DCLGEN output to declare COBOL variables that correspond to binary integer columns with USAGE COMP-5 instead of USAGE COMP or USAGE BINARY.

COBOL e o caractere de sublinhado:
DCLGEN converte qualquer caractere de sublinhado nos nomes das colunas da tabela em hifens (-) para uso na estrutura gerada.
COBOL and the underscore character:
DCLGEN translates any underscore characters in the table's column names into hyphens (-) for use in the generated structure.

COBOL e DBCS:
Embora o Db2 aceite valores fora do intervalo de X'41 'a X'FE', nas instruções de definição de dados COBOL, ambos os bytes de cada caractere de byte duplo em nomes de dados devem estar dentro desse intervalo.
Os nomes de dados também devem conter pelo menos um caractere DBCS que não tenha X'42 'como seu primeiro byte.

COBOL and DBCS:
Although Db2 accepts values outside of the range from X'41' to X'FE', in COBOL data definition statements, both bytes of each double-byte character in data names must be within this range.
Data names must also contain at least one DBCS character that does not have X'42' as its first byte.

Declarações de dados para matrizes de variáveis indicadoras: Se DCLGEN criar uma matriz de variáveis indicadoras, as declarações de dados terão o seguinte formato:
Data declarations for arrays of indicator variables: If DCLGEN creates an array of indicator variables, data declarations have the following form:

Language Data declaration
C short int Itable-name[n];
COBOL 01 Itable-name PIC S9(4) USAGE COMP OCCURS n TIMES
PL/I DCL Itable-name(n) BIN FIXED (15);

n é o número de colunas da tabela.
n is the number of columns in the table.

Exemplos - Examples

Exemplo: Usando DCLGEN para gerar declarações de variáveis de host PL/I para colunas em uma tabela Db2
Example: Using DCLGEN to generate PL/I host variable declarations for columns in a Db2 table

O subcomando a seguir gera declarações PL / I para a tabela VEMPL e as grava no prefixo do membro do conjunto de dados .SRCLIB.DATA (DSN8MPEM).
A estrutura do host e os nomes dos campos são gerados a partir dos nomes das tabelas e colunas.

The following subcommand generates PL/I declarations for table VEMPL and writes them to data set member prefix .SRCLIB.DATA(DSN8MPEM).
The host structure and field names are generated from the table and column names.

DCLGEN TABLE(VEMPL) -
       LIBRARY('
prefix
.SRCLIB.DATA(DSN8MPEM)') -
       LANGUAGE(PLI) -
       APOST

A saída é semelhante a esta:
The output looks like this:

/*********************************************************************/
/* DCLGEN TABLE(VEMPL) -                                             */
/*        LIBRARY('
prefix
.SRCLIB.DATA(DSN8MPEM)') -                  */
/*        LANGUAGE(PLI) -                                            */
/*        APOST                                                      */
/* ... IS THE DCLGEN COMMAND THAT MADE THE FOLLOWING STATEMENTS      */
/*********************************************************************/
EXEC SQL DECLARE VEMPL TABLE
          ( EMPNO                          CHAR(6) NOT NULL,
            FIRSTNME                       VARCHAR(12) NOT NULL,
            MIDINIT                        CHAR(1) NOT NULL,
            LASTNAME                       VARCHAR(15) NOT NULL,
            WORKDEPT                       CHAR(3) NOT NULL
          ) ;
/*********************************************************************/
/* PLI DECLARATION FOR TABLE VEMPL                                   */
/*********************************************************************/
DCL 1 DCLVEMPL,
     5 EMPNO    CHAR(6),
     5 FIRSTNME CHAR(12) VAR,
     5 MIDINIT  CHAR(1),
     5 LASTNAME CHAR(15) VAR,
     5 WORKDEPT CHAR(3);
/*********************************************************************/
/* THE NUMBER OF COLUMNS DESCRIBED BY THIS DECLARATION IS 5          */
/*********************************************************************/

Exemplo: usando as opções DCLGEN NAMES e STRUCTURE para especificar um prefixo de nome de campo e nome de estrutura para a saída gerada
Example: Using DCLGEN NAMES and STRUCTURE options to specify a field name prefix and structure name for the generated output

O subcomando a seguir gera declarações PL/I para a tabela VEMPL e as grava no prefixo do membro do conjunto de dados .SRCLIB.DATA (DSN8MPEM).
As declarações PL/I geradas estão em uma estrutura chamada EMPRECORD e todos os nomes de variáveis de host consistem na string FIELD, seguida por um número.

The following subcommand generates PL/I declarations for table VEMPL and writes them to data set member prefix .SRCLIB.DATA(DSN8MPEM).
The generated PL/I declarations are in a structure named EMPRECORD, and all host variable names consist of the string FIELD, followed by a number.

DCLGEN TABLE(VEMPL) -
       LIBRARY('
prefix
.SRCLIB.DATA(DSN8MPEM)') -
       LANGUAGE(PLI) -
       NAMES(FIELD) -
       STRUCTURE(EMPRECORD) -
       APOST

A saída é semelhante a esta:
The output looks like this:

/*********************************************************************/
/* DCLGEN TABLE(VEMPL) -                                             */
/*        LIBRARY('
prefix
.SRCLIB.DATA(DSN8MPEM)') -                  */
/*        LANGUAGE(PLI) -                                            */
/*        NAMES(FIELD) -                                             */
/*        STRUCTURE(EMPRECORD) -                                     */
/*        APOST                                                      */
/* ... IS THE DCLGEN COMMAND THAT MADE THE FOLLOWING STATEMENTS      */
/*********************************************************************/
EXEC SQL DECLARE VEMPL TABLE
          ( EMPNO                          CHAR(6) NOT NULL,
            FIRSTNME                       VARCHAR(12) NOT NULL,
            MIDINIT                        CHAR(1) NOT NULL,
            LASTNAME                       VARCHAR(15) NOT NULL,
            WORKDEPT                       CHAR(3) NOT NULL
          ) ;

/*********************************************************************/
/* PLI DECLARATION FOR TABLE VEMPL                                   */
/*********************************************************************/
DCL 1 EMPRECORD,
     5 FIELD1   CHAR(6),
     5 FIELD2   CHAR(12) VAR,
     5 FIELD3   CHAR(1),
     5 FIELD4   CHAR(15) VAR,
     5 FIELD5   CHAR(3);
/*********************************************************************/
/* THE NUMBER OF COLUMNS DESCRIBED BY THIS DECLARATION IS 5          */
/*********************************************************************/

Exemplo: Gerando instruções de variável DECLARE para colunas que são definidas com FOR BIT DATA
Example: Generating DECLARE variable statements for columns that are defined with FOR BIT DATA

O subcomando a seguir gera declarações COBOL para a tabela MYTABLE, que contém colunas FOR BIT DATA.
A opção DCLBIT (YES) é especificada para fazer com que DCLGEN gere instruções DECLARE VARIABLE para as colunas FOR BIT DATA para que os aplicativos que incluem a declaração gerada compilem corretamente quando são compilados com a opção SQLCCSID do coprocessador Db2.

The following subcommand generates COBOL declarations for table MYTABLE, which contains FOR BIT DATA columns.
The DCLBIT(YES) option is specified to cause DCLGEN to generate DECLARE VARIABLE statements for the FOR BIT DATA columns so that applications that include the generated declaration compile correctly when they are compiled with the SQLCCSID option of the Db2 coprocessor.

DCLGEN TABLE(MYTABLE)
       LIBRARY('prefix.SRCLIB.DATA(MYTABLE))
       LANGUAGE(COBOL)
       APOST
       DCLBIT(YES)

A saída é semelhante a esta:
The output looks like this:

****************************************************************** 
* DCLGEN TABLE(MYTABLE)                                          * 
*        LIBRARY('prefix.SRCLIB.DATA(MYTABLE))                   * 
*        LANGUAGE(COBOL)                                         * 
*        APOST                                                   * 
*        DCLBIT(YES)                                             * 
* ... IS THE DCLGEN COMMAND THAT MADE THE FOLLOWING STATEMENTS   * 
****************************************************************** 
     EXEC SQL DECLARE MYTABLE TABLE                                
     ( COL1                           CHAR(10) NOT NULL,           
       COL2                           CHAR(10),                    
       COL3                           VARCHAR(12) NOT NULL,        
       COL4                           VARCHAR(12) NOT NULL         
     ) END-EXEC.                                                   
****************************************************************** 
* DECLARED VARIABLES FOR 'FOR BIT DATA' COLUMNS                  * 
****************************************************************** 
     EXEC SQL DECLARE                                              
      :COL3                                                        
     ,:COL4                                                        
     VARIABLE FOR BIT DATA END-EXEC.                               
****************************************************************** 
* COBOL DECLARATION FOR TABLE MYTABLE                            * 
****************************************************************** 
 01  DCLMYTABLE.                                                   
     10 COL1                 PIC X(10).                            
     10 COL2                 PIC X(10).                            
     10 COL3.                                                      
        49 COL3-LEN          PIC S9(4) USAGE COMP.                 
        49 COL3-TEXT         PIC X(12).                            
     10 COL4.                                                      
        49 COL4-LEN          PIC S9(4) USAGE COMP.                 
        49 COL4-TEXT         PIC X(12).                            
****************************************************************** 
* THE NUMBER OF COLUMNS DESCRIBED BY THIS DECLARATION IS 4       * 
******************************************************************

Veja também: