Cada tipo primitivo EGL caracteriza un área de memoria. Estas son las tres clases de tipos
primitivos: de carácter, numéricos y de fecha y hora.
- Las tipos de carácter son los siguientes:
- CHAR hace referencia a caracteres de un solo byte.
- DBCHAR hace referencia a caracteres de doble byte. dbchar
sustituye a DBCS, que era un tipo primitivo en EGL V5.
- MBCHAR hace referencia a caracteres multibyte, que son una combinación de caracteres de un solo byte y de doble byte. mbchar
sustituye a MIX, que era un tipo primitivo en EGL V5.
- STRING hace referencia a un campo de longitud variable en la que los
caracteres de doble byte se ajustan a los estándares de codificación UTF-16 desarrollados por
Unicode Consortium.
- UNICODE hace referencia a un campo fijo en el que los caracteres de
doble byte se ajustan a los estándares de codificación UTF-16 desarrollados por Unicode Consortium.
- HEX hace referencia a caracteres hexadecimales.
- Los tipos de fecha y hora son los siguientes:
- DATE hace referencia a una fecha de calendario específica que tiene
una longitud fija de ocho dígitos de un solo byte.
- INTERVAL hace referencia a un intervalo de tiempo cuya longitud va de
dos a veintisiete dígitos de un solo byte.
- TIME hace referencia a una instancia temporal con una longitud de
seis dígitos de un solo byte.
- TIMESTAMP hace referencia a la hora actual y tiene una longitud que
va de dos a veintisiete dígitos de un solo byte.
- Los tipos de objeto grandes son los siguientes:
- BLOB hace referencia a un objeto grande con una longitud que va de un
byte a dos gigabytes.
- CLOB hace referencia a un objeto de caracteres grande con una
longitud que va de un byte a dos gigabytes.
- Las tipos numéricos son los siguientes:
- BIGINT hace referencia a un área de 8 bytes que almacena un entero de 18 dígitos como máximo. Este tipo es equivalente al tipo BIN, longitud
8, sin posiciones decimales.
- BIN hace referencia a un número binario.
- DECIMAL hace referencia a caracteres decimales empaquetados cuyo signo está representado por una C hexadecimal (para un número positivo) o por una D hexadecimal (para un número negativo) en la mitad derecha del byte situado más a la derecha.
DECIMAL sustituye a PACK que era un tipo primitivo en la versión 5.0 de EGL.
- FLOAT hace referencia a un área de 8 bytes que almacena números de
coma flotante de precisión doble con 16 dígitos significativos como máximo.
- INT hace referencia a un área de 4 bytes que almacena un entero de 9
dígitos como máximo. Este tipo es equivalente al tipo BIN, longitud
4, sin posiciones decimales.
- MONEY hace referencia a las cantidades de divisa, que se almacenan
como valores DECIMAL.
- NUM hace referencia a caracteres numéricos cuyo signo está representado por un valor hexadecimal específico de signo en la mitad izquierda del byte situado más a la derecha. En ASCII, ese valor es 3 (para un número positivo) y 7 (para un número negativo); en EBCDIC, ese valor es F (para un número positivo) y D (para un número negativo).
- NUMC hace referencia a caracteres numéricos cuyo signo está representado por un valor hexadecimal específico de signo en la mitad izquierda del byte situado más a la derecha. En ASCII, ese valor es 3 (para un número positivo) y 7 (para un número negativo); en EBCDIC, ese valor es F (para un número positivo) y C (para un número negativo).
- PACF hace referencia a caracteres decimales empaquetados cuyo signo está representado por una F hexadecimal (para un número positivo) o por una D hexadecimal (para un número negativo) en la mitad derecha del byte situado más a la derecha.
- SMALLFLOAT hace referencia a un área de 4 bytes que almacena un
número de coma flotante de precisión simple, como 8 dígitos significativos como máximo.
- SMALLINT hace referencia a un área de 2 bytes que almacena un entero de 4 dígitos como máximo. Este tipo es equivalente al tipo BIN, longitud
2, sin posiciones decimales.
La representación interna de un campo de cualquiera de los tipos numéricos de coma fija es
la misma que una representación de entero, aunque especifique una coma decimal. Por ejemplo, la representación de 12.34 es la misma que la de 1234.
De la misma forma, no se almacenan símbolos de divisa con campos de tipo MONEY.
Al
interactuar con DB2
(directamente o a través de JDBC) o al generar para COBOL, el número
máximo de dígitos de un número de coma fija es 31.
Una variable de tipo ANY recibe el tipo de valor asignado a esa variable, tal como se describe
en el tipo ANY.
Durante la declaración, se especifica el tipo primitivo que caracteriza cada uno de estos valores:
- El valor devuelto por una función
- El valor de un campo, que es un área de memoria a la que se hace referencia por nombre y
contiene un solo valor
Otras entidades también tienen un tipo primitivo:
- Una variable de sistema tiene un tipo primitivo (generalmente NUM) que es específico del campo
- Un literal de carácter pertenece a uno de los siguientes tipos:
- CHAR si el literal incluye sólo caracteres de un solo byte
- DBCHAR si el literal incluye sólo caracteres de doble byte del juego de caracteres de doble byte
- MBCHAR si el literal incluye una combinación de caracteres de un solo byte y de doble byte
- Los literales de caracteres de tipo UNICODE no están soportados.
Cada tipo primitivo se describe en una página independiente, y encontrará detalles adicionales en las páginas que describen las asignaciones, las expresiones lógicas, las invocaciones de función y la sentencia call.
Las secciones que siguen describen estos temas: