VARGRAPHIC función escalar

La función VARGRAPHIC devuelve una representación de serie gráfica de longitud variable del primer argumento.

Inicio del cambio

Sintaxis para integer a vargraphic

FL 502

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualVARGRAPHIC( expresión-entera)
fin del cambio
Inicio del cambio

Sintaxis para decimal a vargráfico

FL 502

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualVARGRAPHIC( expresión decimal,carácter decimal)
fin del cambio
Inicio del cambio

Sintaxis para punto flotante a vargráfico

FL 502

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualVARGRAPHIC( expresión de punto flotante)
fin del cambio
Inicio del cambio

Sintaxis para punto flotante decimal a vargraphic

FL 502

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualVARGRAPHIC( expresión-decimal-de-coma-flotante)
fin del cambio

Sintaxis para caracteres a vargraphic:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualVARGRAPHIC( expresión de carácter,entero,CODEUNITS16CODEUNITS32)

Sintaxis de gráfico a vargráfico:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualVARGRAPHIC( expresión gráfica,entero,CODEUNITS16CODEUNITS32)

El esquema es SYSIBM.

La función GRAPHIC devuelve una representación de cadena gráfica de longitud variable de:

  • Inicio del cambioFL 502 Un número entero si el primer argumento es un SMALLINT, INTEGER o BIGINTfin del cambio
  • Inicio del cambioFL 502 Un número decimal si el primer argumento es un número decimalfin del cambio
  • Inicio del cambioFL 502 Un número de punto flotante de doble precisión si el primer argumento es un DOUBLE o REALfin del cambio
  • Inicio del cambioFL 502 Un número decimal de coma flotante si el primer argumento es DECFLOATfin del cambio
  • Una cadena de caracteres si el primer argumento es cualquier tipo de cadena de caracteres
  • Una cadena gráfica si el primer argumento es una cadena gráfica EBCDIC o Unicode

El resultado puede ser nulo; si el primer argumento es nulo, el resultado es el valor nulo.

El atributo de longitud y la longitud real del resultado se miden en caracteres de doble byte porque el resultado es una cadena gráfica.

Inicio del cambio

De entero a vargraphic

FL 502

expresión-entera
Expresión que devuelve un valor que es un tipo de datos entero (ya sea SMALLINT, INTEGER o BIGINT).

El resultado es una cadena gráfica de longitud variable del argumento en forma de una constante entera SQL. La longitud real del resultado es el número menor de caracteres que se puede utilizar para representar el valor del argumento. El resultado consta de n caracteres que son los dígitos significativos que representan el valor del argumento con un signo menos precedente si el argumento es negativo. Un valor positivo comienza con un dígito. Los ceros iniciales no se incluyen.

  • Si el argumento es un entero pequeño, el atributo de longitud del resultado es 6.
  • Si el argumento es un entero grande, el atributo de longitud del resultado es 11.
  • Si el argumento es un entero grande, el atributo de longitud del resultado es 20.

El CCSID del resultado es 1200 ( UTF-16 ).

fin del cambio
Inicio del cambio

De decimal a vargraphic

FL 502

expresión decimal
Expresión que devuelve un valor que es un tipo de datos decimal integrado. Si se desea una precisión y escala diferentes, se puede utilizar la función escalar DECIMAL para realizar el cambio. Para especificar una precisión y escala diferentes para el valor de la expresión, aplique la función DECIMAL antes de aplicar la función VARGRAPHIC.
carácter decimal
Especifica la constante de caracteres de un byte que se utiliza para delimitar los dígitos decimales en la cadena gráfica resultante. El carácter no debe ser un dígito, un signo más (+), un signo menos (-) o un espacio en blanco. El valor predeterminado es el punto (.) o la coma (,). Para obtener información sobre los factores que rigen la elección, consulte Representación del punto decimal.

El resultado es una representación de cadena gráfica de longitud variable del primer argumento. La longitud real del resultado es el número menor de caracteres que se puede utilizar para representar el resultado, salvo que los ceros finales se incluyen. El resultado incluye un carácter decimal y hasta p dígitos, donde p es la precisión de la expresión decimal con un signo menos precedente si el argumento es negativo. Un valor positivo comienza con un dígito o el carácter decimal, y siempre incluye al menos un espacio al final. Los ceros a la izquierda no se devuelven. Si la escala de la expresión decimal es cero, no se devuelve el carácter decimal. Si el número de bytes del resultado es inferior a la longitud definida del resultado, el resultado se rellena a la derecha con espacios en blanco.

La longitud del resultado es 2+p, donde p es la precisión de la expresión decimal.

El CCSID del resultado es 1200 ( UTF-16 ).

fin del cambio
Inicio del cambio

De coma flotante a vargraphic

FL 502

expresión de punto flotante
Una expresión que devuelve un valor que es de un tipo de datos de coma flotante (DOUBLE o REAL).

El resultado es una representación de cadena gráfica de longitud variable del argumento en forma de constante de coma flotante SQL. Si el argumento es negativo, el primer carácter del resultado es un signo menos; de lo contrario, el primer carácter es un dígito. Si el argumento es cero, el resultado es 0E0.

La longitud del resultado es 24. La longitud real del resultado incluye el menor número de caracteres que pueden representar el valor del argumento, de modo que la mantisa consista en un solo dígito, distinto de cero, seguido de un punto y una secuencia de dígitos. Si el número de caracteres del resultado es inferior a 24, el resultado se rellena a la derecha con espacios en blanco.

El CCSID del resultado es 1200 ( UTF-16 ).

fin del cambio
Inicio del cambio

De coma flotante decimal a vargraphic

FL 502

expresión decimal de punto flotante
Expresión que devuelve un valor que es un tipo de datos de punto flotante decimal incorporado (DECFLOAT).

El resultado es una representación de cadena gráfica de longitud variable del argumento en forma de constante decimal de coma flotante SQL.

Si el valor del resultado es Infinity (infinito), sNaN, (nulo) o NaN, (falso), se devuelven las cadenas 'INFINITY', 'SNAN' y 'NAN', respectivamente. El valor especial DECFLOAT sNaN no da lugar a una excepción cuando se convierte en una cadena.

La longitud del resultado es 42. La longitud real del resultado es el número mínimo de caracteres que representa el valor del argumento, incluyendo el signo, los dígitos y el punto. Los ceros a la izquierda son significativos. Si el argumento es negativo, el primer carácter del resultado es un signo menos. De lo contrario, el primer carácter es un dígito, o una letra si el valor DECFLOAT es Infinity, sNaN, o NaN.

El CCSID del resultado es 1200 ( UTF-16 ).

fin del cambio

De carácter a vargraphic

expresión-caracteres
Expresión que devuelve un valor de un tipo de datos de cadena de caracteres incorporado que contiene un valor de cadena de caracteres codificado en EBCDIC o Unicode. No pueden ser datos BIT. El argumento no tiene por qué ser datos mixtos, pero cualquier aparición de X'0E' y X'0F' en la cadena deben ajustarse a las reglas de datos mixtos EBCDIC. (Consulte Cadenas de caracteres para conocer estas reglas)
entero
El atributo de longitud de la cadena gráfica de longitud variable resultante. El valor debe ser una constante entera en el rango de 1 a 16352.

Si se especifica CODEUNITS16 o CODEUNITS32, consulte Determinación del atributo de longitud del resultado final para obtener información sobre cómo calcular el atributo de longitud de la cadena de resultados.

Si no se especifica un entero y si la expresión de caracteres es una constante de cadena vacía o tiene un valor X'0E0F ', el atributo de longitud del resultado es 1 y el resultado es una cadena vacía. Si no, el atributo de longitud del resultado es el mismo que el atributo de longitud del primer argumento.

CODEUNITS16 o CODEUNITS32
Especifica la unidad que se utiliza para expresar un número entero. Si se especifica CODEUNITS16 o CODEUNITS32, la entrada es EBCDIC, y no hay un CCSID correspondiente para datos EBCDIC GRAPHIC, se produce un error.
CODEUNITS16
Especifica que el entero se expresa en términos de unidades de código de UTF-16 e de 16 bits.
CODEUNITS32
Especifica que el entero se expresa en términos de unidades de código de 32 bits e UTF-32.

Para obtener más información sobre CODEUNITS16 y CODEUNITS32, consulte Especificaciones de las unidades de cadena.

La longitud real del resultado es el atributo de longitud mínimo del resultado y la longitud real de expresión-caracteres. Si la longitud de la expresión de caracteres, medida en caracteres de un byte, es mayor que la longitud especificada del resultado, medida en caracteres de doble byte, el resultado se trunca. A menos que todos los caracteres truncados sean espacios en blanco apropiados para la expresión de caracteres, se devuelve una advertencia.

El CCSID del resultado es el CCSID gráfico que corresponde al CCSID de carácter de la expresión de carácter. Si la entrada es EBCDIC y no hay un CCSID de sistema para datos GRÁFICOS EBCDIC, el CCSID del resultado es X'FFFE '.

Para datos de entrada EBCDIC:

Cada carácter de la expresión del carácter determina un carácter del resultado. Puede que el argumento deba convertirse a la forma nativa de datos mixtos antes de que se obtenga el resultado. Sea M el CCSID del sistema para datos mixtos. El argumento no se convierte si se cumple alguna de las siguientes condiciones:

  • El argumento son datos mixtos y su CCSID es M.
  • El argumento son datos SBCS y su CCSID es el mismo que el CCSID del sistema para datos SBCS. En este caso, la operación continúa como si el CCSID del argumento fuera M.

De lo contrario, el argumento es una nueva cadena S derivada de la conversión de los caracteres al conjunto de caracteres codificados identificado por M. Si no hay un CCSID de sistema para datos mixtos, la conversión se realiza al conjunto de caracteres codificados que identifica el CCSID de sistema para datos SBCS.

El resultado se deriva de S utilizando los siguientes pasos:

  • Cada carácter de turno ( X'0E' o X'0F' ) se elimina.
  • Cada carácter de doble byte permanece como está.
  • Cada carácter de un byte se sustituye por un carácter de dos bytes.

El reemplazo de un carácter de un solo byte es el carácter DBCS equivalente, si existe uno. De lo contrario, el reemplazo es X'FEFE '. La existencia de un carácter equivalente depende de M. Si no hay un CCSID de sistema para datos mixtos, el equivalente DBCS de X'xx' para EBCDIC es X'42xx', excepto para X'40', cuyo equivalente DBCS es X'4040'.

Para datos de entrada Unicode:

Cada carácter de la expresión del carácter determina un carácter del resultado. Puede que el argumento deba convertirse a la forma nativa de datos mixtos antes de que se obtenga el resultado. Sea M el CCSID del sistema para datos mixtos. El argumento no se convierte si se cumple alguna de las siguientes condiciones:

  • El argumento son datos mixtos y su CCSID es M.
  • El argumento son datos SBCS, y su CCSID es el mismo que el CCSID del sistema para datos SBCS. En este caso, la operación continúa como si el CCSID del argumento fuera M.

De lo contrario, el argumento es una nueva cadena S derivada de la conversión de los caracteres al conjunto de caracteres codificados identificado por M.

El resultado se deriva de S utilizando los siguientes pasos:

  • Cada carácter no suplementario se sustituye por un carácter Unicode de doble byte (un punto de código e UTF-16 ). Un carácter no suplementario en UTF-8 tiene un tamaño de entre 1 y 3 bytes.
  • Cada carácter suplementario se sustituye por un par de caracteres Unicode de doble byte (un par de puntos de código UTF-16 ).

El reemplazo de un carácter de un solo byte es el carácter equivalente de Unicode, si existe un equivalente. De lo contrario, el reemplazo es X'FFFD '.

De gráfico a vargraphic

expresión-gráfica
Expresión que devuelve un valor de un tipo de datos de cadena gráfica incorporado que contiene un valor de cadena gráfica codificado en EBCDIC o Unicode.
entero
El atributo de longitud de la serie gráfica de longitud variable resultante. El valor debe ser una constante entera en el rango de 1 a 16352.

Si se especifica CODEUNITS16 o CODEUNITS32, consulte Determinación del atributo de longitud del resultado final para obtener información sobre cómo calcular el atributo de longitud de la cadena de resultados.

Si no se especifica un entero y si la expresión gráfica es una constante de cadena vacía, el atributo de longitud del resultado es 1 y el resultado es una cadena vacía. Si no, el atributo de longitud del resultado es el mismo que el atributo de longitud del primer argumento.

CODEUNITS16 o CODEUNITS32
Especifica la unidad que se utiliza para expresar un número entero. Si se especifica CODEUNITS16 o CODEUNITS32, la entrada es EBCDIC, y no hay un CCSID correspondiente para datos EBCDIC GRAPHIC, se produce un error.
CODEUNITS16
Especifica que el entero se expresa en términos de unidades de código de UTF-16 e de 16 bits.
CODEUNITS32
Especifica que el entero se expresa en términos de unidades de código de 32 bits e UTF-32.

Para obtener más información sobre CODEUNITS16 y CODEUNITS32, consulte Especificaciones de las unidades de cadena.

La longitud real del resultado depende del número de caracteres de la expresión gráfica. Si la longitud de la expresión gráfica es mayor que la longitud especificada, el resultado se trunca. A menos que todos los caracteres truncados sean espacios en blanco de doble byte, se devuelve una advertencia.

El CCSID del resultado es el mismo que el CCSID de la expresión gráfica.

Inicio del cambio

Notas

FL 502 Convertir datos numéricos a Unicode : El resultado de las funciones VARGRAPHIC es Unicode ( UTF-16 ) cuando el primer argumento son datos numéricos. La función VARGRAPHIC solo puede invocarse con datos numéricos para el primer argumento si la sentencia que lo contiene:
  • hace referencia únicamente a tablas o vistas base Unicode y la declaración está calificada para ser una declaración de esquema de codificación único, o
  • se considera una declaración de esquema de codificación múltiple y el esquema de codificación de la aplicación es Unicode.
fin del cambio

ejemplos

Inicio del cambio
Ejemplo 1:

FL 502 Supongamos que existe una tabla EMPLOYEE_U similar a la tabla de ejemplo EMPLOYEE, excepto que es una tabla Unicode. La columna EDLEVEL está definida como SMALLINT. Supongamos que la empleada Christine Haas estuvo en la escuela durante 18 años. La siguiente declaración devuelve el valor de la columna EDLEVEL como una cadena gráfica de longitud variable.

SELECT VARGRAPHIC(EDLEVEL)
 FROM EMPLOYEE_U
 WHERE LASTNAME = 'HAAS'

El valor resultante es G'18'.

Inicio del cambioEjemplo 2:fin del cambio
Inicio del cambio

FL 502 Supongamos que existe una tabla EMPLOYEE_U similar a la tabla de ejemplo EMPLOYEE, excepto que es una tabla Unicode. Las columnas SALARIO y COM se definen como DECIMALES con una precisión de 9 y una escala de 2. Supongamos que la empleada Christine Haas tiene un salario de 52750.00 y una comisión de 4220.00. Devuelva el total del salario y la comisión de la empleada Christine Haas como una cadena gráfica de longitud variable utilizando el carácter decimal coma.

SELECT VARGRAPHIC(SALARY + COMM, ',')
 FROM EMPLOYEE_U
 WHERE LASTNAME = 'HAAS'

El valor resultante es G'56970,00'.

fin del cambio
fin del cambio