![]() |
![]() |
|
|
Fproj、Fproj32(3fml)
名前
Fproj()、Fproj32() - バッファのプロジェクション
形式
#include <stdio.h>
#include "fml.h"
int
Fproj(FBFR *fbfr, FLDID *fieldid)
#include "fml32.h"
int
Fproj32(FBFR32 *fbfr, FLDID32 *fieldid)
機能説明
Fproj() は、必要なフィールドのみを維持する目的から、バッファを更新するために使用されます。fbfr は、フィールド化バッファを指すポインタです。必要なフィールドは、fieldid で指されるフィールド識別子の配列で指定されます。配列の最後のエントリは、BADFLDID でなければなりません。更新は、その場所で行われます。したがって、投影の結果にないフィールドは、フィールド化バッファから削除されます。フィールド識別子の配列は、再配列される場合があります。それらが番号順でない場合、ソートされます。バッファを更新することにより FLD_PTR フィールドが削除されても、ポインタによって参照されるメモリ領域は変更または解放されません。
Fproj32() は 32 ビット FML で使用されます。
マルチスレッドのアプリケーション内のスレッドは、TPINVALIDCONTEXT を含め、どのようなコンテキスト状態で実行している場合でも、Fproj() または Fproj32() を呼び出すことができます。
戻り値
この関数は、エラー発生時に -1 を返し、Ferror を設定してエラー条件を示します。
エラー
次の条件の場合、Fproj() は異常終了し、Ferror を次の値に設定します。
バッファが適切なバウンダリで開始していません。
バッファがフィールド化されていないか、または Finit() で初期化されていません。
使用例
#include "fld.tbl.h"
FBFR *fbfr;
FLDID fieldid[20];
...
fieldid[0] = A; /* フィールド A のフィールド識別子 */
fieldid[1] = D; /* フィールド D のフィールド識別子 */
fieldid[2] = BADFLDID; /* sentinel 値 */
...
if(Fproj(fbfr, fieldid) 0)
F_error("pgm_name");
バッファが、フィールド A、B、C および D を持っている場合、使用例の結果、バッファは、フィールド A および Dのオカレンスのみ持つようになります。フィールド識別子の配列のエントリは、特定の順番になっている必要はありませんが、フィールド識別子の配列の最後の値は、フィールド識別子 0 (BADFLDID) である必要があります。
関連項目
「FML 関数の紹介」、Fjoin、Fjoin32(3fml)、Fojoin、Fojoin32(3fml)、Fprojcpy、Fprojcpy32(3fml)
![]() |
![]() |
![]() |
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|