|
|
Ffindocc、Ffindocc32(3fml)
名前
Ffindocc()、Ffindocc32() - フィールド値のオカレンスの検索
形式
#include <stdio.h>
#include "fml.h"
FLDOCC
Ffindocc(FBFR *fbfr, FLDID fieldid, char *value, FLDLEN len)
#include "fml32.h"
FLDOCC32
Ffindocc32(FBFR32 *fbfr, FLDID32 fieldid, char *value, FLDLEN32 len)
機能説明
Ffindocc() は、バッファ内の指定されたフィールドのオカレンスを参照し、ユーザ指定のフィールド値と一致する最初のフィールド・オカレンスのオカレンス番号を返します。fbfr は、フィールド化バッファを指すポインタです。fieldid は、フィールド識別子です。検索される値は、value パラメータが指す場所にあります。len は、その型が FLD_CARRAY の場合、値の長さです。fieldid がフィールド型 FLD_STRING で、len が 0 でない場合、文字列に対してパターン整合が行われます。サポートされているパターン整合は、regcmp(3)(UNIX System V プログラマ・リファレンス・マニュアル) に記述されているパターンと同じです。さらに、正規表現の代替がサポートされています。たとえば、"A|B" は、"A" または "B" と一致しています。パターンは、全体のフィールド値と一致する必要があります。すなわち、パターン "value" は、暗黙的に "^value$" として扱われます。MS-DOS および OS/2 環境用に提供される Ffindocc() のバージョンは、FLD_STRING フィールドに対する regcmp(3) のパターン整合機能をサポートしていませんので、strcmp(3)(UNIX System V『プログラマ・リファレンス・マニュアル』) を使用します。
上記の「形式」の項では、Ffindocc() の引数 value のデータ型は、char のポインタ (C の char *) として記述されています。技術的には、これは、Ffindocc() に渡すことのできる値のある特定の値のみを記述しています。実際、value 引数の型は、検索されるフィールドのフィールド化バッファ表現の型と同じ型のオブジェクトのポインタである必要があります。たとえば、フィールドが、FLD_LONG 型でバッファに格納されている場合は、value の型は、long のポインタ (C の long *) である必要があります。同様に、FLD_SHORT 型でバッファに格納される場合、value は、short 型のポインタ (C の short *) である必要があります。大事な点は、Ffindocc() は、value で指されるオブジェクトが、格納済みの検索されるフィールドの型と同じ型を持っていることを想定していることです。
FLD_PTR 型の値の場合、Ffindocc32() は指定されたポインタ値と一致するフィールドのオカレンスを検索します。FLD_FML32 型の値の場合、すべてのフィールド・オカレンスおよび値が等しければ、2 つのフィールドは等しいと見なされます。FLD_VIEW32 型の値の場合、VIEW 名が同じとき、およびすべての構造体メンバのオカレンスおよび値が等しいとき、2 つのフィールドは等しいと見なされます。
Ffindocc32() は 32 ビット FML で使用されます。
マルチスレッドのアプリケーション内のスレッドは、TPINVALIDCONTEXT を含め、どのようなコンテキスト状態で実行している場合でも、Ffindocc() または Ffindocc32() を呼び出すことができます。
戻り値
この関数は、エラー発生時に -1 を返し、Ferror を設定してエラー条件を示します。
エラー
次の条件の場合、Ffindocc() は異常終了し、Ferror を次の値に設定します。
バッファが適切なバウンダリで開始していません。
バッファがフィールド化されていないか、または Finit() で初期化されていません。
フィールド値が要求されましたが、指定されたフィールドおよび値は、フィールド化バッファにありませんでした。
呼び出された関数の引数の 1 つが、無効でした。たとえば、NULL の value パラメータを Ffindocc() に渡した、あるいは無効な文字列パターンを指定した。
指定されたフィールド識別子は無効です。
関連項目
「FML 関数の紹介」、Ffind、Ffind32(3fml)、Ffindlast、Ffindlast32(3fml)、Ffinds、Ffinds32(3fml)
UNIX システムのリファレンス・マニュアルの regcmp(3)
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|