|
|
|
|
|
Ffindlast、Ffindlast32(3fml)
名前
Ffindlast()、Ffindlast32() - バッファにあるフィールドの最後のオカレンスの値を検索
形式
#include <stdio.h>
#include "fml.h"
char *
Ffindlast(FBFR *fbfr, FLDID fieldid, FLDOCC *oc, FLDLEN *len)
#include "fml32.h"
char *
Ffindlast32(FBFR32 *fbfr, FLDID32 fieldid, FLDOCC32 *oc, FLDLEN32 *len)
機能説明
Ffindlast() は、バッファにあるフィールドの最後のオカレンスの値を検索します。fbfr は、フィールド化バッファを指すポインタです。fieldid は、フィールド識別子です。oc は、フィールドのオカレンス番号を受け取るために使用する整数型のポインタです。len は、値の長さです。バッファにフィールドのオカレンスがない場合、NULL が返されます。一般に、Ffindlast() は Ffind() に似た動きをします。Ffindlast を使用すると、ユーザは、フィールド・オカレンスを提供しないという点が主な違いです。その代わり、フィールドの最後のオカレンスの値およびオカレンス番号の両方が返されます。最後のフィールドのオカレンス番号を返すために、Ffindlast() のオカレンス引数 oc は、整数型のポインタであり、Ffind() の場合のように整数ではありません。oc が NULL で指定されている場合、最後のオカレンスのオカレンス番号は返されません。len の値が NULL の場合は、フィールドの長さは返されません。
一般に、 FLD_LONG、 FLD_FLOAT、 FLD_DOUBLE、 FLD_PTR、FLD_FML32、および FLD_VIEW32 型の場合、それぞれの値がバッファ内で適切に配置されているとは限らないため、格納されているままの型を直接使用するのには向いていません。これらの値は、最初に、適宜に配列されたメモリ位置に複写される必要があります。変換関数 CFfind() を使用してこのようなフィールドにアクセスする場合、検索される変換済みの値は正しく配列されることが保証されます。バッファの変更は、関数 Fadd() または Fchg() によってのみ行われる必要があります。Ffind() および Ffindlast() が返す値は、バッファが変更されない限り有効です。
Ffindlast32() は、FLD_FML32 および FLD_VIEW32 フィールド・タイプで提供される、埋め込み型のバッファ内の指定フィールドのオカレンスをチェックしません。
Ffindlast32() は 32 ビット FML で使用されます。
マルチスレッドのアプリケーション内のスレッドは、TPINVALIDCONTEXT を含め、どのようなコンテキスト状態で実行している場合でも、Ffindlast() または Ffindlast32() を呼び出すことができます。
戻り値
上記の「形式」の項では、Ffindlast() の戻り値のデータ型は、char のポインタ (C の char *) として記述されています。実際、返されるポインタは、格納済みのフィールドの型と同じ型を持つオブジェクトを指しています。
この関数は、エラー発生時に NULL を返し、Ferror を設定してエラー条件を示します。
エラー
次の条件の場合、Ffindlast() は異常終了し、Ferror を次の値に設定します。
バッファが適切なバウンダリで開始していません。
バッファがフィールド化されていないか、または Finit() で初期化されていません。
フィールドが要求されましたが、指定されたフィールドは、フィールド化バッファにありませんでした。
指定されたフィールド識別子は無効です。
関連項目
「FML 関数の紹介」、CFfind、CFfind32(3fml)、Fadd、Fadd32(3fml)、Fchg、Fchg32(3fml)、Ffind、Ffind32(3fml)、Ffindocc、Ffindocc32(3fml)、Ffinds、Ffinds32(3fml)
|
|
|
|
|
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|