Para tener una visión general de los servicios, consulte la sección
Servicios EGL. Puede declarar servicios en un archivo EGL, como se
describe
en el apartado Formato fuente EGL.
El diagrama de sintaxis para un componente de servicio es el siguiente:

- Service
nombreComponenteServicio
...
end
- Identifica el componente como un servicio y especifica el nombre del
componente. Para conocer las normas de denominación, consulte la sección Convenios de
denominación.
- implementsnombreInterfaz
- Indica que el servicio implementa las interfaces especificadas. El significado
principal es que el servicio contiene todas las funciones descritas en la interfaz.
También
se aplican las siguientes normas:
- En una sentencia de asignación, una variable del tipo de interfaz puede recibir una
variable del tipo de servicio:
miInterfaz = miServicio;
- De forma parecida, en una invocación de función, un parámetro del tipo de interfaz
puede recibir un argumento del tipo de servicio
No es necesario que un servicio implemente una interfaz, aunque el usuario
utilice la interfaz para acceder a un función del servicio.
- propertyList
- Todas las propiedades son opcionales:
- @WSDL
- Sólo es significativa si una variable basada en el componente de servicio está
enlazada a un servicio Web.
Permite a EGL crear la definición WSDL (Web Service Description
Language) utilizada para interactuar con el código de tiempo de ejecución de
Java
JAX-RPC. Los campos de propiedad y sus tipos son los siguientes:
- elementName STRING
- Si este campo de propiedad está presente, el valor establece los siguientes
nombres:
- El nombre del archivo de definición WSDL.
- El nombre del portType WSDL.
- El nombre del elemento de enlace; pero el nombre del elemento tiene también el sufijo
Binding
- El nombre del elemento de servicio; pero el nombre del elemento tiene también el
sufijo
Service
Si el campo de propiedad no está presente, el nombre del componente de
servicio
se utiliza para las finalidades indicadas anteriormente.
Los datos son sensibles a
mayúsculas y minúsculas: por ejemplo, el nombre miServicio es diferente de
MISERVICIO.
- nameSpace STRING
- Establece el espacio de nombres global de destino para la definición WSDL. Si el
campo de propiedad no está presente, el valor se crea empezando por la serie
http:// e invirtiendo el orden de todos los calificadores del nombre de paquete;
por ejemplo, si el nombre de paquete es com.ibm.egl, el valor de nameSpace será el
siguiente:
http://egl.ibm.com
El valor es sensible a mayúsculas
y minúsculas: por ejemplo, el espacio de nombres http://egl.ibm.com es diferente
de http://EGL.IBM.com.
- isLastParamReturnValue BooleanKind
- Este campo de propiedad se pasa por alto en el contexto de un componente de servicio.
- alias STRING
- Identifica una serie que se incorpora a los nombres de la salida generada.
Si no
establece la propiedad alias, en su lugar se utiliza el nombre
del componente de servicio.
- localSQLScope BooleanKind
- Indica si los identificadores para los conjuntos de resultados SQL y las sentencias
preparadas son locales con respecto al código de servicio durante la invocación por parte
de otro código EGL, que es el valor
por omisión. Si acepta el valor yes, distintos programas pueden utilizar los
mismos identificadores independientemente y el código EGL que utiliza el servicio puede
utilizar independientemente los mismos identificadores que se utilizan en el servicio.
Si especifica no, los identificadores se comparten en toda la unidad de
ejecución. Los identificadores creados cuando las sentencias SQL del servicio se
invocan están disponibles en otro código que invoca el servicio, aunque el otro código
puede utilizar localSQLScope = yes para bloquear el acceso a
esos identificadores. Además, el servicio puede hacer referencia a los
identificadores
creados en el código invocante, pero solo si las sentencias
relacionadas
con SQL se hubieran ejecutado ya en el otro código y si el otro código no bloqueara el
acceso.
Los efectos de compartir identificadores SQL
son los siguientes:
- Puede abrir un conjunto de resultados en un código y obtener filas de ese conjunto en otro
- Puede preparar una sentencia SQL en un código y ejecutar esa sentencia en otra
En cualquier caso, los identificadores disponibles cuando el programa o
pageHandler accede al servicio están disponibles cuando el mismo programa o
pageHandler accede a la misma o a otra función del mismo servicio.
- useDeclaration
- Proporciona un acceso más fácil a una tabla de datos o biblioteca. Para conocer
detalles, consulte la sección Declaración de uso.
- private
- Indica que la función no está disponible fuera del servicio. Si omite el término
private, la función estará disponible.
Las variables
y constantes son necesariamente privadas, pero el calificador está disponible.
- nombreCampo
- Nombre de un campo primitivo. Para conocer las normas de denominación, consulte la
sección Convenios de denominación.
- primitiveType
- El tipo primitivo de un campo o, en relación con una matriz, el tipo primitivo de un
elemento de matriz.
- longitud
- La longitud del parámetro o (en relación con una matriz) la longitud de un elemento
de matriz. La longitud es un entero que representa el número de caracteres o dígitos en
el área de memoria a la que hace referencia nombreCampo o (en
el caso de una matriz) nombreMatrizDinámica.
- decimales
- Para un tipo numérico 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.
- "máscaraFechaHora"
- Para los tipos TIMESTAMP e INTERVAL puede especificar máscaraFechaHora", que asigna un
significado (como por ejemplo "dígito de año") a una posición determinada en el valor de fecha y
hora. La máscara está presente con los datos durante la ejecución.
- dataItemPartName
- El nombre de un componente dataItem que es visible al programa. Para obtener detalles
acerca de la visibilidad, consulte el apartado Referencias a componentes.
El
componente actúa como un modelo de formato, tal como se describe en Typedef.
- recordName
- El nombre de un registro. Para conocer las normas de denominación, consulte la
sección Convenios de denominación.
- recordPartName
- El nombre de un componente de registro que es visible al programa. Para obtener
detalles acerca de la visibilidad, consulte el apartado Referencias a componentes.
El componente actúa como un modelo de formato, tal como se describe en Typedef.
- constantName literal
- El nombre y valor de una constante. El valor puede ser una serie entrecomillada o un
número. Para conocer las normas de denominación, consulte la sección Convenios de
denominación.
- propiedadCampo
- Un par de propiedad y valor específico de un campo, tal como se describe en
la sección Visión general de propiedades y alteraciones temporales de EGL.
- recordProperty
- Un par de propiedad y valor específico de un registro. Para conocer detalles sobre
las propiedades disponibles, consulte el tema de referencia para el tipo de registro
específico.
Un registro básico no tiene propiedades.
- nombreCampo
- Nombre de un campo de registro cuyas propiedades desea alterar temporalmente. Consulte Visión general de propiedades y alteraciones temporales de EGL.
- arrayName
- Nombre de una matriz dinámica. Si utiliza esta opción, los demás símbolos a la
derecha (nombreComponenteElementoDatos,
tipoPrimitivo y demás) hacen referencia a cada elemento de la
matriz.
- size
- El número de elementos de la matriz. Si especifica el número de elementos, la matriz
se inicializa con el número de elementos especificado.
- componenteFunción
- Una función. Se aplican las siguientes restricciones:
- El tipo de retorno no puede ser de tipo ANY, BLOB ni CLOB.
- Un parámetro no puede incluir un campo de tipo ANY; no puede ser de tipo ANY, BLOB,
CLOB; no puede ser de tipo loose, como por ejemplo NUMBER; y no puede incluir el
modificador field o nullable
- Los parámetros con el modificador OUT deben estar al final de la lista de parámetros
La siguiente propiedad de función sólo es válida en un componente de servicio, y
sólo es significativa si la variable basada en ese componente está enlazada
a un servicio Web:
- @WSDL
- Permite a
EGL extraer datos de la definición WSDL (Web Service Description Language) para utilizarlos al
interactuar con el código de tiempo de ejecución de
Java
JAX-RPC. Los
campos de propiedad y sus tipos son los siguientes:
- elementName STRING
- Si este campo de propiedad está presente, el valor pasa a ser el nombre del elemento
de operación WSDL para la función. Si el campo de propiedad no está presente, se utiliza
el nombre de la función. Los datos son sensibles a mayúsculas y minúsculas: por ejemplo,
el nombre miFuncion es diferente de MIFUNCION.
- nameSpace STRING
- Este campo de propiedad se pasa por alto en el contexto de una función.
- isLastParamReturnValue BooleanKind
- Este campo de propiedad se pasa por alto en el contexto de una función.
Para conocer
detalles, consulte Componente de función en formato fuente EGL.