Funciones de pila para C

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 extracción se describen a continuación, según el tipo de datos del valor que cada una extrae de la pila de argumentos. Las funciones externas de devolución se describen en el apartado Funciones de devolución para C.

Nota: Las funciones de extracció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

Puede llamar a las funciones de biblioteca siguientes desde una función C para extraer valores de número de la pila de argumentos:
Las tablas siguientes correlacionan los nombres de función de retorno entre I4GL anterior 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
popint ibm_lib4gl_popMInt
popshort ibm_lib4gl_popInt2
poplong ibm_lib4gl_popInt4
popflo ibm_lib4gl_popFloat
popdub ibm_lib4gl_popDouble
popdec ibm_lib4gl_popDecimal
Cada una de estas funciones, como todas las funciones de biblioteca para extraer valores, realiza las acciones siguientes:
  1. Elimina un valor de la pila de argumentos.
  2. Convierte el tipo de datos si es necesario. Si el valor de la pila no puede convertirse al tipo especificado, se produce un error.
  3. Copia el valor en la variable designada.

Los tipos de estructura dec_t y ifx_int8_t se utilizan para representar datos DECIMAL y BIGINT en un programa C. Para obtener más información acerca de los tipos de estructura dec_t y ifx_int8_t y de las funciones de biblioteca para manipular e imprimir las variables DECIMAL y BIGINT, consulte la publicación IBM Informix ESQL/C Programmer's Manual.

Funciones de biblioteca para extraer series de caracteres

Puede llamar las funciones de biblioteca siguientes para extraer valores de caracteres:

Nombre anterior a la Versión 7.31 Nombre de la Versión 7.31 y posteriores
popquote ibm_lib4gl_popQuotedStr
popstring ibm_lib4gl_popString
popvchar ibm_lib4gl_popVarChar

Tanto ibm_lib4gl_popQuotedStr( ) como ibm_lib4gl_popVarChar( ) copian exactamente len bytes en el almacenamiento intermedio de series *qv. Aquí ibm_lib4gl_popQuotedStr( ) se rellena con espacios según sea necesario, pero ibm_lib4gl_popVarChar( ) no se rellena en toda su longitud. El byte final copiado en el almacenamiento intermedio es un byte nulo para terminar la serie por lo que la longitud de datos de serie máxima es len-1. Si el argumento de pila es mayor que len-1, se pierden los bytes de cola.

El argumento len establece el tamaño máximo del almacenamiento de serie de recepción. Utilizando ibm_lib4gl_popQuotedStr( ), se reciben exactamente len bytes (incluyendo espacios en blanco de cola y el nulo), incluso si el valor de la pila es una serie vacía. Para averiguar la longitud de datos verdadera de una serie recuperada por ibm_lib4gl_popQuotedStr( ), debe recortar los espacios de cola del valor extraído.
Nota: Las funciones ibm_lib4gl_popString( ) y ibm_lib4gl_popQuotedStr( ) son idénticas, excepto por el hecho de que ibm_lib4gl_popString( ) recorta automáticamente los blancos de cola.

Funciones de biblioteca para extraer valores de hora

Puede llamar las funciones de biblioteca siguientes para extraer valores DATE, INTERVAL y DATETIME (TIMESTAMP):

Puede llamar la función de biblioteca siguiente para extraer valores TIMESTAMP:
Nombre anterior a la Versión 7.31 Nombre de la Versión 7.31 y posteriores
popdate ibm_lib4gl_popDate
popdtime ibm_lib4gl_popDateTime
popinv ibm_lib4gl_popInterval

Los tipos de estructura dtime_t y intrvl_t se utilizan para representar datos DATETIME e INTERVAL en un programa C. El argumento qual recibe la representación binaria del calificador DATETIME o INTERVAL. Para obtener más información acerca de los tipos de estructura dtime_t e intrvl_t y de las funciones de biblioteca para manipular e imprimir variables DATE, DATETIME e INTERVAL, consulte la publicación IBM Informix ESQL/C Programmer's Manual.

Funciones de biblioteca para extraer valores BYTE o TEXT

Puede llamar la función siguiente para extraer un argumento BYTE o TEXT:
Nombre anterior a la Versión 7.31 Nombre de la Versión 7.31 y posteriores
poplocator ibm_lib4gl_popBlobLocator
El tipo de estructura loc_t define un valor BYTE o TEXT y se trata en la publicación IBM Informix ESQL/C Programmer's Manual.

Cualquier argumento BYTE o TEXT debe extraerse como BYTE o TEXT porque EGL no proporciona conversión de tipo de datos automática.

Consulta relacionada
Funciones BIGINT para C
Tipos de datos C y tipos primitivos EGL
Funciones C con EGL
Funciones DATE para C
Funciones DATETIME e INTERVAL para C
Funciones DECIMAL para C
Invocar una función C desde un programa EGL
IBM Informix ESQL/C Programmer’s Manual
Funciones de devolución para C

Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.