返回 C 的函数

EGL 使用自变量堆栈来调用 C 函数,这是在函数与调用代码之间传递自变量的一种机制。EGL 调用函数将其自变量推进堆栈,而被调用的 C 函数将它们弹出堆栈以使用这些值。被调用函数将其返回值推进堆栈,而调用程序将它们弹出来以检索这些值。出栈外部函数和返回外部函数是随自变量堆栈库一起提供的。返回外部函数在下面作出描述;使用的出栈外部函数在 C 的堆栈函数中作了描述。

外部返回函数将其自变量复制至在调用函数外部分配的存储空间。此存储空间会在返回值被弹出堆栈时释放。这样就可以从函数的局部变量返回值了。

注: 返回函数最初与 IBM® Informix® 4GL(I4GL)配合使用;因此会将“4gl”包括在函数名中。

用于返回值的库函数

下列库函数对返回值可用:

下表映射 I4GL 版本 7.31 之前的版本与版本 7.31 和更新版本之间的返回函数名:
版本 7.31 之前的版本名称 版本 7.31 和更新版本名称
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

ibm_lib4gl_returnQuotedStr( ) 的自变量是以 null 结束的字符串。包括 ibm_lib4gl_returnString( ) 函数只是为了对称;它在内部调用 ibm_lib4gl_returnQuotedStr( )

只要方便,C 函数可以返回任何格式的数据。如果可以转换,EGL 会在将值弹出堆栈时对数据类型进行必要的转换。如果不能进行数据类型转换,将发生错误。

从 EGL 调用的 C 函数总是使用语句 return(n) 退出的,其中 n 是推送至堆栈的返回值的数目。不返回任何内容的函数必须用 return(0) 退出。

相关参考
C 的 BIGINT 函数
C 数据类型和 EGL 基本类型
从 EGL 程序调用 C 函数
将 C 函数与 EGL 配合使用
C 的 DATE 函数
C 的 DATETIME 和 INTERVAL 函数
C 的 DECIMAL 函数
C 的堆栈函数

使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.