DB2 for z/OS - Determining the encoding scheme and CCSID of a string


Volta a página anterior

Volta ao Menu Principal


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

DB2 for z/OS - Determining the encoding scheme and CCSID of a string - Determinar o esquema de codificação e CCSID de uma string

An encoding scheme and a CCSID are attributes of strings, just as length is an attribute of strings.
All values of the same string column have the same encoding scheme and CCSID.

Um esquema de codificação e um CCSID são atributos de strings, assim como o comprimento é um atributo de strings.
Todos os valores da mesma coluna de string têm o mesmo esquema de codificação e CCSID.

Every string has an encoding scheme and a CCSID that identifies the manner in which the characters in the string are encoded.
Strings can be encoded in ASCII, EBCDIC, or Unicode.

Cada string possui um esquema de codificação e um CCSID que identifica a maneira como os caracteres da string são codificados.
Strings podem ser codificados em ASCII, EBCDIC ou Unicode.

The CCSID that is associated with a string value depends on the SQL statement in which the data is referenced and the type of expression.
Use the Type 1 rules when the SQL statement meets the following conditions:

O CCSID associado a um valor de sequência depende da instrução SQL na qual os dados são referenciados e do tipo de expressão.
Use as regras do Tipo 1 quando a instrução SQL atender às seguintes condições:

  • The SQL statement operates with a single set of CCSIDs (SBCS, mixed, and graphic).
    An SQL statement that does not contain any of the following items operates with a single set of CCSIDs:
    • References to columns from multiple tables or views that are defined with CCSIDs from more than one set of CCSIDs (SBCS, mixed, and graphic)
    • References to an EBCDIC table that contains a Unicode column
    • Graphic hexadecimal (GX) or hexadecimal Unicode (UX) string constants
    • References to the XMLCLOB built-in function
    • Cast specifications with a CCSID clause
    • User-defined table functions

  • A instrução SQL opera com um único conjunto de CCSIDs (SBCS, misto e gráfico).
    Uma instrução SQL que não contém nenhum dos seguintes itens opera com um único conjunto de CCSIDs:
    • Referências a colunas de várias tabelas ou visualizações definidas com CCSIDs de mais de um conjunto de CCSIDs (SBCS, misto e gráfico)
    • Referências a uma tabela EBCDIC que contém uma coluna Unicode
    • Constantes de string hexadecimal gráfico (GX) ou hexadecimal Unicode (UX)
    • Referências à função integrada XMLCLOB
    • Especificações de elenco com uma cláusula CCSID
    • Funções de tabela definidas pelo usuário

  • The SQL statement is not one of the following statements:
  • A instrução SQL não é uma das seguintes:
    • CALL statement
    • SET assignment statement
    • SET special register
    • VALUES statement
    • VALUES INTO statement

  • One of the following built-in functions is not referenced:
  • Uma das seguintes funções integradas não é referenciada:
    • ASCII_CHR
    • ASCII_STR (or ASCIISTR)
    • CHR
    • DECRYPT_BIT
    • DECRYPT_CHAR
    • DECRYPT_DATAKEY_BIT
    • DECRYPT_DATAKEY_CLOB
    • DECRYPT_DATAKEY_DBCLOB
    • DECRYPT_DATAKEY_VARCHAR
    • DECRYPT_DATAKEY_VARGRAPHIC
    • DECRYPT_DB
    • EBCDIC_CHR
    • EBCDIC_STR
    • GETVARIABLE
    • NORMALIZE_STRING
    • UNICODE_STR (or UNISTR)
    • XMLSERIALIZE

  • The SQL statement does not include a collection-derived table (UNNEST).
    A instrução SQL não inclui uma tabela derivada de coleção (UNNEST).

Use the Type 2 rules when the statement does not meet the conditions for Type 1 rules.
Use as regras do Tipo 2 quando a instrução não atender às condições para as regras do Tipo 1.

For those SQL statements and tools that use a SYSDUMMYx table, use the SYSDUMMYx table that has the same encoding scheme as the other objects in your SQL statement, to avoid conversions.
A SYSDUMMYx table is available in each encoding scheme.
For example, suppose that your SQL statement references a SYSDUMMYx table that is in a different encoding scheme from other objects in the statement.
Db2 treats this statement as one that references objects with different CCSIDs (Type 2 rules), and conversion is likely to occur.
To avoid this situation, reference the SYSDUMMYx table that has the same encoding scheme as the other objects in your SQL statement.
See SYSDUMMYx tables for more information.

Para aquelas instruções SQL e ferramentas que usam uma tabela SYSDUMMYx , use a tabela SYSDUMMYx que tem o mesmo esquema de codificação que os outros objetos em sua instrução SQL, para evitar conversões.
Uma tabela SYSDUMMYx está disponível em cada esquema de codificação.
Por exemplo, suponha que sua instrução SQL faça referência a uma tabela SYSDUMMYx que está em um esquema de codificação diferente de outros objetos na instrução.
O Db2 trata essa instrução como uma que faz referência a objetos com diferentes CCSIDs (regras do Tipo 2) e é provável que ocorra a conversão.
Para evitar essa situação, faça referência à tabela SYSDUMMYx que possui o mesmo esquema de codificação que os outros objetos em sua instrução SQL.
Veja as tabelas SYSDUMMYx para maiores informações.

Table 1 describes the rules for determining the CCSID of derived string data when the source data has a string type.

A Tabela 1 descreve as regras para determinar o CCSID de dados de string derivados quando os dados de origem têm um tipo de string.

Table 1. Rules for determining the CCSID that is associated with string data derived from string
Tabela 1. Regras para determinar o CCSID que está associado a dados de sequência derivados de dados de sequência

Source of the string data Type 1 rules - Regras de tipo 1 Type 2 rules - Regras de tipo 2
String constant If the statement references a table or view, the encoding scheme of that table or view determines the encoding scheme for the string constant.
The CCSID is the appropriate character string CCSID of the encoding scheme.

Se a instrução faz referência a uma tabela ou visão, o esquema de codificação dessa tabela ou visão determina o esquema de codificação para a constante de string.
O CCSID é o CCSID da cadeia de caracteres apropriada do esquema de codificação.
The CCSID is the appropriate character string CCSID of the application encoding scheme.1

O CCSID é o CCSID da cadeia de caracteres apropriada do esquema de codificação do aplicativo.1
Datetime constant If the statement references a table or view, the encoding scheme of that table or view determines the encoding scheme for the string constant.
Otherwise, the default EBCDIC encoding scheme is used for the string constant.
The CCSID is the appropriate character string CCSID of the encoding scheme.

Se a instrução faz referência a uma tabela ou visão, o esquema de codificação dessa tabela ou visão determina o esquema de codificação para a constante de string.
Caso contrário, o esquema de codificação EBCDIC padrão é usado para a constante de sequência.
O CCSID é o CCSID da cadeia de caracteres apropriada do esquema de codificação.
The CCSID is the appropriate character string CCSID of the application encoding scheme.1

O CCSID é o CCSID da cadeia de caracteres apropriada do esquema de codificação do aplicativo.1
Hexadecimal string constant (X'...') If the statement references a table or view, the encoding scheme of that table or view determines the encoding scheme for the string constant.
Otherwise, the default EBCDIC encoding scheme is used for the string constant.
The CCSID is the appropriate graphic string CCSID of the encoding scheme.

Se a instrução faz referência a uma tabela ou visão, o esquema de codificação dessa tabela ou visão determina o esquema de codificação para a constante de string.
Caso contrário, o esquema de codificação EBCDIC padrão é usado para a constante de sequência.
O CCSID é o CCSID de string gráfico apropriado do esquema de codificação.
The CCSID is the appropriate character string CCSID of the application encoding scheme.1

O CCSID é o CCSID da cadeia de caracteres apropriada do esquema de codificação do aplicativo.1
Graphic string
constant
(G'...')
If the statement references a table or view, the encoding scheme of that table or view determines the encoding scheme for the graphic string constant.
Otherwise, the default EBCDIC encoding scheme is used for the graphic string constant.
The CCSID is the graphic string CCSID of the encoding scheme.

Se a instrução faz referência a uma tabela ou visão, o esquema de codificação dessa tabela ou visão determina o esquema de codificação para a constante de string gráfica.
Caso contrário, o esquema de codificação EBCDIC padrão é usado para a constante de sequência gráfica.
O CCSID é o CCSID da string gráfica do esquema de codificação.
The CCSID is the graphic string CCSID of the application encoding scheme.1

O CCSID é o CCSID da string gráfica do esquema de codificação do aplicativo.1
Graphic hexadecimal constant (GX'...') Not applicable.

Não aplicável.
The CCSID is the graphic string CCSID of the application encoding scheme, which must be ASCII or EBCDIC.

O CCSID é o CCSID da cadeia gráfica do esquema de codificação do aplicativo, que deve ser ASCII ou EBCDIC.
Hexadecimal Unicode string constant (UX'....') Not applicable.

Não aplicável.
The CCSID is 1200 (UTF-16).

O CCSID é 1200 (UTF-16).
Special register If the statement references a table or view, the encoding scheme of that table or view determines the encoding scheme for the special register.
Otherwise, the default EBCDIC encoding scheme is used for the special register.
The CCSID is the appropriate character string CCSID of the encoding scheme.

Se a instrução faz referência a uma tabela ou visão, o esquema de codificação dessa tabela ou visão determina o esquema de codificação para o registro especial.
Caso contrário, o esquema de codificação EBCDIC padrão é usado para o registro especial.
O CCSID é o CCSID da cadeia de caracteres apropriada do esquema de codificação.
The CCSID is the appropriate CCSID of the application encoding scheme.1

O CCSID é o CCSID apropriado do esquema de codificação do aplicativo.1
Column of a table The CCSID is the CCSID that is associated with the column of the table.

O CCSID é o CCSID associado à coluna da tabela.
The CCSID is the CCSID that is associated with the column of the table.

O CCSID é o CCSID associado à coluna da tabela.
Column of a view The CCSID is the CCSID of the column of the result table of the fullselect of the view definition.

O CCSID é o CCSID da coluna da tabela de resultados da seleção completa da definição da visualização.
The CCSID is the CCSID of the column of the result table of the fullselect of the view definition.

O CCSID é o CCSID da coluna da tabela de resultados da seleção completa da definição da visualização.
Expression The CCSID is the CCSID of the result of the expression.

O CCSID é o CCSID do resultado da expressão.
The CCSID is the CCSID of the result of the expression.

O CCSID é o CCSID do resultado da expressão.
Result of a built-in function If the description of the function, in Built-in functions, indicates what the CCSID of the result is, the CCSID is that CCSID.
Otherwise, if the description of the function refers to this table for the CCSID, the CCSID is the appropriate CCSID of the CCSID set that is used by the statement for the data type of the result.

Se a descrição da função, em Funções integradas , indica qual é o CCSID do resultado, o CCSID é esse CCSID.
Caso contrário, se a descrição da função se referir a esta tabela para o CCSID, o CCSID é o CCSID apropriado do conjunto de CCSID que é usado pela instrução para o tipo de dados do resultado.
If the description of the function, in Built-in functions, indicates what the CCSID of the result is, the CCSID is that CCSID.
Otherwise, if the description of the function refers to this table for the CCSID, the CCSID is the appropriate CCSID of the application encoding scheme for the data type of the result.1

Se a descrição da função, em Funções integradas , indica qual é o CCSID do resultado, o CCSID é esse CCSID.
Caso contrário, se a descrição da função se referir a esta tabela para o CCSID, o CCSID é o CCSID apropriado do esquema de codificação do aplicativo para o tipo de dados do resultado.1
Parameter of a user-defined routine The CCSID is the CCSID that was determined when the function or procedure was created.

O CCSID é o CCSID que foi determinado quando a função ou procedimento foi criado.
The CCSID is the CCSID that was determined when the function or procedure was created.

O CCSID é o CCSID que foi determinado quando a função ou procedimento foi criado.
The expression in the RETURN statement of a CREATE statement for a user-defined SQL scalar function If the expression in the RETURN statement is string data, the encoding scheme is the same as for the parameters of the function.
The CCSID is determined from the encoding scheme and the attributes of the data.

Se a expressão na instrução RETURN são dados de string, o esquema de codificação é o mesmo que para os parâmetros da função.
O CCSID é determinado a partir do esquema de codificação e dos atributos dos dados.
The CCSID is determined from the CCSID of the result of the expression specified in the RETURN statement.

O CCSID é determinado a partir do CCSID do resultado da expressão especificada na instrução RETURN.
String host variable If the statement references a table or view, the encoding scheme of that table or view determines the encoding scheme for the host variable.
Graphic variables are an exception if the table or view is EBCDIC or ASCII and the value of the MIXED DATA field on the DSNTIPF panel is NO.
In this case, the Unicode encoding scheme is used for the graphic host variable.
Otherwise, the default EBCDIC encoding scheme is used for the host variable.
The CCSID is the appropriate CCSID of the data type of the host variable.

Se a instrução fizer referência a uma tabela ou visão, o esquema de codificação dessa tabela ou visão determinará o esquema de codificação da variável do host.
Variáveis ??gráficas são uma exceção se a tabela ou exibição for EBCDIC ou ASCII e o valor do campo MIXED DATA no painel DSNTIPF for NO.
Nesse caso, o esquema de codificação Unicode é usado para a variável de host gráfica.
Caso contrário, o esquema de codificação EBCDIC padrão é usado para a variável do host.
O CCSID é o CCSID apropriado do tipo de dados da variável do host.
At package prepare time, the CCSID is the appropriate CCSID of the data type of the host variable for the application encoding scheme.
Graphic variables are an exception if the application or encoding scheme is EBCDIC or ASCII and the value of the MIXED DATA field on the DSNTIPF panel is NO.
In this case, the Unicode encoding scheme is used for the graphic host variable.
At run time, the CCSID specified in the declare variable statement, or as an override in the SQLDA.
Otherwise, the CCSID is the appropriate CCSID of the application encoding scheme for the data type of the host variable.

No momento da preparação do pacote, o CCSID é o CCSID apropriado do tipo de dados da variável do host para o esquema de codificação do aplicativo.
Variáveis gráficas são uma exceção se o aplicativo ou esquema de codificação for EBCDIC ou ASCII e o valor do campo MIXED DATA no painel DSNTIPF for NO.
Nesse caso, o esquema de codificação Unicode é usado para a variável de host gráfica.
Em tempo de execução, o CCSID especificado na declaração de declaração de variável ou como uma substituição no SQLDA.
Caso contrário, o CCSID é o CCSID apropriado do esquema de codificação do aplicativo para o tipo de dados da variável do host.

Notes:

  1. If the context is within a check constraint or a package for a basic trigger, the CCSID is the appropriate CCSID for Unicode, instead of the application encoding scheme.
    If the context is within a package for an advanced trigger, the CCSID is determined from the implicitly or explicitly specified APPLICATION ENCODING SCHEME option; otherwise the CCSID is the appropriate CCSID for Unicode instead of the application encoding scheme.
  1. Se o contexto estiver dentro de uma restrição de verificação ou um pacote para um acionador básico, o CCSID é o CCSID apropriado para Unicode, em vez do esquema de codificação do aplicativo.
    Se o contexto estiver dentro de um pacote para um acionador avançado, o CCSID será determinado a partir da opção APPLICATION ENCODING SCHEME especificada implícita ou explicitamente; caso contrário, o CCSID é o CCSID apropriado para Unicode em vez do esquema de codificação do aplicativo.

Determining the encoding scheme and CCSID of a string shows the rules for determining the CCSID of derived string data when the source data has a numeric type.

A determinação do esquema de codificação e CCSID de uma sequência mostra as regras para determinar o CCSID de dados de sequência derivados quando os dados de origem têm um tipo numérico.

Table 2. Rules for determining the CCSID that is associated with string data derived from numeric
Tabela 2. Regras para determinar o CCSID que está associado a dados de sequência derivados de dados numéricos

Source of the numeric data Type 1 rules - Regras de tipo 1 Type 2 rules - Regras de tipo 2
Numeric data If the statement references a table or view, the encoding scheme of that table or view determines the encoding scheme for the string data that is derived from a numeric value.
Otherwise, the default EBCDIC encoding scheme is used for the string data derived from a numeric value.
The CCSID is the appropriate character or graphic string CCSID of the application encoding scheme.

Se a instrução fizer referência a uma tabela ou exibição, o esquema de codificação dessa tabela ou exibição determinará o esquema de codificação para os dados da string derivados de um valor numérico.
Caso contrário, o esquema de codificação EBCDIC padrão é usado para os dados da sequência derivados de um valor numérico.
O CCSID é o caractere apropriado ou CCSID de cadeia gráfica do esquema de codificação do aplicativo.
The CCSID is the appropriate character or graphic string CCSID of the application encoding scheme. 1

O CCSID é o caractere apropriado ou CCSID de cadeia gráfica do esquema de codificação do aplicativo. 1

Notes:

  1. If the context is within a check constraint or a package for a basic trigger, the CCSID is the appropriate CCSID for Unicode, instead of the application encoding scheme.
    If the context is within a package for an advanced trigger, the CCSID is determined from the implicitly or explicitly specified APPLICATION ENCODING SCHEME option; otherwise the CCSID is the appropriate CCSID for Unicode instead of the application encoding scheme.
  1. Se o contexto estiver dentro de uma restrição de verificação ou um pacote para um acionador básico, o CCSID é o CCSID apropriado para Unicode, em vez do esquema de codificação do aplicativo.
    Se o contexto estiver dentro de um pacote para um acionador avançado, o CCSID será determinado a partir da opção APPLICATION ENCODING SCHEME especificada implícita ou explicitamente; caso contrário, o CCSID é o CCSID apropriado para Unicode em vez do esquema de codificação do aplicativo.

The following examples show how these rules are applied.
Os exemplos a seguir mostram como essas regras são aplicadas.

Example 1:
Assume that the default encoding scheme for the installation is EBCDIC and that the installation does not support mixed and graphic data.
The following statement conforms to the rules for Type 1 in Table 1.
Therefore, the X'40' is interpreted as EBCDIC SBCS data because the statement references a table that is in EBCDIC.
The CCSID for X'40' is the default EBCDIC SBCS CCSID for the installation.

Exemplo 1:
Suponha que o esquema de codificação padrão para a instalação seja EBCDIC e que a instalação não suporte dados mistos e gráficos.
A declaração a seguir está em conformidade com as regras para o Tipo 1 na Tabela 1.
Portanto, o X'40 ' é interpretado como dados EBCDIC SBCS porque a instrução faz referência a uma tabela que está em EBCDIC.
O CCSID para X'40 ' é o EBCDIC SBCS CCSID padrão para a instalação.

    SELECT * FROM EBCDIC_TABLE WHERE COL1 = X'40';
The result of the query includes each row that has a value in column COL1 that is equal to a single EBCDIC blank.
o resultado da consulta inclui cada linha que possui um valor na coluna COL1 que é igual a um único espaço em branco EBCDIC.

Example 2:
The following statement references data from two different tables that use different encoding schemes.
This statement does not conform to the rules for Type 1 statements in Table 1.
Therefore, the rules for Type 2 statements are used.
The CCSID for X'40' is dependent on the current application encoding scheme.
Assuming that the current application encoding scheme is EBCDIC, X'40' represents a single EBCDIC blank.

Exemplo 2:
A instrução a seguir faz referência a dados de duas tabelas diferentes que usam esquemas de codificação diferentes.
Esta declaração não está em conformidade com as regras para declarações do Tipo 1 na Tabela 1.
Portanto, as regras para instruções do Tipo 2 são usadas. O CCSID para X'40 ' depende do esquema de codificação do aplicativo atual.
Supondo que o esquema de codificação do aplicativo atual seja EBCDIC, X'40 ' representa um único espaço em branco EBCDIC.

    SELECT * FROM EBCDIC_TABLE, UNICODE_TABLE WHERE COL1 = X'40';
as with Example 1, the result of the query includes each row that has a value in column COL1 that is equal to a single EBCDIC blank.
If the current application encoding scheme were ASCII or Unicode, X'40' would represent something different and the results of the query would be different.

como no Exemplo 1, o resultado da consulta inclui cada linha que possui um valor na coluna COL1 que é igual a um único espaço em branco EBCDIC.
Se o esquema de codificação do aplicativo atual fosse ASCII ou Unicode, X'40 ' representaria algo diferente e os resultados da consulta seriam diferentes.



© Copyright IBM Corp.