C 関数を呼び出すために、EGL は引数スタック を使用します。これは、関数と呼び出し側コード間で引数を渡すメカニズムです。 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 データを表すのに使用されます。 dec_t と ifx_int8_t 構造型、および DECIMAL 変数と BIGINT 変数を操作および印刷するためのライブラリー関数についての詳細は、「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( ) は、フルの長さまで埋め込まれません。 バッファーにコピーされる最終バイトは、ストリングを終了する NULL バイトであるので、最大のストリング・データ長は 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 修飾子のバイナリー表記を受け取ります。dtime_t と intrvl_t 構造型、および DATE 変数、 DATETIME 変数、INTERVAL 変数を操作および印刷するためのライブラリー関数についての詳細は、「IBM Informix ESQL/C Programmer's Manual」を参照してください。
BYTE または TEXT 値をポップするためのライブラリー関数
バージョン 7.31 より前の名前 | バージョン 7.31 およびそれ以降の名前 |
---|---|
poplocator | ibm_lib4gl_popBlobLocator |
すべての BYTE または TEXT 引数は、BYTE または TEXT としてポップする必要があります。これは、EGL が自動データ型変換を行わないからです。