フィールド操作言語(FML)は、フィールド化バッファと呼ばれる記録構造を定義、操作する一連のC言語関数で、フィールド化バッファにはフィールドと呼ばれる属性と値の対が含まれます。属性はフィールドの識別子であり、対応する値はフィールドのデータ内容を表します。
フィールド化バッファを使用すると、関連したフィールドのセットを名前でアクセスできるので、協調動作するプロセス間でパラメータ化されたデータを受け渡す場合に便利です。他のプロセスとコミュニケートする必要のあるプログラムは、FMLソフトウェアを使用し、フィールドを含む構造体を意識せずにフィールドへのアクセスが可能です。
FMLはまた、VIEWと呼ばれる、フィールド化バッファをC構造体またはCOBOLレコードにマップする(その逆も可能)機能を提供します。VIEW機能はフィールド化バッファではなく構造体間で、大量のデータのやり取りを行い、データを構造体に転送し操作すると、アプリケーションはより高速に実行します。このように、VIEW機能を使用すると、フィールド化バッファのデータ独立性と従来のレコード構造の効率性、簡便性を共に享受することができます。
FMLはまた、RECORDと呼ばれる、RECORDバッファをCOBOLレコードにマップする(その逆も可能)機能も提供します。RECORD機能では、RECORDバッファ内のデータを操作できます。
FMLおよびVIEW機能には3種類のインタフェースがあります。
•
|
FMLおよびVIEWは、16ビットのフィールド識別子、フィールド長、フィールド・オカレンスおよびレコード長に対応しています。
|
•
|
FML32およびVIEW32は、32ビットのフィールド識別子、フィールド長、フィールド・オカレンスおよびレコード長に対応しています。このインタフェースで使用される型定義、ヘッダー・ファイル、関数名およびコマンド名には"32"という接頭辞が含まれます。
|
•
|
RECORDでは、COBOLコピーブック・レコード定義、RECORD定義ファイル、RECORDバッファ関数名およびRECORDコマンド名が格納されます。
|
FMLをOracle Tuxedoシステムで使用する方法
Oracle Tuxedoシステムでは、FML関数はATMIアプリケーションのコンテキストでフィールド化バッファを操作するために使用されます。
Oracle Tuxedoシステムのコア部分用に作成されたデータ入力プログラムはFML関数を使用し、これらのプログラムはフィールド化バッファを使用して端末で入力されたユーザー・データを他のプロセスに転送します。データ入力プログラムからフィールド化バッファの入力を受信するATMIアプリケーションを作成する場合、FML関数を使用する必要があります。
ユーザーの入出力用に自分でアプリケーションを開発する場合、またはプログラムがプロセス間でメッセージを受け渡しするよう作成されている場合でも、これらのプログラム間で受け渡されるフィールド化バッファを処理するためにFMLを使用できます。
型付きバッファは、フィールド化バッファのFMLの概念から生まれたOracle Tuxedoシステムの機能です。Oracle Tuxedoシステム付属の2つの標準バッファ・タイプは、FML型バッファおよびVIEW型バッファです。2つの間の相違点の1つは、Oracle TuxedoのVIEWバッファはFMLフィールド化バッファと完全に無関係にすることが可能である点です。
このテキストでは、VIEWがFMLレコードの構造化されたバージョンであることを説明します。
『C言語を使用したOracle Tuxedo ATMIアプリケーションのプログラミング』などの他のドキュメントでは、VIEWを数種類あるOracle Tuxedoのバッファ・タイプの1つとして扱っています。
フィールド識別子(
fldid)は、FMLレコードまたはフィールド化バッファ内の個別のデータに付加されるタグです。フィールド識別子は、フィールド名(番号)およびフィールド内のデータの種類で構成されます。
フィールド化バッファは、各データ・アイテムに識別のためのタグ(フィールド識別子)が付加されているデータ構造で、フィールド識別子にはデータの種類およびフィールド番号が含まれます。
FMLフィールドおよびフィールド化バッファには型があります。標準のC言語型のいずれか(
short、
long、
float、
double、
char)を使用できます。ほかに、
string型(NULL文字で終了する文字列)、
carray型(文字配列)、
mbstring型(マルチバイト文字配列 - Tuxedoリリース8.1またはそれ以降で使用可能)、
ptr型(バッファを指すポインタ)、
FML32型(埋め込み型のFML32バッファ)、および
VIEW32型(埋め込み型のVIEW32バッファ)がサポートされています。
mbstring、
ptr、
FML32、および
VIEW32型は、FML32インタフェースでのみサポートされています。COBOLでは、
COMP-5型、
COMP-1型、
COMP-2型、および
PIC X型に対応しますが、現時点では、COBOLには
mbstring、
ptr、
fml32、および
view32に対応する型はありません。VIEWSでは、
COBOL COMP-3との統合のためにC言語のパック10進数型もサポートされています。
VIEWSは、フィールド操作言語の機能の一部です。C構造体のメンバーまたはCOBOLレコードにフィールドをマッピングすることにより、フィールド化バッファとレコード(C構造体またはCOBOLレコード)間でデータを送受信することができます。フィールド化バッファを大量に操作する場合は、データをC構造体内に転送するとパフォーマンスが向上します。VIEWS関数を使用して、フィールド化バッファ内の情報をバッファ内のフィールドから抽出してC構造体に置き、C構造体内でデータを操作した後、再度VIEWS関数を使用して、更新した値をフィールド化バッファに戻すことができます。FMLとは別にVIEWSを単独で使用し、特にCOBOLレコードをサポートするためにも使用できます。
RECORDは、RECORDバッファとCOBOLレコードの間でのデータの交換を可能にするフィールド操作言語の機能です。RECORD関数を使用して、RECORDバッファ内の情報をバッファ内のアイテムから抽出してバッファに置き、操作後、再度RECORD関数を使用して、更新した値をバッファに戻すことができます。FMLとは別にRECORDを単独で使用し、特にCOBOLレコードをサポートするためにも使用できます。