Componente de formulario en formato fuente EGL

Un componente de formulario se declara en un archivo EGL, como se describe en el apartado Formato fuente EGL. Si sólo un grupo de formularios accede a un componente de formulario, es aconsejable que éste esté incorporado al componente formGroup. Si varios grupos grupo de formularios acceden a un componente de formulario, es necesario especificar el componente de formulario en el nivel superior de un archivo EGL.

A continuación se ofrece un ejemplo de formulario de texto:
  Form myTextForm type textForm 
    {
      formsize= [24, 80],
      position= [1, 1],
      validationBypassKeys=[pf3, pf4],
      helpKey="pf1",
      helpForm="myHelpForm",
      msgField="myMsg",
      alias = "form1"
    }

     * { position=[1, 31], value="Sample Menu" } ;
     * { position=[3, 18], value="Activity:" } ;
     * { position=[3, 61], value="Command Code:" } ;

     activity char(42)[5] { position=[4,18], protect=skip } ;
   
     commandCode char(10)[5] { position=[4,61], protect=skip } ;

     * { position=[10, 1], value="Response:" } ;
     response char(228) { position=[10, 12], protect=skip } ;

     * { position=[13, 1], value="Command:" } ;
     myCommand char(70) { position=[13,10] } ;

     * { position=[14, 1], value="Enter=Run F3=Exit"} ;

      myMsg char(70) { position=[20,4] };

		end  
A continuación se ofrece un ejemplo de formulario de impresión:
  Form myPrintForm type printForm 
    {
      formsize= [48, 80],
      position= [1, 1],
      msgField="myMsg",
      alias = "form2"
    }
    * { position=[1, 10], value="Your ID: " } ;
    ID char(70) { position=[1, 30] };
    myMsg char(70) { position=[20, 4] };
 	end  
El diagrama de un componente de formulario es el siguiente:

Diagrama de sintaxis para un componente de formulario
Form nombreFormulario ... end
Identifica el componente como formulario y especifica el nombre del componente. Para conocer las normas de denominación, consulte el apartado Convenios de denominación.
textForm
Indica que el formulario es de texto.
propiedadFormularioTexto
Una propiedad de formulario de texto. Para obtener detalles, consulte el apartado Formulario de texto.
campoFormularioTexto
Un campo de formulario de texto. Para obtener detalles, consulte el apartado Campos de formulario.
printForm
Indica que el formulario es de impresión.
propiedadFormularioImpresión
Una propiedad de formulario de impresión. Para obtener detalles, consulte el apartado Formulario de impresión.
campoFormularioImpresión
Un campo de formulario de impresión. Para obtener detalles, consulte el apartado Campos de formulario.

Propiedades de formulario de texto

Las propiedades de formulario de texto son las siguientes:
formsize = [filas, columnas]
Número de filas y columnas del área de presentación en línea. Esta propiedad es obligatoria.

El valor de columna es equivalente al número de caracteres de un solo byte que pueden visualizarse en el área de presentación.

position = [fila, columna]
Fila y columna en las que se visualiza el formulario en el área de presentación. Si omite esta propiedad, el formulario será flotante y se visualizará en el área flotante, en la próxima línea libre en la que quepa todo el formulario del área flotante.
validationBypassKeys = [valorTeclaSalto]
Identifica una o varias pulsaciones de teclas que provocan que el entorno de ejecución EGL pase por alto validaciones de campos de entrada. Esta propiedad resulta de utilidad para reservar una pulsación que finaliza el programa con rapidez. La opción valorTeclaSalto es la siguiente:
pfn
El nombre de una tecla F o PF, que incluye un número entre 1 y 24
Nota: Las teclas de función de un teclado de PC son con frecuencia teclas F, como por ejemplo F1, pero EGL utiliza la terminología IBM PF a fin de que (por ejemplo) F1 se denomine PF1.
Si desea especificar más de un valor de tecla, delimite el conjunto de valores con paréntesis y separe cada uno de los valores del siguiente con una coma, como en el ejemplo siguiente:
  validationBypassKeys = [pf3, pf4]  
helpKey = "valorTeclaAyuda"
Identifica una pulsación de tecla del usuario que provoca que el entorno de ejecución EGL presente un formulario de ayuda al usuario. La opción valorTeclaAyuda es la siguiente:
pfn
El nombre de una tecla F o PF, que incluye un número entre 1 y 24
Nota: Las teclas de función de un teclado de PC son con frecuencia teclas F, como por ejemplo F1, pero EGL utiliza la terminología IBM PF a fin de que (por ejemplo) F1 se denomine PF1.
helpForm = "nombreFormulario"
Nombre del formulario de ayuda específico del formulario de texto.
msgField = "nombreCampo"
Nombre del campo de formulario de texto que visualiza un mensaje en respuesta a un error de validación o en respuesta a la ejecución de ConverseLib.displayMsgNum.
alias = "alias"
Un alias de 8 caracteres como máximo, destinado al entorno de ejecución EGL. es necesario un alias en un entorno COBOL si el nombre de formulario supera los 8 caracteres.

Propiedades de formulario de impresión

Las propiedades de formulario de impresión son las siguientes:
formsize = [filas, columnas]
Número de filas y columnas del área de presentación en línea. Esta propiedad es obligatoria.

El valor de columna es equivalente al número de caracteres de un solo byte que pueden visualizarse en el área de presentación.

position = [fila. columna]
Fila y columna en las que se visualiza el formulario en el área de presentación. Si omite esta propiedad, el formulario será flotante y se visualizará en el área flotante, en la próxima línea libre en la que quepa todo el formulario del área flotante.
addSpaceForSOSI = yes, addSpaceForSOSI = no)
Dirige la producción de informes en los entornos COBOL. Si establece la propiedad en no, el entorno de ejecución EGL imprime la línea tal cual, incluyendo los caracteres de desplazamiento a teclado ideográfico y a teclado estándar (SO/SI) que se encuentren en campos de tipo MBCHAR. Si establece la propiedad en yes (valor por omisión), el entorno de ejecución EGL coloca un espacio en lugar de cada uno de los caracteres SO/SI.

Para que el formulario impreso utilice las mismas columnas que en la definición del formulario, especifique no para las impresoras que imprimen un espacio para cada carácter SO o SI y especifique yes para las impresoras que eliminan los caracteres SO o SI de la línea de impresión.

msgField = "nombreCampo"
Nombre del campo de formulario de texto que visualiza un mensaje en respuesta a la ejecución de ConverseLib.displayMsgNum.
alias = "alias"
Un alias de 8 caracteres como máximo, destinado al entorno de ejecución EGL. es necesario un alias en un entorno COBOL si el nombre de formulario supera los 8 caracteres.

Campos de formulario

El diagrama de un campo de formulario es el siguiente:


Diagrama de sintaxis de un campo de formulario
*
Indica que el campo es de constante. No tiene ningún nombre sino un valor de constante, que se especifica en la propiedad value específica del campo. Las sentencias del código no pueden acceder al valor de un campo de constante.
propiedadCampo
Una propiedad de campo. Para obtener detalles, consulte el apartado Propiedades de campo.
nombreCampo
Especifica el nombre del campo. Para conocer las normas de denominación, consulte el apartado Convenios de denominación.

El código puede acceder al valor de un campo con nombre, también llamado campo de variable.

Si un formulario de texto contiene un campo de variable que empieza en una línea y finaliza en otra, el formulario de texto sólo podrá visualizarse en pantallas cuya anchura sea igual a la del formulario.

apariciones
El número de elementos de una matriz de campos. Sólo están soportadas las matrices unidimensionales. Para obtener detalles, consulte el apartado Para matrices de campos.
tipoPrimitivo
El tipo primitivo asignado al campo. Esta especificación afecta a la longitud máxima, pero cualquier campo numérico se generar como de tipo NUM.

Los formularios que contienen campos de tipo DBCHAR sólo pueden utilizarse en sistemas y dispositivos que den soporte a juegos de caracteres de doble byte. De forma similar, los formularios que contienen campos de tipo MBCHAR sólo pueden utilizarse en sistemas y dispositivos que den soporte a juegos de caracteres multibyte.

Los tipos primitivos FLOAT, SMALLFLOAT y UNICODE no están soportados para formularios de texto ni de impresión.

longitud
La longitud del campo, que es un entero que representa el número máximo de caracteres o dígitos que puede contener el campo.
decimales
Para un tipo numérico (BIN, DECIMAL, NUM, NUMC o PACF), puede especificar decimales, que es un entero que representa el número de posiciones después de la coma decimal. El número máximo de posiciones decimales es el menor de dos números: 18 o el número de dígitos declarado como longitud. La coma decimal no se almacena con los datos.
nombreComponenteElementoDatos
El nombre de un componente dataItem que actúa como modelo de formato del campo, como se describe en typeDef. El componente dataItem debe ser visible para el componente de formulario, como se describe en el apartado Referencias a componentes.

Propiedades de campo

Esta sección describe las propiedades que sólo son útiles en los campos de formulario. También existen otras propiedades de interés, como se describe en los apartados Propiedades de presentación de campos, propiedades de formato y Propiedades de validación.

Para cualquier campo

Las siguientes propiedades son útiles para cualquier campo de un formulario:
position = [fila. columna]
Fila y columna del byte de atributo que precede al campo. Esta propiedad es obligatoria.
value = "literalSerie"
Una serie de caracteres que se visualiza en el campo. Las comillas son necesarias.

Esta propiedad puede especificarse para cualquier elemento; por ejemplo, en una declaración de componente dataItem.

Nota: Si está en vigor la compatibilidad de VisualAge Generator y establece la propiedad de formulario de texto value, el contenido de esa propiedad estará disponible en el programa sólo después de que el usuario haya devuelto el formulario. Por esta razón, no es necesario que el valor establecido en el programa sea válido para el elemento del programa.
fieldLen = longitudEnBytes
Longitud del campo; el número de caracteres de un solo byte que pueden visualizarse en el campo. Este valor no incluye el byte de atributo que lo precede.

El valor de fieldLen para campos numéricos debe ser lo suficientemente grande para visualizar el número mayor que el campo pueda contener, además de una coma decimal (si el número tiene posiciones decimales). El valor de fieldLen para un campo de tipo CHAR, DBCHAR, MBCHAR o UNICODE debe ser lo suficientemente grande para contener los caracteres de doble byte, así como los caracteres de desplazamiento a teclado ideográfico y a teclado estándar.

El valor por omisión de fieldLen es el número de bytes necesario para visualizar el mayor número posible para el tipo primitivo, incluidos todos los caracteres de formato.

Para campos de texto variables

Las siguientes propiedades son útiles para campos de texto variables:
cursor = no, cursor = yes
Indica si el cursor de la pantalla se encuentra al principio del campo cuando el formulario se visualiza por primera vez. Sólo un campo del formulario puede tener la propiedad cursor establecida en yes. El valor por omisión es no.
detectable = no, detectable = yes
Especifica si se establece el código de datos modificados del campo cuando éste se selecciona mediante un lápiz óptico o (en sesiones de emulador) mediante una pulsación del cursor.

La propiedad detectable está disponible solamente para programas COBOL y solamente para campos de formulario de texto cuya propiedad intensity no sea invisible.

El carácter inicial del contenido del campo (como se especifica en la propiedad value) debe ser un carácter de designación, que indica qué acción se lleva a cabo cuando el usuario pulsa en el campo. Los caracteres de designación más comunes son los siguientes:
&
Provoca una detección inmediata, que significa que pulsar en el campo durante la ejecución equivale a modificar el campo y pulsar la tecla Intro.
?
Provoca una detección retardada, que significa que pulsar en el campo durante la ejecución es equivalente a modificar el campo, pero que el programa recibe la información de formulario solamente cuando el usuario pulsar la tecla Intro o pulsa en un campo configurado para una detección inmediata.

Para evitar que el usuario cambie el carácter designador en un campo de variable, establezca la propiedad protect en yes o skip.

Los terminales de IBM 3278 y 3279 dan soporte a ambas clases de detecciones. Los terminales de IBM 3277 solamente dan soporte a la detección retardada. Por lo general, se recomienda revisar la documentación de los terminales o emuladores que desee soportar.

modified = no, modified = yes
Indica si el programa considerará el campo como modificado, independientemente de que el usuario haya cambiado el valor. Para obtener detalles, consulte el apartado Código de datos modificados y propiedad modified.

El valor por omisión es no.

protect = no, protect = skip, protect = yes
Especifica si el usuario puede acceder al campo. Los valores válidos son los siguientes:
no (el valor por omisión para los campos de variable)
Establece el campo de forma que el usuario pueda sobreescribir el valor en él.
skip (el valor por omisión para los campos de constante)
Establece el campo de forma que el usuario no pueda sobreescribir el valor en él. Además, el cursor pasa por alto el campo en cualquiera de estos casos:
  • El usuario trabaja en el campo anterior por orden de tabulación y pulsa el tabulador o rellena ese campo anterior con contenido; o
  • El usuario trabaja en el campo siguiente por orden de tabulación y pulsa Mayúsculas Tabulador.
yes
Establece el campo de forma que el usuario no pueda escribir encima del valor que haya en él.
validationOrder = entero
Indica la posición del campo en el orden de validación. El orden por omisión en el que se validan los campos es el orden de los campos en la pantalla, de izquierda a derecha y de arriba a abajo.

Para matrices de campos

Las matrices unidimensionales están soportadas en los formularios de texto y de impresión. En una declaración de matriz, el valor de la propiedad occurs es mayor que 1, como en este ejemplo:
  myArray char(1)[3];	

Los elementos de la matriz se colocan en relación a la situación especificada para el primer elemento de la matriz. El comportamiento por omisión es colocar los elementos verticalmente en filas consecutivas.

Utilice las siguientes propiedades para variar el comportamiento por omisión:
columns = númeroDeElementos
Número de elementos de matriz en cada fila. El valor por omisión es 1.
linesBetweenRows = númeroDeLíneas
Número de líneas entre cada fila que contiene elementos de matriz. El valor por omisión es 0.
spacesBetweenColumns = númeroDeEspacios
Número de espacios entre cada elemento de matriz. El valor por omisión es 1.
indexOrientation = down, indexOrientation = across
Especifica cómo hace referencia el programa a los elementos de una matriz.
  • Si establece indexOrientation en down, los elementos se numeran de arriba a abajo y luego de izquierda a derecha, de forma que los elementos de una columna determinada queden numerados secuencialmente. Por omisión, el valor de indexOrientation es down.
  • Si establece indexOrientation en across, los elementos se numeran de izquierda a derecha y luego de arriba a abajo, de forma que los elementos de una fila determinada queden numerados secuencialmente.
Puede alterar temporalmente ciertas propiedades de un elemento de matriz. En la siguiente declaración de campo, por ejemplo, la propiedad cursor se altera temporalmente en el segundo elemento de myArray:
  myArray char(10)[5]	
    {position=[4,61], protect=skip, myArray[2] { cursor = yes} };
Condiciones de uso | Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.