Un archivo EGL contiene un
conjunto de componentes cada uno de los cuales es una unidad discreta y con nombre. Algunos componentes (como por ejemplo un programa) son componentes generables; cada uno de los cuales constituye la base de una unidad compilable. Un componente generable debe tener el mismo nombre que el archivo fuente EGL
que contiene el componente.
Un archivo fuente EGL (extensión .egl) puede incluir cero o un componente generable y de cero a muchos otros componentes.
Los componentes se dividen en las categorías siguientes:
- Los componentes lógicos definen una secuencia de tiempo de ejecución que se escribe en el lenguaje de procedimiento EGL.
- El componente no generable function es la unidad de lógica básica. El resto de especies de
componentes lógicos pueden incluir funciones.
- Puede definir dos tipos de programas que se diferencian por el tipo de interfaz. Cada
uno es un componente generable:
Puede definir cada tipo de programa para que sea un
programa principal.
Esa clase de programa se inicia de cualquiera de estas formas:
- Por el usuario
- Por una transferencia de programa que no sea una llamada
- Directamente por un proceso de sistema operativo
Además, puede declarar cualquiera de los dos tipos de programa para que sea un
programa llamado, al que solamente puede invocarse mediante una
llamada.
Para obtener información detallada sobre el despliegue en tiempo
de ejecución de los programas principales y llamados, consulte Configuraciones de
tiempo de ejecución.
- Un PageHandler es un componente generable que controla la interacción
entre el usuario y una página Web.
- Un manejador del tipo JasperReport es un componente generable que
contiene funciones personalizadas que se invocan en momentos distintos durante la ejecución de un
archivo de diseño JasperReports. Los datos devueltos por cada función se incluyen en el informe de
salida, que puede representarse en formato PDF, XML, texto o HTML.
- Una biblioteca también es un componente generable, un conjunto de
funciones y variables compartidas que pueden ponerse a disposición de programas, pageHandlers y
otras bibliotecas.
- Los componentes de datos definen las estructuras de datos que están disponibles en el programa.
Las clases siguientes de componentes de datos se utilizan como tipos en declaraciones de
variable:
- Los componentes DataItem contienen información acerca de las clases de datos más elementales. Estos componentes son parecidos a las entradas de un diccionario de datos de todo el sistema; cada componente incluye detalles acerca del tamaño de los datos, el tipo, las reglas de
formato, las reglas de validación de entra y las sugerencias de visualización. Un componente
DataItem se define una vez y puede utilizarlo como la base para cualquier número de variables
primitivas o campos de registro.
El componente DataItem proporciona una forma adecuada de crear
una variable a partir de un tipo primitivo. Por ejemplo, tenga en cuenta la definición siguiente de
myStringPart, que es un componente DataItem de tipo serie:
DataItem
MyStringPart String { validValues = ["abc", "xyz"] }
end
Cuando desarrolla una función, puede declarar una variable de tipo
MyStringPart:
myString MyStringPart;
La declaración siguiente tiene
el mismo efecto que la anterior:
myString STRING { validValues = ["abc", "xyz"] };
Tal como se muestra, el nombre de un componente DataItem es simplemente un alias para un tipo
primitivo con valores de propiedad específicos.
- Los componentes de registro son una bases para datos complejos.
Una variable cuyo tipos es un componente de registro incluye campos. Cada campo puede estar basado
en cualquiera de los elementos siguientes:
- Un tipo primitivo como por ejemplo STRING
- Un componente DataItem
- Un registro fijo (tal como se describe más adelante)
- Otro componente de registro
- Una matriz de cualquiera de las clases precedentes
Cada campo puede ser también un diccionario o un ArrayDictionary (tal como se describe
posteriormente) o una matriz de diccionarios o ArrayDictionaries.
La variable basada en un
componente de registro se llama registro y la longitud de los datos del registro puede variar en
tiempo de ejecución.
Puede utilizar un componente de registro para crear variables para el
proceso general o para acceder a una base de datos relacional.
- Los componentes de registro fijo son una base para los datos complejos que son de longitud fija. Una variable cuyo tipo es un componente de registro fijo
incluye campos y cada campo puede tener cualquiera de los elementos siguientes como un tipo:
- Un tipo primitivo como por ejemplo CHAR
- Un componente dataItem
Cada campo puede estar subestructurado. Por ejemplo un campo que especifica un número de
teléfono puede definirse de la forma siguiente:
10 phoneNumber CHAR(10);
20 areaCode CHAR(3);
20 localNumber CHAR(7);
Aunque puede utilizar componentes de registro fijo para cualquier clase de
proceso, se utilizan principalmente para operaciones de E/S en archivos VSAM, colas de mensajes
MQSeries y otros
archivos secuenciales.
En cierta medida, EGL soporta componentes de registro fijos para
permitir la compatibilidad con productos anteriores como por ejemplo
VisualAge
Generator.
Aunque puede utilizar registros fijos para acceder a bases de datos relacionales o para proceso
general, es recomendable que evite utilizar registros fijos para esos propósitos.
- Un componente de diccionario siempre está disponible; no se define. Una variable basada en un componente de diccionario puede incluir un conjunto de claves y
los valores relacionados y puede añadir y eliminar entradas de clave y valor en tiempo de ejecución.
- Un componente ArrayDictionary siempre está disponible; no se define. Una variable basada en un componente ArrayDictionary permite acceder a una serie de matrices recuperando el mismo elemento numerado de cada matriz. Un conjunto de elementos recuperado
de esta forma es en sí mismo un diccionario con cada nombre de matriz tratado como una clave
emparejada con el valor en el elemento de matriz.
Un ArrayDictionary resulta especialmente útil en relación con la tecnología de visualización descrita en la sección Interfaz de usuario de consola.
El otro componente de datos es DataTable, que se trata como
una variable en lugar de como tipo de variable. DataTable es un componente generable que pueden compartir varios programas. Contiene una serie de filas y columnas, incluye un valor primitivo en cada casilla y se
trata como una variable que (en muchos casos) es global para la unidad de ejecución.
- Los componentes UI (interfaz de usuario) describen el diseño de los datos
presentados al usuario en la pantalla de fonts fijos y los formularios de impresión. Los
componentes de UI se utilizan en contextos distintos y son de los tipos siguientes:
- Un componente de registro de subtipo
ConsoleForm es una organización de datos que se presenta al usuario en el
contexto de la tecnología consoleUI. Igual que otros componentes de registro, cada uno se utiliza como un tipo para una o varias variables pero, en este caso, cada variable se llama
formulario de consola en lugar de registro. La tecnología ConsoleUI también incluye otros componentes que se definen automáticamente y que pueden utilizarse como base de las variables; para obtener detalles, consulte el apartado Interfaz de usuario de consola
- Un formulario también es una organización de datos presentada al usuario. Una clase de formulario organiza los datos enviados a una pantalla en un programa textUI y
otro organiza los datos enviados a una impresora en cualquier clase de programa.
Cada formulario incluye una estructura fija e interna como la de un registro fijo, pero un
formulario no puede incluir una subestructura.
Un formulario sólo está a disposición de un
programa, PageHandler o biblioteca si un FormGroup incluye o hace referencia al formulario, tal como se describe a continuación.
- Un componente FormGroup es un conjunto de texto y formularios de
impresión y es un componente generable. Un programa sólo puede incluir un formGroup para la mayoría
de usos, junto con un formGroup para la salida relacionada con la ayuda. Puede incluirse el mismo
formulario en múltiples FormGroups.
Los formularios de un FormGroup son globales para un programa, aunque el acceso debe especificarse en una sentencia de utilización específica de programa. Se hace
referencia a los formularios como variables.
Las interfaces de usuario Web se crean con Page Designer, que crea un archivo JSP y lo
asocia a un pageHandler EGL. El archivo JSP sustituye el cometido de un componente UI para las
aplicaciones que interactúan con el usuario mediante la Web.
- Los componentes de construcción se definen en archivos de construcción EGL (extensión .eglbld)
y definen diversas características de proceso:
- Un componente descriptor de construcción controla el proceso de generación e indica qué otros componentes de control se leen durante dicho proceso.
- Un componente de opciones de enlace proporciona detalles sobre cómo un programa generado se transfiere a otros programas. La información contenida en este componente se utiliza durante la generación, la prueba y la ejecución.
- Un componente de asociaciones de recursos relaciona un registro EGL con la información necesaria para acceder a un archivo de una determinada plataforma destino; la información contenida en este componente se utiliza durante la generación, la prueba y la ejecución.
Un registro fijo, DataTable o formulario (ya sea texto o impresión) incluye una estructura
fija. La estructura se compone de una serie de campos, cada uno de los cuales tiene un tamaño y
un tipo que se conocen durante la generación y, en el caso de DataTable o un registro fijo, el campo
puede subestructurarse.