![]() |
![]() |
|
|
CFfind、CFfind32(3fml)
名前
CFfind()、CFfind32() - 検索、変換してポインタを返す
形式
#include <stdio.h>
#include "fml.h"
char * CFfind(FBFR *fbfr, FLDID fieldid, FLDOCC oc, FLDLEN *len,
int type)
#include "fml32.h"
char *
CFfind32(FBFR32 *fbfr, FLDID32 fieldid, FLDOCC32 oc, FLDLEN32 *len, int type)
機能説明
CFfind() は、バッファ内の指定されたフィールドを検索し、それを変換してからその変換した値を指すポインタを返します。fbfr は、フィールド化バッファを指すポインタです。fieldid は、フィールド識別子です。oc はフィールドのオカレンス番号です。len は、出力時に使用されるもので変換された値の長さを指すポインタです。type は、ユーザが変換したいフィールドの変換後のデータ・タイプです。
Ffind() と同じように、関数が返すポインタは、読み取り専用です。変換された値は一つのプライベート・バッファに保持されているので、CFfind() が返すポインタの妥当性は、次のバッファ操作までしか保証されません (たとえその操作が非破壊的である場合でも)。これは、Ffins() が返す値と違う点です。つまり、CFfind() が返す値は次にバッファを変更するまで保証されます。Ffind() とは異なり、CFfind() は、呼び出し側が直接使用できるように変換した値を整列させます。
FLD_PTR、FLD_FML32、または FLD_VIEW32 のフィールド・タイプが使用されると、この関数は異常終了します。CFfind() または CFfind32() が使用されている場合に、これらのフィールド・タイプの 1 つが指定されると、Ferror に FEBADOP が設定されます。
CFfind32() は 32 ビット FML で使用されます。
マルチスレッドのアプリケーション内のスレッドは、TPINVALIDCONTEXT を含め、どのようなコンテキスト状態で実行している場合でも、CFfind32() または CFfind32() を呼び出すことができます。
戻り値
上記の「形式」の項では、CFfind() の戻り値のデータ型は、char ポインタ (C の char **) として記述されています。実際、返されるポインタは、格納済みのフィールドの型と同じ型を持つオブジェクトを指しています。
この関数は、エラー発生時に NULL を返し、Ferror を設定してエラー条件を示します。
エラー
次の条件の場合、CFfind() は異常終了し、Ferror を次の値に設定します。
バッファが適切なバウンダリで開始していません。
バッファがフィールド化されていないか、または Finit() で初期化されていません。
CARRAY (バッファ) から文字列に変換するときに、malloc(3) を使用しての領域の動的な割り当てが失敗しました。
フィールド・オカレンスが要求されましたが、指定されたフィールドとオカレンスの両方、あるいはどちらかは、フィールド化バッファにありませんでした。
指定されたフィールド識別子は無効です。
指定されたフィールド識別子は無効です。
指定されたフィールド・タイプは無効です (FLD_PTR、FLD_FML32、および FLD_VIEW32 など)。
関連項目
「FML 関数の紹介」、Ffind、Ffind32(3fml)
![]() |
![]() |
![]() |
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|