BEA Logo BEA Tuxedo Release 8.0

  BEA ホーム  |  イベント  |  ソリューション  |  パートナ  |  製品  |  サービス  |  ダウンロード  |  ディベロッパ・センタ  |  WebSUPPORT

 

   Tuxedo ホーム   |   FML を使用した BEA Tuxedo アプリケーションのプログラミング   |   先頭へ   |   前へ   |   次へ   |   目次

 


レコードをフィールドに分割する:データ構造体とフィールド化バッファ

データ・レコードは、分割できない完全なエンティティでない限り、フィールドに分割できる状態でなければなりません。データ・レコードを分割できないと、レコード内の情報を使用したり、変更できません。ATMI 環境では、次のどちらかを使用してレコードを分割できます。

構造体を使用してレコードをフィールドに分割する

レコードを分割する一般的な方法の 1 つは、構造体を使用して連続した記憶域をフィールドに分割することです。フィールドには ID が指定されます。各フィールド内のデータの種類は、データ型の宣言によって示されます。

たとえば、C 言語プログラム内のデータ項目が、従業員の ID、名前、住所、および性別の場合は、次の構造体を使用してプログラムを設定できます。

struct S {
long empid;
char name[20];
char addr[40];
char gender;
};

ここでは、empid (従業員の ID) というフィールドが long 型の整数で宣言されています。name (名前) は 20 文字の文字配列で宣言され、addr (住所) は 40 文字の文字配列で宣言されます。gender (性別) は、単一文字 (mf など) で宣言されます。

C プログラム内で、変数 p が struct S 型の 構造体を指す場合は、p -> empidp -> namep -> addr、および p -> gender という参照を使用してフィールドを指定できます。

同じデータ構造の COBOL COPY ファイルは、以下のようになります (第 01 行はアプリケーション側で提供されます)。

05 EMPID                           PIC S9(9) USAGE IS COMP-5.
05 NAME PIC X(20).
05 ADDR PIC X(40).
05 GENDER PIC X(01).
05 FILLER PIC X(03).

COBOL のプログラムで、第 01 行に MYREC という名前を付けた場合は、EMPID IN MYRECNAME IN MYRECADDR IN MYREC、および GENDER IN MYREC を使用して各フィールドにアクセスできます。

このデータ表現法は広く使用されており、通常は適用できますが、次の 2 つの潜在的な問題があります。

フィールド化バッファを使用してレコードをフィールドに分割する

レコードをフィールドに分割する別の方法は、フィールド化バッファを使用することです。

フィールド化バッファは、レコードのフィールドに対して連想アクセスを提供するデータ構造体です。つまり、フィールド名は、フィールドのデータ型のほか、記憶域の位置を含む識別子と関連付けられています。

フィールド化バッファの主な利点は、データの独立性です。つまり、バッファに対してフィールドを追加または削除したり、フィールド長を変更しても、フィールドを参照するプログラムを再コンパイルする必要はありません。データの独立性を実現するため、フィールドは以下のように使用されます。

ATMI 環境では、協調動作するプロセス間で送信されるデータを表現する標準的な方法として、フィールド化バッファを使用できます。

 

先頭へ戻る 前のトピックへ 次のトピックへ