Un componente dataTable se declara en un archivo EGL, que está descrito enProyectos, paquetes y archivos EGL. Este componente es un componente generable, lo que
significa que debe estar en el nivel superior del archivo y debe tener el mismo nombre que el
archivo.
Una dataTable se relaciona con un programa mediante la declaración de uso del programa o, en el
caso de la única tabla de mensajes del programa, por la propiedad
msgTablePrefix del programa.
Una dataTable está relacionada con un pageHandler por la declaración de uso del pageHandler.
Este es un ejemplo de un componente dataTable:
DataTable myDataTablePart type basicTable
{
{ shared = yes }
myColumn1 char(10);
myColumn2 char(10);
myColumn3 char(10);
{ contents = [
[ "row1 col1", "row1 col2", "row1 " + "col3" ] ,
[ "row2 col1", "row2 col2", "row2 " + "col3" ] ,
[ "row3 col1", "row3 col2", "row3 col3" ]
]
}
end
El diagrama de sintaxis para un componente dataTable es el siguiente:
- DataTable nombreComponenteTablaDatos ... end
- Identifica el componente como una dataTable y especifica el nombre del componente. Para conocer las reglas de denominación, consulte Convenios de denominación.
- basicTable (el valor por omisión)
- Contiene información que se utiliza en la lógica del programa; por ejemplo, una lista
de países y códigos relacionados.
- matchInvalidTable
- Se especifica en la propiedad validatorDataTable de un campo de texto
para indicar que la entrada del usuario debe ser distinta a cualquier valor de la primera columna
de la dataTable. La ejecución de EGL actúa de la siguiente manera como
respuesta a una anomalía de validación:
- Accede a la tabla referenciada en la propiedad validatorDataTable
- Recupera el mensaje identificado por la propiedad
validatorDataTableMsgKey específica del campo de texto
- Visualiza el mensaje en el campo de texto identificado en la propiedad
msgField específica del formulario
- matchValidTable
- Se especifica en la propiedad validatorDataTable de un campo de texto
para indicar que la entrada del usuario debe coincidir con un valor de la primera columna de la
dataTable. La ejecución de EGL actúa de la siguiente manera como
respuesta a una anomalía de validación:
- Accede a la tabla referenciada en la propiedad validatorDataTable
- Recupera el mensaje identificado por la propiedad
validatorDataTableMsgKey específica del campo de texto
- Visualiza el mensaje en el campo identificado en la propiedad
msgField específica del formulario
- msgTable
- Contiene mensajes de ejecución. Se presenta un mensaje bajo la siguiente circunstancia:
- La tabla es la tabla de mensajes del programa. La asociación de tabla y programa se produce si
la propiedad del programa msgTablePrefix hace referencia al
prefijo de tabla, que es el primero de los cuatro caracteres en el nombre
de la dataTable. El resto del nombre es uno de los códigos
de idioma nacional de la tabla siguiente.
Idioma |
Código de idioma nacional |
Portugués de Brasil |
PTB |
Chino simplificado |
CHS |
Chino tradicional |
CHT |
Inglés, mayúsculas |
ENP |
Inglés, EE.UU. |
ENU |
Francés |
FRA |
Alemán |
DEU |
Italiano |
ITA |
Japonés, Katakana (juego de caracteres de un solo byte) |
JPN |
Coreano |
KOR |
Español |
ESP |
Alemán de Suiza |
DES |
- El programa recupera y presenta un mensaje mediante uno de dos mecanismos, tal como se describe
en ConverseLib.displayMsgNum y ConverseLib.validationFailed.
- rangeChkTable
- Se especifica en la propiedad validatorDataTable de un campo de texto
para indicar que la entrada del usuario debe coincidir con un valor se esté entre los valores de la
primera y la segunda columnas de, como mínimo, una fila de tabla de datos. (El rango es inclusivo; la entrada del usuario es válida si coincide con un valor
de la primera o segunda columna de cualquier fila.) La ejecución de EGL actúa de la siguiente manera como
respuesta a una anomalía de validación:
- Accede a la tabla referenciada en la propiedad validatorDataTable
- Recupera el mensaje identificado por la propiedad
validatorDataTableMsgKey específica del campo de texto
- Visualiza el mensaje en el campo identificado en la propiedad
msgField específica del formulario
- "alias"
- Una serie incorporada a los nombres de la salida generada. Si no se especifica un alias, en su
lugar se utiliza el nombre de dataTable (o una versión truncada).
- shared
- Indica si múltiples programas de la misma unidad de ejecución utilizan la
misma instancia de una dataTable. Los valores válidos son yes y
no (valor por omisión). Si el valor de
shared es no, cada programa de la unidad de
ejecución tendrá una copia exclusiva de la dataTable.
La propiedad
indica si todos los programas de la misma unidad de ejecución utilizan la misma instancia de una
dataTable. Si el valor de shared es no, cada
programa de la unidad de ejecución tendrá una copia exclusiva de la dataTable.
En
CICS, la propiedad
indica si todos los programas de la región
CICS y todos los
programas de una unidad de ejecución determinado utilizan la misma instancia de una dataTable.
Si el valor de shared es no, cada programa de
la unidad de ejecución tendrá una copia exclusiva de la dataTable. Los cambios realizados
durante la ejecución son visibles para cada programa que tenga acceso a la dataTable y los cambios
permanecen hasta que se descarga la dataTable. En la mayoría de casos, el valor de la propiedad
resident (descrito más adelante) determine cuándo se descarga
la dataTable; para conocer más detalles, consulte la descripción de esa propiedad.
Es necesario un cuidado especial al diseñar los programas
CICS que tienen
sentencias de llamada o E/S y que acceden a la misma dataTable. Pueden producirse problemas cuando
un programa escribe en la dataTable mientras otro programa (que requiere datos sin cambios) está
suspendido hasta que finaliza una llamada o una operación de E/S.
- resident
- Indica si la dataTable se conserva en la memoria incluso después de finalizar cada programa que
ha accedido a la dataTable.
Los valores válidos son yes y no.
El valor predeterminado es no.
Si establece la propiedad
resident en sí, la dataTable se comparte
independientemente del valor de shared.
Las ventajas de que la
dataTable sea residente son las siguientes:
- La dataTable retiene los valores grabados en ella por los programas que se ejecutaron
anteriormente
- La tabla está disponible para su acceso inmediato sin proceso de carga adicional
Una dataTable residente permanece cargada hasta que la unidad de
ejecución finaliza. Una dataTable no residente, no obstante, se descarga cuando el programa que la
utiliza finaliza.
La
descarga de un programa resulta afectada por el sistema destino y si el programa es
residente:
- En las plataformas
Java, una
dataTable residente permanece cargada hasta que la unidad de ejecución finaliza. Una dataTable no residente, no obstante, se descarga cuando el programa que la
utiliza finaliza.
- En el proceso por lotes de
z/OS, una dataTable
residente permanece cargada hasta que no hay ningún programa generado por EGL (o programa
VisualAge
Generator) en la unidad de ejecución. Una dataTable no residente se descarga cuando el programa que
la utiliza finaliza.
- Para el proceso de
CICS, una dataTable
residente permanece cargada hasta que la región de
CICS finaliza o
hasta que un administrador utiliza el programa de utilidad de Enterprise Developer Server
new copy para renovar la tabla. Una dataTable no residente se descarga
cuando cada programa que la ha utilizado ha finalizado.
Nota: Una dataTable se carga en la memoria (si es necesario) en el primer acceso a un
programa, no cuando la ejecución de EGL procesa una declaración de uso.
- content
- El valor de las células de la dataTable, cada una de las cuales es de una de las siguientes
clases:
- Un literal numérico
- Un literal de serie o una concatenación de literales de serie
La clase de contenido de una fila dada debe ser compatible con los campos de estructura de
nivel superior, cada uno de los cuales representa una definición de columna.
- campoEstructura
- Un campo de estructura, como se describe en la sección Campo de estructura en formato fuente
EGL.