EGL 使用自变量堆栈来调用 C 函数,这是在函数与调用代码之间传递自变量的一种机制。EGL 调用函数将其自变量推进堆栈,而被调用的 C 函数将它们弹出堆栈以使用这些值。被调用函数将其返回值推进堆栈,而调用程序将它们弹出来以检索这些值。出栈和返回外部函数是随自变量堆栈库提供的。下面按每次从自变量堆栈弹出的值的数据类型描述出栈外部函数。返回外部函数在返回 C 的函数中作了描述。
用于返回值的库函数
版本 7.31 之前的版本名称 | 版本 7.31 和更新版本名称 |
---|---|
popint | ibm_lib4gl_popMInt |
popshort | ibm_lib4gl_popInt2 |
poplong | ibm_lib4gl_popInt4 |
popflo | ibm_lib4gl_popFloat |
popdub | ibm_lib4gl_popDouble |
popdec | ibm_lib4gl_popDecimal |
结构类型 dec_t 和 ifx_int8_t 用于表示 C 程序中的 DECIMAL 和 BIGINT 数据。有关用于处理和打印 DECIMAL 和 BIGINT 变量的 dec_t 和 ifx_int8_t 结构类型和库函数的更多信息,请参阅 IBM Informix ESQL/C Programmer's Manual。
用于将字符串弹出堆栈的库函数
可调用下列库函数以将字符值弹出堆栈:
版本 7.31 之前的版本名称 | 版本 7.31 和更新版本名称 |
---|---|
popquote | ibm_lib4gl_popQuotedStr |
popstring | ibm_lib4gl_popString |
popvchar | ibm_lib4gl_popVarChar |
ibm_lib4gl_popQuotedStr( ) 和 ibm_lib4gl_popVarChar( ) 将正好 len 个字节复制至字符串缓冲区 *qv。此处 ibm_lib4gl_popQuotedStr( ) 在必要时将填充空格,但 ibm_lib4gl_popVarChar( ) 不会填充至标准长度。复制至缓冲区的最后一个字节是用于终止字符串的空字节,所以最大字符串数据长度为 len-1。如果放入堆栈的自变量的长度超过 len-1,则结尾字节会丢失。
用于将时间值弹出堆栈的库函数
可调用下列库函数以将 DATE、INTERVAL 和 DATETIME (TIMESTAMP) 弹出堆栈:
版本 7.31 之前的版本名称 | 版本 7.31 和更新版本名称 |
---|---|
popdate | ibm_lib4gl_popDate |
popdtime | ibm_lib4gl_popDateTime |
popinv | ibm_lib4gl_popInterval |
结构类型 dtime_t 和 intrvl_t 用于表示 C 程序中的 DATETIME 和 INTERVAL 数据。qual 自变量接收 DATETIME 或 INTERVAL 限定符的二进制表示。有关用于处理和打印 DATE、DATETIME 和 INTERVAL 变量的 dtime_t 和 intrvl_t 结构类型和库函数的更多信息,请参阅 IBM Informix ESQL/C Programmer's Manual。
用于将 BYTE 或 TEXT 值弹出堆栈的库函数
版本 7.31 之前的版本名称 | 版本 7.31 和更新版本名称 |
---|---|
poplocator | ibm_lib4gl_popBlobLocator |
BYTE 或 TEXT 自变量必须作为 BYTE 或 TEXT 弹出堆栈,原因是 EGL 不提供自动数据类型转换。