C の戻り関数

C 関数を呼び出すために、EGL は引数スタック を使用します。これは、関数と呼び出し側コード間で引数を渡すメカニズムです。 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( ) の引数は、ヌル終了ストリングです。ibm_lib4gl_returnString( ) 関数は、対称性のためのみにインクルードされ、内部で ibm_lib4gl_returnQuotedStr( ) を呼び出します。

C 関数は、どの書式でもデータを戻すことができます。変換が可能な場合、EGL は、値をポップするときに必要に応じてデータ型を変換します。 データ型の変換が可能でない場合は、エラーが発生します。

EGL から呼び出された C 関数は、常に return(n) 文で終了する必要があります。この場合、n は、スタック上にプッシュされた戻り値の数です。何も戻さない関数は、return(0) で終了する必要があります。

関連リファレンス
C の BIGINT 関数
C データ型と EGL プリミティブ型
EGL プログラムからの C 関数の呼び出し
EGL での C 関数
C の DATE 関数
C の DATETIME および INTERVAL 関数
C の DECIMAL 関数
C のスタック関数

フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.