2.5 バッファ・タイプの確認
tptypes(3c)
関数は、バッファのタイプとサブタイプ(指定されている場合)を返します。次はtptypes()
関数のシグネチャです:
long
tptypes(char *ptr, char *type, char *subtype)
次の表は、tptypes()
関数の引数を示しています。
表2-4 tptypes()関数の引数
引数 | 説明 |
---|---|
ptr
|
データ・バッファを指すポインタ。このポインタは、tpalloc() またはtprealloc() の呼出しで設定されます。NULLは指定できません。また、文字型にキャストする必要があります。この2つの条件が満たされていない場合、tptypes() 関数は引数が無効であることを示すエラーを返します。
|
type
|
データ・バッファのタイプを指すポインタ。typeは文字型の値です。 |
subtype
|
データ・バッファのサブタイプ(指定されている場合)を指すポインタ。subtype は文字型の値です。VIEW 、VIEW32 、RECORD 、X_C_TYPE 、およびX_COMMON 以外のタイプの場合、返されたsubtype パラメータはNULL文字列を含む文字配列を指します。
ノート: RECORD型バッファの場合、レコード名の最大長(subtype) は32バイトです。レコード名の長さが16バイトより長い場合、tptypes() ではサブタイプの最初の16バイトが移入されますが、RECORD * ポインタはレコード名全体の先頭を指します。
|
処理が正常に終了した場合、tptypes()
関数は長精度型(long)でバッファの長さを返します。
エラーが発生した場合、tptypes()
は-1
を戻し、tperrno(5)に対応するエラー・コードを設定します。エラー・コードのリストについては、『Oracle Tuxedo ATMI C関数リファレンス』のC言語アプリケーション・トランザクション・モニター・インタフェースの紹介に関する項およびtpalloc(3c)
に関する項を参照してください。
次のリストに示すように、処理の正常終了時にtptypes()
から戻されたサイズ値を使用して、デフォルトのバッファ・サイズがデータを格納するのに十分な大きさかどうかを確認できます。
バッファ・サイズの取得のリスト
. . .
iptr = (FBFR *)tpalloc("FML", NULL, 0);
ilen = tptypes(iptr, NULL, NULL);
. . .
if (ilen < mydatasize)
iptr=tprealloc(iptr, mydatasize);
関連項目:
- 型付きバッファの割当て
- 『Oracle Tuxedo ATMI C関数リファレンス』の
tptypes(3c)
およびtpalloc(3c)
に関する項
親トピック: 型付きバッファの管理