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)に関する項
親トピック: 型付きバッファの管理