![]() |
![]() |
|
|
サポートされているフィールド型
サポートされているフィールド型は、short 型、long 型、float 型、double 型、character 型、string 型、carray 型 (文字配列)、ptr 型 (バッファを指すポインタ)、FML32 型 (埋め込み型の FML32 バッファ)、および VIEW32 型 (埋め込み型の VIEW32 バッファ) です。ptr 型、FML32 型、および VIEW32 型は、FML32 インターフェイスでのみサポートされています。これらの型は、次のリストに示すように、fml.h (または fml32.h) 内の #define 文で定義されています。
fml.h および fml32.h における FML フィールド型の定義
#define FLD_SHORT 0 /* short int */
#define FLD_LONG 1 /* long int */
#define FLD_CHAR 2 /* character */
#define FLD_FLOAT 3 /* single-precision float */
#define FLD_DOUBLE 4 /* double-precision float */
#define FLD_STRING 5 /* string - null terminated */
#define FLD_CARRAY 6 /* character array */
#define FLD_PTR 9 /* pointer to a buffer */
#define FLD_FML32 10 /* embedded FML32 buffer */
#define FLD_VIEW32 11 /* embedded VIEW32 buffer */
FLD_STRING および FLD_CARRAY はどちらも配列ですが、次の点が異なります。
フィールドを追加または変更する関数には、FLDLEN 引数を指定します。この引数は、FLD_CARRAY フィールドを処理する場合は必須です。文字列または文字配列のサイズは、FML では最大 65,535 文字、FML32 では最大 2 ギガバイトに制限されています。
unsigned 型のデータ型は、フィールド化バッファに格納しないでください。このデータ型を使用すると、フィールド化バッファからデータを検索するたびに、FML の変換関数を使用して、unsigned short 型データをすべて long 型データに変換するか、またはそれらのデータを正しい unsigned 型にキャストしなければなりません。
ほとんどの FML 関数では、型のチェックは行われません。通常、フィールド化バッファで更新または検索された値は、ネイティブな型と一致すると見なされます。たとえば、バッファ・フィールドが FLD_LONG として定義されていると、必ず、long 型の値のアドレスを渡す必要があります。FML 変換関数は、データをフィールド化バッファに格納する (または、データをフィールド化バッファから検索する) ほか、ユーザ指定の型からネイティブ・フィールド型 (または、ネイティブ・フィールド型からユーザ指定の型) にデータを変換します。
FLD_PTR フィールド型を使用すると、FML32 バッファ内のアプリケーション・データへのポインタを埋め込むことができます。アプリケーション側では、データ・バッファへのポインタの追加、変更、アクセス、および削除が可能です。FLD_PTR フィールドが指すバッファは、tpalloc(3c) を呼び出して割り当てます。FLD_PTR フィールド型は、FML32 でのみサポートされています。
FLD_FML32 フィールド型は、レコード全体を単一フィールドとして FML32 バッファに格納できます。同様に、FLD_VIEW32 フィールド型は、C 構造体全体を FML32 バッファ内に単一フィールドとして格納できます。FLD_FML32 および FLD_VIEW32 フィールド型は、FML32 でのみサポートされています。
VIEWS の int 型
VIEWS は、大半の FML 関数でサポートされているデータ型のほか、ソース VIEW 記述内で int 型を間接的にサポートします。VIEW 記述がコンパイルされると、VIEW のコンパイラは、マシンの種類に応じて、すべての int 型を short 型か long 型に自動的に変換します。詳細については、「VIEWS の機能」を参照してください。
VIEWS の dec_t 型
VIEWS では、ソース VIEW 記述内で dec_t パック 10 進数型もサポートされています。このデータ型は、VIEW の構造体から COBOL のプログラムへの転送に便利です。dec_t 型を使用する C プログラムでは、『BEA Tuxedo C 言語リファレンス』の「decimal(3c)」リファレンス・ページで説明されている関数を使用してフィールドの初期化およびアクセスを行う必要があります。COBOL プログラムでは、パック 10 進数 (COMP-3) の定義を使用してこのフィールドに直接アクセスできます。FML では dec_t フィールドがサポートされていないため、このフィールドは、VIEW から FML に変換するときに、フィールド化バッファ内の対応する FML フィールドのデータ型 (string 型など) に自動的に変換されます。
![]() |
![]() |
![]() |
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|