![]() |
![]() |
|
|
フィールド・テーブルからヘッダ・ファイルに変換する
既に説明したとおり、mkfldhdr (または mkfldhdr32) コマンドを実行すると、フィールド・テーブルが C コンパイラ処理に対応したファイルに変換されます。生成されたヘッダ・ファイルの各行の形式は、次のとおりです。
#define fname fieldid
fname にはフィールド名を指定し、fieldid にはフィールド識別子を指定します。フィールド識別子は、符号化されたフィールド型とフィールド番号で構成されます。フィールド番号は絶対数、つまり base に rel-number を足した数です。生成されたファイルは、C プログラムに組み込むことができます。
「フィールドを C 構造体および COBOL レコードにマッピングする」で説明するとおり、実行時のマッピング関数を使用する場合、ヘッダ・ファイルを使用する必要はありません。
コンパイル時にファイル名を識別子にマッピングすると、処理を高速化でき、データ領域が少なくて済むという利点があります。逆に、サービス・ルーチンのコンパイル後にフィールド名と識別子のマッピングが変更されると、サービス・ルーチンに伝播されないという欠点があります。このような場合、サービス・ルーチンはコンパイル済みのマッピングを使用します。
mkfldhdr コマンドを実行すると、FIELDTBLS 環境変数で指定された各フィールド・テーブルが、対応するヘッダ・ファイルに変換されます。ヘッダ・ファイル名は、フィールド・テーブル名に .h という接尾辞を付けて指定します。生成されたヘッダ・ファイルは、デフォルトでカレント・ディレクトリに保存されます。別のディレクトリに保存したい場合は、mkfldhdr コマンドで -d オプションを使用して、保存先ディレクトリを指定します。詳細については、『BEA Tuxedo コマンド・リファレンス』の「mkfldhdr、mkfldhdr32(1)」を参照してください。
フィールド・テーブルからヘッダ・ファイルへの変換例
例 1 および 2 は、環境変数を設定して mkfldhdr(1) コマンドを実行する方法を示しています。ここでは、3 つのフィールド・テーブル・ファイル (${FLDTBLDIR}/maskftbl、${FLDTBLDIR}/DBftbl、${FLDTBLDIR}/miscftbl) が処理され、3 つのインクルード・ファイル (maskftbl.h、DBftbl.h、miscftbl.h) がカレント・ディレクトリに生成されます。詳細については、『BEA Tuxedo コマンド・リファレンス』の「mkfldhdr、mkfldhdr32(1)」を参照してください。
例 1
FLDTBLDIR=/project/fldtbls
FIELDTBLS=maskftbl,DBftbl,miscftbl
export FLDTBLDIR FIELDTBLS
mkfldhdr
例 2
FLDTBLDIR32=/project/fldtbls
FIELDTBLS32=maskftbl,DBftbl,miscftbl
export FLDTBLDIR32 FIELDTBLS32
mkfldhdr32
例 3
例 3 は例 1 と同じですが、出力ファイル (maskftbl.h、DBftbl.h、miscftbl.h) が ${FLDTBLDIR} で指定されたディレクトリに保存される点だけが異なります。
FLDTBLDIR=/project/fldtbls
FIELDTBLS=maskftbl,DBftbl,miscftbl
export FLDTBLDIR FIELDTBLS
mkfldhdr -d${FLDTBLDIR}
mkfldhdr -d${FLDTBLDIR}
環境変数をオーバーライドして mkfldhdr を実行する
mkfldhdr のコマンド行でフィールド・テーブルの名前を指定し、環境変数をオーバーライドする (または環境変数を設定しない) ことができます。
ただし、この方法は実行時マッピングの関数に対しては適用できません。実行時マッピングの関数が使用されている場合、FLDTBLDIR がカレント・ディレクトリと見なされ、FIELDTBLS はユーザがコマンド行で指定したパラメータの一覧と見なされます。次の例を参照してください。
mkfldhdr myfields
このコマンドは、フィールド・テーブル・ファイル myfields をフィールド・ヘッダ・ファイル myfields.h に変換し、そのヘッダ・ファイルをカレント・ディレクトリに格納します。
詳細については、『BEA Tuxedo コマンド・リファレンス』の「mkfldhdr、mkfldhdr32(1)」を参照してください。
![]() |
![]() |
![]() |
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|