![]() |
![]() |
|
|
Fnext、Fnext32(3fml)
名前
Fnext()、Fnext32() - 次のフィールド・オカレンスの取得
形式
#include <stdio.h>
#include "fml.h"
int
Fnext(FBFR *fbfr, FLDID *fieldid, FLDOCC *oc, char *value, FLDLEN
*len)
#include "fml32.h"
int
Fnext32(FBFR32 *fbfr, FLDID32 *fieldid, FLDOCC32 *oc, char *value,
FLDLEN32 *len)
機能説明
Fnext() は、指定されたフィールド・オカレンスの後、バッファ内の次のフィールドを検索します。fbfr は、フィールド化バッファを指すポインタです。fieldid は、フィールド識別子を指すポインタです。oc は、フィールドのオカレンス番号を指すポインタです。value は、次のフィールドの値を指すポインタです。len は、次の値の長さです。
フィールド識別子 FIRSTFLDID は、バッファにある最初のフィールドを取得するために指定する必要があります (たとえば、Fnext() の最初の呼び出しにおいて)。value が NULL でない場合、次のフィールド値は、value に複写されます。*len は、値を入れるために割り当てられる十分な領域がバッファにあるかを判断するために使用されます。値の長さは、*len に返されます。関数が呼び出されたときに len が NULL の場合は、十分な領域があるために、新しい値の長さが返されないと想定されます。value が NULL の場合、値は検索されず、fieldid および oc のみ更新されます。*fieldid パラメータは、次に検索されるフィールドに設定されます。*oc パラメータは、次のオカレンスに設定されます。検索するフィールドがこれ以上ない場合、0 (バッファの終わり) が返されます。*fieldid、*oc、および *value は変更されません。フィールドは、フィールド識別子の順に返されます。
値の型は、char* ですが、返される値は、検索される次のフィールド・タイプと同じになります。
検索されるフィールド・タイプが FLD_VIEW32 である場合、value パラメータは FVIEWFLD 構造体を指します。Fnext() 関数を使用して、構造体の vname フィールドと data フィールドを設定します。
Fnext32() は 32 ビット FML で使用されます。
マルチスレッドのアプリケーション内のスレッドは、TPINVALIDCONTEXT を含め、どのようなコンテキスト状態で実行している場合でも、Fnext() または Fnext32() を呼び出すことができます。
戻り値
Fnext() は、次のオカレンスがうまく検索できた場合には、1 を返します。バッファの終わりに達した場合は、0 を返します。
この関数は、エラー発生時に -1 を返し、Ferror を設定してエラー条件を示します。
エラー
次の条件の場合、Fnext() は異常終了し、Ferror を次の値に設定します。
バッファが適切なバウンダリで開始していません。
バッファがフィールド化されていないか、または Finit() で初期化されていません。
len で指定されている値の大きさは、フィールド値を保持する十分な大きさではありません。
呼び出された関数の引数の 1 つが無効です (たとえば、fieldid あるいは oc に NULL を指定している)。
関連項目
「FML 関数の紹介」、Fget、Fget32(3fml)、Fnum、Fnum32(3fml)
![]() |
![]() |
![]() |
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|