フィールド操作言語(FML)は、フィールド化バッファと呼ばれる記録構造を定義、操作する一連のC言語関数で、フィールド化バッファにはフィールドと呼ばれる属性と値の対が含まれます。属性はフィールドの識別子であり、対応する値はフィールドのデータ内容を表します。
フィールド化バッファを使用すると、関連したフィールドのセットを名前でアクセスできるので、協調動作するプロセス間でパラメータ化されたデータを受け渡す場合に便利です。他のプロセスとコミュニケートする必要のあるプログラムは、FMLソフトウェアを使用し、フィールドを含む構造体を意識せずにフィールドへのアクセスが可能です。
FMLはまた、VIEWと呼ばれる、フィールド化バッファをC構造体またはCOBOLレコードにマップする(その逆も可能)機能を提供します。VIEW機能はフィールド化バッファではなく構造体間で、大量のデータのやり取りを行い、データを構造体に転送し操作すると、アプリケーションはより高速に実行します。このように、VIEW機能を使用すると、フィールド化バッファのデータ独立性と従来のレコード構造の効率性、簡便性を共に享受することができます。
FMLはまた、RECORDと呼ばれる、RECORDバッファをCOBOLレコードにマップする(その逆も可能)機能も提供します。RECORD機能では、RECORDバッファ内のデータを操作できます。
FMLおよびVIEW機能には3種類のインタフェースがあります。
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レコードまたはフィールド化バッファ内の個別のデータに付加されるタグです。フィールド識別子は、フィールド名(番号)およびフィールド内のデータの種類で構成されます。
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進数型もサポートされています。