Devolver valores a EGL

Para llamar una función C, EGL utiliza una pila de argumentos, un mecanismo que pasa argumentos entre las funciones y el código de llamada. La función de llamada de EGL pone los argumentos en la pila y la función C llamada los saca de la pila para utilizar los valores. La función llamada pone los valores de retorno en la pila y el llamador los saca para recuperar los valores. Las funciones externas de extracción y de llamada se proporcionan con la biblioteca de pila de argumentos. Las funciones externas de retorno se describen a continuación; las funciones externas de extracción se describen en el apartado Recibir valores de EGL.

Las funciones de retorno externas copian sus argumentos en el almacenamiento asignado fuera de la función de llamada. Este almacenamiento se libera cuando se extrae el valor devuelto. Esta situación posibilita la devolución de valores de variables locales de la función.

Nota: Las funciones de devolución se utilizaban originalmente con IBM Informix 4GL (I4GL), de aquí la inclusión de "4gl" en los nombres de función.

Funciones de biblioteca para devolver valores

Las funciones de biblioteca siguientes están disponibles para devolver valores:

La tabla siguiente correlaciona los nombres de función de devolución entre I4GL anteriores a la Versión 7.31 y la Versión 7.31 y posteriores:
Nombre anterior a la Versión 7.31 Nombre de la Versión 7.31 y posteriores
retint ibm_lib4gl_returnMInt
retshort ibm_lib4gl_returnInt2
retlong ibm_lib4gl_returnInt4
retflo ibm_lib4gl_returnFloat
retdub ibm_lib4gl_returnDouble
retdec ibm_lib4gl_returnDecimal
retquote ibm_lib4gl_returnQuotedStr
retstring ibm_lib4gl_returnString
retvchar ibm_lib4gl_returnVarChar
retdate ibm_lib4gl_returnDate
retdtime ibm_lib4gl_returnDateTime
retinv ibm_lib4gl_returnInterval

El argumento de ibm_lib4gl_returnQuotedStr( ) es una serie terminada en nulo. La función ibm_lib4gl_returnString( ) se incluye solo por simetría; internamente llama a ibm_lib4gl_returnQuotedStr( ).

La función C puede devolver datos de cualquier forma que sea conveniente. Si la conversión es posible, EGL convierte el tipo de datos según sea necesario al extraer el valor. Si la conversión de tipo de datos no es posible, se produce un error.

Las funciones C llamadas desde EGL deben salir siempre con la sentencia return(n), donde n es el número de valores de retorno puestos en la pila. Una función que no devuelve nada debe salir con return(0).

Consulta relacionada
Funciones BIGINT para C
Tipos de datos C y tipos primitivos EGL
Invocar una función C desde un programa EGL
Utilizar funciones C con EGL
Funciones DATE para C
Funciones DATETIME e INTERVAL para C
Funciones DECIMAL para C
Recibir valores de EGL

Condiciones de uso | Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.