BEA Logo BEA Tuxedo Release 8.0

  BEA ホーム  |  イベント  |  ソリューション  |  パートナ  |  製品  |  サービス  |  ダウンロード  |  ディベロッパ・センタ  |  WebSUPPORT

 

   Tuxedo ホーム   |   BEA Tuxedo FML リファレンス   |   先頭へ   |   前へ   |   次へ   |   目次

 


Fappend、Fappend32(3fml)

名前

Fappend()Fappend32() - 新しいフィールド・オカレンスの追加

形式

#include <stdio.h>
#include "fml.h"
int
Fappend(FBFR *fbfr, FLDID fieldid, char *value, FLDLEN len)
#include "fml32.h"
int
Fappend32(FBFR32 *fbfr, FLDID32 fieldid, char *value, FLDLEN32 len)

機能説明

Fappend() は、指定されたフィールド値を指定されたバッファの終わりに追加します。Fappend() は、汎用目的の FML アクセスに必要な内部構造体および順序付けを保持しない、大規模なバッファを作成する際に役に立ちます。この最適化の影響として、Fappend() への呼び出しの後には、Fappend() への追加の呼び出し、FML インデックス・ルーチン Findex() および Funindex() への呼び出し、または Free()Fused()Funused()Fsizeof() への呼び出ししか行えません。Findex() または Funindex() を呼び出す前に他の FML ルーチンへの呼び出しを行うと、FerrorFNOTFLD に設定されてエラーが発生します。

fbfr は、フィールド化バッファを指すポインタです。fieldid は、フィールド識別子です。value は、新しい値を指すポインタです。したがって、ポインタの型は、追加される値と同じフィールド識別子の型である必要があります。len は、追加される値の長さです。len は、FLD_CARRAY 型の場合のみ必要です。

追加する値は、value パラメータで指される場所にあります。既に 1 つまたは複数のフィールド・オカレンスがある場合、新しいフィールド・オカレンスとして値が追加され、現在指定されているオカレンスの最大値より 1 つ大きいオカレンス番号が割り当てられます (指定されたオカレンスを追加するには、Fchg() を使用する必要があります)。

上記の「形式」の項では、Fappend() の引数 value のデータ型は、char のポインタ (C の char *) として記述されています。技術的には、これは、単に、Fappend() に渡せる値の 1 つの特定の型を記述しています。実際、引数 value の型は、追加されているフィールドのフィールド化バッファ表現と同じ型のオブジェクトへのポインタにします。たとえば、フィールドが、FLD_LONG 型でバッファに格納されている場合は、value の型は、long のポインタ (C の long *) である必要があります。同様に、FLD_SHORT 型でバッファに格納される場合、value は、short 型のポインタ (C の short *) である必要があります。重要なことは、Fappend() は、valueが指すオブジェクトが、追加される格納済みのフィールドと同じ型を持っていると想定しているということです。

FLD_CARRAY 型の値の場合、値の長さは len 引数で指定されます。FLD_CARRAY 以外のすべての型では、value で指定するオブジェクトの長さは、その型に応じて設定され (たとえば、FLD_FLOAT の場合、長さは sizeof(float) になる)、len の内容は無視されます。

Fappend32() は 32 ビット FML で使用されます。

マルチスレッドのアプリケーション内のスレッドは、TPINVALIDCONTEXT を含め、どのようなコンテキスト状態で実行している場合でも、Fappend() または Fappend32() を呼び出すことができます。

戻り値

この関数は、エラー時には -1 を返し、Ferror を設定してエラー条件を示します。

エラー

次の条件の場合、Fappend() は異常終了し、Ferror を次の値に設定します。

[FALIGNERR]

"fielded buffer not aligned"
バッファが適切なバウンダリで開始していません。

[FNOTFLD]

"buffer not fielded"
バッファがフィールド化されていないか、または Finit() で初期化されていません。

[FEINVAL]

"invalid argument to function"
呼び出された関数の引数の 1 つが無効です (たとえば、Fappend()value パラメータに NULL を指定した場合)。

[FNOSPACE]

"no space in fielded buffer"
フィールド値は、フィールド化バッファに追加されますが、バッファには十分な領域が残っていません。

[FBADFLD]

"unknown field number or type"
指定されたフィールド番号は無効です。

関連項目

FML 関数の紹介」、Fadd、Fadd32(3fml)Ffree、Ffree32(3fml)Findex、Findex32(3fml)Fsizeof、Fsizeof32(3fml)Funindex、Funindex32(3fml)Funused、Funused32(3fml)Fused、Fused32(3fml)

 

先頭へ戻る 前のトピックへ 次のトピックへ