BEA Logo BEA Tuxedo Release 8.0

  BEA ホーム  |  イベント  |  ソリューション  |  パートナ  |  製品  |  サービス  |  ダウンロード  |  ディベロッパ・センタ  |  WebSUPPORT

 

   Tuxedoホーム   |   ファイル形式、データ記述方法、MIB、およびシステム・プロセスのリファレンス   |   先頭へ   |   前へ   |   次へ   |   目次

 


viewfile(5)

名前

viewfile-VIEW 記述用ソース・ファイル

機能説明

VIEW ファイルは、 1 つまたは複数の C データ構造体 (VIEW) の記述用ソース・ファイルです。viewc() コマンドへの入力として使用される場合は、VIEW ファイルはバイナリ・ファイル (ファイル名 view_filename.V) とヘッダ・ファイル (view_filename.h) を形成する際の元になります。viewc、viewc32(1) を参照してください。

BEA Tuxedo システムでは、バイナリ・ファイル .V は以下の 2 通りの方法で使用されます。

構造体のメンバがその論理名によって参照できるように、VIEW を使用するすべてのプログラムで .h ファイルをインクルードする必要があります。

VIEW 記述

ソース viewfile の各 VIEW 記述は、次の3つの部分からなっています。

VIEW 記述の先頭行は、キーワード "VIEW" で始め、その後に VIEW 記述の名前を続けなければなりません。メンバ記述 (またはマッピング・エントリ) は、C 構造体のメンバに関する情報が含まれている行です。キーワード "END" がある行は、VIEW 記述の最後に置かなければなりません。先頭に # が付いている行は注釈として扱われ、無視されます。

したがって、ソース VIEW 記述は、一般に次のような構造になっています。

VIEW vname 
# type cname fbname count flag size null
# ---- ----- ------ ----- ---- ---- ----
--------------メンバの記述-------------------
.
.
.
END

VIEW 記述の変数フィールドには以下のような意味があります。

vname

VIEW 記述の名前。これは C 構造体の名前としても使用されるため、有効な C 識別子を指定します。

type

メンバの型を示します。int、short、long、char、float、double、string、carray、または dec_t のいずれかを指定します。ダッシュ (-) を指定すると、VIEW が FML バッファにマップされる場合、メンバの型にはデフォルトで fbname 型が設定されます。

cname

構造体メンバの識別子。これは C 構造体メンバの名前であるため、有効な C 識別子名を指定します。これは有効な fbname とすることはできません。

fbname

フィールド化バッファのフィールドの名前です。この名前には、フィールド・テーブル・ファイルまたはフィールド・ヘッダ・ファイルのいずれかにある名前を指定します。FML バッファにマップしない VIEW の場合は、このフィールドには、ダッシュ (-) などの特別の意味をもたない引数値を入れる必要があります。

count

割り当てるエレメントの数、つまりこのメンバに格納されるオカレンスの最大数を示します。65,535 以下の値を指定します。

flag

カンマで区切ったオプションのリストを示します。ダッシュ (-) は、オプションが設定されていないことを示します。flag オプションについては、後で説明します。FML バッファにマップしない VIEW の場合は、このフィールドには、C または L オプション(あるいはその両方)を含むことができ、またはダッシュ (-) プレース・ホルダ値を含まなければなりません。

size

type が string または carray の場合、メンバのサイズを示します。65,535 以下の値を指定します。dec_t 型では、size は 2 つの数値をカンマで区切ります。1 つめの数値は 10 進数値のバイト数 (0 より大きく、10 未満でなければならない) で、2 つめの数値は小数点の右側の桁数です (0 より大きく、バイト数に 2 をかけた数値から 1 を引いた値未満でなければならない)。その他のフィールド・タイプでは、(-) を指定すると VIEW コンパイラがサイズを計算します。

null

ユーザ指定のヌル値を示します。ダッシュ (-) を指定すると、該当するフィールドのデフォルトのヌル値が設定されます。ヌル値については、後で説明します。

フラグ・オプション

VIEW 記述のメンバ記述の flag 要素として指定できるオプションのリストを以下に示します (フラグ・オプションは FML 対応の VIEW にのみ適用されます)。L および C オプションは、FML ベースではない VIEW にも構造体メンバを追加生成します。

C

このオプションは、メンバ記述で記述されている構造体メンバに加えて、関連するカウント・メンバ (ACM) と呼ばれる付加的な構造体メンバが生成されることを示します(FML ベースではない VIEW も同様)。データをフィールド化バッファから構造体に転送する場合は、その構造体内の各 ACM を関連する構造体メンバに転送されるオカレンスの数に設定します。ACM の値 0 は、対応する構造体メンバにフィールドが転送されなかったことを示します。正の値は、構造体メンバの配列に実際に転送されたフィールドの数を示します。負の値は、構造体メンバの配列に転送できる以上のフィールドがバッファ内にあったことを示します (ACM の絶対値は、構造体に転送されなかったフィールドの数と同等です)。構造体メンバの配列からフィールド化バッファへのデータ転送時には、転送される配列要素数を示すためにACM が使用されます。たとえば、メンバの ACM が N に設定されている場合は、最初の N のヌルでないフィールドがフィールド化バッファに転送されます。N が配列の大きさを超える場合は、省略時の設定としてその配列の大きさがとられます。どちらの場合も、転送後、ACM はフィールド化バッファに転送される配列のメンバの実際の数に設定されます。ACM のタイプは short として宣言され、その名前は "C_cname" の形で生成されます (ここで cname は、ACM が宣言されている cname エントリ)。たとえば、parts という名前のメンバの ACM は、以下のように宣言されます。

short C_parts;

生成された ACM 名が、先頭に "C_" 接頭辞が付いている構造体メンバと矛盾する場合もあります。そのような矛盾は VIEW コンパイラにより報告され、これを VIEW コンパイラは致命的なエラーとみなします。たとえば、構造体のメンバの名前が "C_parts" である場合、これは、メンバ "parts" のために生成された ACM の名前と矛盾します。また、-r コマンド行オプションを指定すると、VIEW コンパイラは ACM メンバと ALM (後述の L オプション参照) メンバの構造化レコード定義を生成します。

F

構造体からフィールド化バッファへの一方向のマッピングを指定します。このオプションをもつメンバのマッピングは、構造体からフィールド化バッファへのデータ転送の場合にのみ有効です。

L

このオプションはタイプが文字配列または文字列であるメンバ記述にのみ使用し、これらの可変長フィールドに対して転送されたバイト数を示します。文字列フィールドまたは文字配列フィールドが常に固定長データ項目として使用される場合には、このオプションは無意味です。L オプションにより、タイプが文字配列または文字列である構造体メンバの関連する長さメンバ (ALM) が生成されます(FML ベースではない VIEW も同様)。フィールド化バッファから構造体へデータを転送する場合は、ALM は対応する転送されたフィールドの長さに設定されます。フィールド化バッファのフィールドの長さがマップされた構造体メンバで割り当てられた領域を越える場合は、割り当てられたバイト数しか転送されません。対応する ALM はフィールド化バッファ項目のサイズに設定されます。したがって、ALM が構造体メンバの配列の大きさを超える場合は、フィールド化バッファ情報は転送時に切り捨てられます。構造体メンバからフィールド化バッファのフィールドにデータを転送する場合、そのフィールドが文字配列タイプであれば、ALM を使用してフィールド化バッファに転送するバイト数を示します。文字列の場合は、ALM は転送時には無視されますが、後で転送されたバイト数に設定されます。文字配列フィールドの長さはゼロであることもあるため、ALM が 0 である場合、関連する構造体メンバの値がヌル値でなければ、フィールド化バッファに長さゼロのフィールドが転送されることを示します。ALM は符号なし short となるように定義され、"L_cname" という名前が付きます (ここで cnameALM が宣言される構造体の名前です)。宣言する ALM に対応するメンバのオカレンス数が 1 である場合、またはデフォルト値が 1 に設定されている場合は、次のように ALM を宣言します。

unsigned short L_cname;

一方、オカレンス数が 1 より大きい場合、つまり N の場合、ALM は次のように宣言され、

unsigned short L_cname[N];

ALM 配列として参照されます。このような場合は、ALM 配列内の各要素は構造体メンバ (またはフィールド) の対応するオカレンスを参照します。生成された ALM 名と先頭に "L_" 接頭辞が付いている構造体メンバとが矛盾する場合もあります。そのような矛盾は VIEW コンパイラにより報告され、これを VIEW コンパイラは致命的なエラーとみなします。たとえば、構造体のメンバの名前が "L_parts" である場合、これは、メンバ "parts" のために生成された ALM の名前と矛盾します。また、-r コマンド行オプションを指定すると、VIEW コンパイラは ACM メンバと ALM (前述の C オプション参照) メンバの構造化レコード定義を生成します。

N

ゼロ方向マッピングを指定します。つまり C 構造体にフィールド化バッファはマップされません(このオプションでは、FML ベースでない VIEW では無視されます)。これは、C 構造体に充填文字を割り当てるときに使用することができます。

P

このオプションは、どの値を文字列および文字配列タイプの構造体メンバのヌル値として解釈されるようにするかを決めるために使用します(このオプションでは、FML ベースでない VIEW では無視されます)。P オプションを指定しない場合は、構造体メンバの値がユーザ指定の NULL 値と等しいと (ただし、後続の NULL 文字は考慮に入れない)、構造体メンバが NULL になります。一方、このオプションを指定した場合は、ユーザ指定の NULL 値と構造体メンバの値が等しく、しかも最後の文字が完全な長さまで及んでいると (ただし、後続の NULL 文字は考慮に入れない)、構造体メンバが NULL になります。値がヌルであるメンバは、データが C 構造体からフィールド化バッファに転送されても宛先バッファに転送されません。たとえば、構造体メンバ TEST のタイプが文字配列 [25] で、それに対しユーザ指定のヌル値 "abcde" が指定されているとします。P オプションが設定されていない場合は、TEST は、最初の5文字が、それぞれ a、b、c、d、e であればヌルとみなされます。P オプションが設定されている場合は、TEST は、最初の4文字がそれぞれ a、b、c、d で、この文字配列の残りの文字の中に 'e' (21 個の e) があればヌルとなります。

S

フィールド化バッファから構造体への一方向のマッピングを指定します(このオプションでは、FML ベースでない VIEW では無視されます)。このオプションによるメンバのマッピングが行えるのは、フィールド化バッファから構造体へのデータの転送時にのみです。

ヌル値

ヌル値は C 構造体のメンバが空であることを示すために使用されます。省略時のヌル値が提供されていますが、独自のヌル値を定義することもできます。

省略時のヌル値は、数値タイプの場合はすべて 0 であり、char タイプでは "\\0"、文字列および文字配列タイプでは "" です。

ヌル値を指定するためにエスケープ規則定数を使用することもできます。VIEW コンパイラが認識するエスケープ定数は、\ddd (d は8進数)、\\|0、\\|n、\\|t、\\|v、\\|b、\\|r、\\|f、\\|\\|、\\|'、\\|"\| です。

文字列、文字配列、char のヌル値は二重または一重引用符で囲まれている場合があります。VIEW コンパイラは、ユーザ定義のヌル値の内部のエスケープされていない引用符は受け入れません。

要素は、値がその要素の NULL 値と同じであれば、NULL になりますが、以下の例外があります。

VIEW 記述のヌル・フィールドにキーワード "NONE" を指定することもできます。これは、そのメンバに対するヌル値がないことを意味します。

文字列および文字配列のメンバの省略時値の最大サイズは 2660 文字です。

文字列メンバの場合、通常 "\0" で終了するため、ユーザ定義のヌル値の最後の文字として "\0" は必要ありません。

環境変数

VIEWFILES

アプリケーションのオブジェクト VIEW ファイルをカンマで区切って示したリストを指定します。絶対パス名で指定したファイルは、そのまま使用され、相対パス名で指定したファイルは、VIEWDIR 変数 (下記参照) で指定したディレクトリのリストから検索されます。

VIEWDIR

VIEW オブジェクト・ファイルがある可能性のあるディレクトリをコロンで区切って示したリストを指定します。VIEWDIR の設定がない場合は、カレント・ディレクトリとなる値がとられます。

VIEW32 では、環境変数 VIEWFILES32 および VIEWDIR32 が使用されます。

使用例

# FML ベース VIEW ファイルの開始
VIEW custdb
$/* コメント行 */
#
#type cname fbname count flag size null
#
carray bug BUG_CURS 4 - 12 "no bugs"
long custid CUSTID 2 - - -1
short super SUPER_NUM 1 - - 999
long youid ID 1 - - -1
float tape TAPE_SENT 1 - - -.001
char ch CHR 1 - - "0"
string action ACTION 4 - 20 "no action"
END
# 非依存 VIEW ファイルの開始
VIEW viewx
$ /* viewx 情報のための VIEW 構造体 */
#
# type cname fbname count flag size null
#
int in - 1 - - -
short sh - 2 - - -
long lo - 3 - - -
char ch - 1 - - -
float fl - 1 - - -
double db - 1 - - -
string st - 1 - 15 -
carray ca - 1 - 15 -
END

関連項目

viewc、viewc32(1)tpalloc(3c)Fvftos、Fvftos32(3fml)Fvstof、Fvstof32(3fml)

『FML を使用した BEA Tuxedo アプリケーションのプログラミング』

 

先頭へ戻る 前のトピックへ 次のトピックへ