FMLフィールド化バッファの操作を開始したり、構造体とフィールド化バッファ間でフィールドを移動するVIEWS関数を使用するには、まず、必要な環境変数を設定して、これらの方式が環境に組み込まれるように設定します。この項では、その方法について説明します。
Oracle Tuxedoシステムに同梱されるFMLソフトウェアは、ローカル・ファイル・システムのサブツリーに格納されています。いくつかのFMLモジュールでは、このサブツリー構造が使用されます。TUXDIR
環境変数には、Oracle Tuxedo ATMIサーバーがインストールされているディレクトリのフル・パス名が設定されているとみなされます。
Oracle Tuxedoのインストール先ディレクトリは、以下のサブディレクトリで構成されています。
include
- Cアプリケーション・コードの作成者に必要なヘッダー・ファイルが格納されています。cobinclude
- COBOLアプリケーション・コードの作成者に必要なCOPYファイルが格納されています。(このディレクトリの名前は、ファイル名が8.3に制限されているオペレーティング・システムではcobinclu
になります。)bin
- FMLの実行可能コマンドが格納されています。lib
- FMLのサブルーチン・パッケージが格納されています。FML関数を使用するプログラムをコンパイルする場合は、$TUXDIR/lib/libfml.
suffix
と$TUXDIR/lib/libgp.
suffix
をCコンパイラのコマンド行で指定して、外部参照を解決する必要があります。libfml32.
suffix
には、FML32関数およびVIEW32関数が含まれています。(接尾辞は、共有オブジェクトを使用しないPOSIXオペレーティング・システムでは.a
、共有オブジェクトを使用する場合は.so
.release
、Windowsでは.lib
であり、ダイナミック・リンク・ライブラリを使用するプラットフォームのOracle TuxedoシステムのDLLの一部です。)FMLを使用するCアプリケーションには、以下のヘッダー・ファイルをここに示す順序でインクルードします。
#include <stdio.h>
#include “fml.h”
fml.h
またはfml32.h
ファイルには、FMLソフトウェアで使用される構造体、シンボリック定数、およびマクロのための定義が格納されています。
FMLおよびVIEWSで使用される環境変数は以下のとおりです。
FIELDTBLS
- この変数には、所定のアプリケーション・プログラム用のフィールド表ファイルをカンマで区切ってリストします。フル・パス名で指定したファイルは、そのまま使用されます。相対パス名で指定したファイルは、FLDTBLDIR
変数で指定したディレクトリのリストから検索されます。FML32
では、FIELDTBLS32
が使用されます。FIELDTBLS
が設定されていない場合、単一のファイル名fld.tbl
が使用されます。(FLDTBLDIR
もやはり適用されます。次を参照してください。)FLDTBLDIR
- この変数には、相対ファイル名を持つフィールド表ファイルの検索に使用するディレクトリをコロンで区切ってリストします。使用法はPATH
環境変数と同様です。FLDTBLDIR
を設定しない場合、またはNULLの場合、カレント・ディレクトリの値が使用されます。FML32
では、FLDTBLDIR32
が使用されます。詳細は、「フィールドの定義と使用」を参照してください。
FLDTBLDIR
およびFIELDTBLS
)のほかに、2つの環境変数が使用されます。VIEWFILES
- この変数には、アプリケーション・プログラムで使用するオブジェクトVIEWファイルをカンマで区切ってリストします。フル・パス名で指定したファイルは、そのまま使用されます。相対パス名で指定したファイルは、VIEWDIR
変数で指定したディレクトリのリストから検索されます(次の項目を参照)。VIEW32
では、VIEWFILES32
が使用されます。VIEWDIR
- この変数には、相対ファイル名を指定したVIEWオブジェクト・ファイルを検索するために使用する、コロンで区切ったディレクトリのリストを指定します。この変数の設定方法と使用方法は、PATH
環境変数と同じです。VIEWDIR
を設定しない場合、またはNULLの場合、カレント・ディレクトリの値が使用されます。VIEW32
では、VIEWDIR32
が使用されます。FLD_MBSTRING
をサポートします。TPMBENC
- この変数には、Oracle Tuxedo 8.1またはそれ以降が動作しているアプリケーション・サーバーまたはクライアントでFML32型付きバッファ内のFLD_MBSTRING
フィールド用に設定されているコード・セット・エンコーディング名を指定します。アプリケーション・サーバーまたはクライアントのプロセスが、FLD_MBSTRING
フィールドを含んだFML32バッファを割り当ておよび送信する際に、Fmbpack32()
のenc
引数が未定義でflag
引数がFBUFENC
に設定されていない場合、TPMBENC
で定義したコード・セット・エンコーディング名が自動的に使用されます。 アプリケーション・サーバーまたはクライアントのプロセスが、FLD_MBSTRING
フィールドを含んだFML32バッファを受信する際、別の環境変数TPMBACONV
が設定されていると想定される場合、TPMBENC
で定義したコード・セット・エンコーディング名は、受信側バッファ内のFLD_MBSTRING
フィールドに指定されているコード・セット・エンコーディング名と自動的に比較されます。エンコーディング名が同じでない場合、FLD_MBSTRING
フィールドのデータは、TPMBENC
で定義したエンコーディングに自動的に変換されてから、サーバーまたはクライアントのプロセスに配信されます。
TPMBENC
のデフォルト値はありません。FLD_MBSTRING
フィールドを使用するアプリケーション・サーバーまたはクライアントでは、自動変換が機能するようにTPMBENC
を定義する必要があります。
注: | TPMBENC の使用方法は、MBSTRING型付きバッファの場合とほぼ同じです。 |
TPMBACONV
- この変数には、Oracle Tuxedo 8.1またはそれ以降が動作しているアプリケーション・サーバーまたはクライアントが、受信側FML32バッファ内のFLD_MBSTRING
フィールドをTPMBENC
で定義されたエンコーディングに自動的に変換するかどうかを指定します。デフォルトでは、自動変換は無効になっています。つまり、FLD_MBSTRING
フィールドのデータは、そのまま(エンコーディング変換なしで)送信先サーバーまたはクライアントのプロセスに配信されます。TPMBACONV
をY
(yes)などのNULL以外の値に設定すると、自動変換が有効になります。注: | TPMBACONV の使用方法は、MBSTRING型付きバッファの場合とほぼ同じです。 |
詳細は、「FLD_MBSTRINGフィールドの変換」を参照してください。
Tuxedo 9.0から、VIEW32はMBSTRING型付きバッファをサポートするようになりました。これは、FML32のFLD_MBSTRING
フィールド・タイプに対応します。
Fmbpack32(3fml)
は、エンコーディング用にVIEW32バッファのMBSTRINGフィールドを比較し、Fmbunpack32(3fml)
はそれを解凍します。TPMBENC
環境変数およびTPMBACONV
環境変数もVIEW32で使用されます。