BEA Logo BEA Tuxedo Release 8.0

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

 

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

 


Ffind、Ffind32(3fml)

名前

Ffind()Ffind32() - バッファにあるフィールド・オカレンスの検索

形式

#include <stdio.h>  
#include "fml.h"
char *
Ffind(FBFR *fbfr, FLDID fieldid, FLDOCC oc, FLDLEN *len)
#include "fml32.h"
char *
Ffind32(FBFR32 *fbfr, FLDID32 fieldid, FLDOCC32 oc, FLDLEN32 *len)

機能説明

Ffind() は、バッファ内の指定されたフィールド・オカレンスの値を検索します。fbfr は、フィールド化バッファを指すポインタです。fieldid は、フィールド識別子です。oc はフィールドのオカレンス番号です。フィールドがある場合、その長さは、*len に設定され、その位置は、関数の値として返されます。len の値が NULL の場合は、フィールドの長さは返されません。Ffind() は、フィールドへの読み取り専用アクセスを得る場合に役立ちます。どのような場合でも、Ffind() が返す値は、バッファの変更に使用してはなりません。

一般に、 FLD_LONG、 FLD_FLOAT、 FLD_DOUBLE、 FLD_PTRFLD_FML32、および FLD_VIEW32 型の場合、それぞれの値がバッファ内で適切に配置されているとは限らないため、格納されているままの型を直接使用するのには向いていません。これらの値は、最初に、適宜に配列されたメモリ位置に複写されなければなりません。変換関数 CFfind() を使用してこのようなフィールドにアクセスする場合、検索される変換済みの値は正しく配列されることが保証されます。バッファの変更は、関数 Fadd() または Fchg() によってのみ行われる必要があります。Ffind()および Ffindlast() が返す値は、バッファが変更されない限り有効です。

Ffind32() は、FLD_FML32 および FLD_VIEW32 フィールド・タイプで提供される、埋め込み型のバッファ内の指定フィールドのオカレンスをチェックしません。

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

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

戻り値

上記の「形式」の項では、Ffind() の戻り値のデータ型は、char のポインタ (C の char *) として記述されています。実際、返されるポインタは、格納済みのフィールドの型と同じ型を持つオブジェクトを指しています。

この関数は、エラー時には NULL のポインタを返し、Ferror を設定してエラー条件を示します。

エラー

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

[FALIGNERR]

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

[FNOTFLD]

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

[FNOTPRES]

"field not present"
フィールド・オカレンスが要求されましたが、指定されたフィールドとオカレンスの両方、あるいはどちらかは、フィールド化バッファにありませんでした。

[FBADFLD]

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

関連項目

FML 関数の紹介」、Ffindlast、Ffindlast32(3fml)Ffindocc、Ffindocc32(3fml)Ffinds、Ffinds32(3fml)

 

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