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