![]() |
![]() |
|
|
VIEWS の機能
VIEWS は、プログラムがフィールド化バッファを受け取った後またはフィールド化バッファを別のプログラムに送る前に、バッファのデータに対して大量の処理を行う場合に特に便利です。
このような場合、VIEWS 関数を使用してフィールド化バッファのデータをバッファから C 構造体に転送し、その後でデータを処理すると、処理効率を高めることができます。フィールドをバッファ内で処理する場合、FML 関数より C 関数の方が処理時間が短いためです。C 構造体でデータの処理を終了したら、そのデータをフィールド化バッファに戻し、さらに別のプログラムに転送できます。
VIEWS には、以下の特徴があります。
ソース VIEW ファイルは、1 つまたは複数のソース VIEW 記述を含む一般的なテキスト・ファイルです。ソース VIEW ファイルは、VIEW コンパイラである viewc または viewc32 への入力として使用され、ソース VIEW 記述をコンパイルし、オブジェクト VIEW ファイルに格納します。VIEW コンパイラの詳細については、『BEA Tuxedo コマンド・リファレンス』の「viewc、viewc32(1)」を参照してください。
VIEW コンパイラは、オブジェクト VIEW ファイル用の C ヘッダ・ファイルも生成します。これらのヘッダ・ファイルは、アプリケーション・プログラム内に組み込まれると、オブジェクト VIEW 記述で指定された構造体を定義できます。
VIEW コンパイラは、必要に応じてオブジェクト VIEW ファイルに対する COBOL COPY ファイルも生成します。これらの COPY ファイルは、COPY プログラムに組み込み、オブジェクト VIEW 記述で指定するレコード形式を定義できます。
ヌル値は構造体の空のメンバを表すのに使用し、VIEW ファイルの構造体の各メンバに対して指定できます。メンバにヌル値を指定しないと、省略時のヌル値が使用されます。
ただし、構造体からフィールド化バッファへの転送時には、NULL 値を含む構造体メンバは転送されません。
また、C または COBOL 構造体のメンバとフィールド化バッファ内のフィールドの間にマッピングが存在していても、それらの間でのデータ転送を禁止することができます。これは、ソース VIEW ファイルで指定します。
FML VIEWS 関数として、Fvstof()、Fvftos()、Fvnull()、Fvopt()、Fvselinit()、Fvsinit() があります。COBOL では、VIEWS 機能によってFVSTOF および FVFTOS の 2 つの手順が提供されています。どちらの VIEW 関数を呼び出しても、指定されたオブジェクト VIEW ファイルが検索され、そのファイルが見つかると、VIEW ファイルのキャッシュに自動的にロードされます。つまり、環境変数 VIEWFILES で指定された各ファイルが順番に検索され (「FML および VIEWS の環境設定」参照)、指定された名前が付いた最初のオブジェクト VIEW ファイルがロードされます。同じ名前を持つ以降のオブジェクト VIEW ファイルは無視されます。FML VIEWS 関数の詳細については、『BEA Tuxedo FML リファレンス』を参照してください。
VIEWS では、構造体の配列、ポインタ、共用体、typedef はサポートされていません。
複数のオカレンスを持つ VIEWS のフィールド
VIEWS は、フィールド化バッファと C 構造体、またはフィールド化バッファと COBOL レコードの間で交換されるフィールドを扱うため、バッファ内で複数回発生するフィールドも処理する必要があります。
構造体内にフィールドの複数のオカレンスを格納するため、メンバは、C 言語または COBOL の OCCURS 句により配列として宣言されます。フィールドの 1 オカレンスに対して 1 つの配列の要素が使用されます。配列のサイズは、バッファ内のフィールド・オカレンスの最大数を反映します。
フィールド化バッファから C 構造体または COBOL レコードへのデータ転送時に、受信側の配列に存在する要素の数がフィールド化バッファ内のオカレンスの数より多い場合、余分な要素には、デフォルト値またはユーザ指定の NULL 値が割り当てられます。バッファ内のオカレンスの数が配列内の要素の数より多い場合は、バッファ内の余分なオカレンスは無視されます。
C 構造体または COBOL レコードからフィールド化バッファにデータを転送する場合、デフォルト値またはユーザ指定の NULL 値に等しい値を含む配列メンバは無視されます。
![]() |
![]() |
![]() |
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|