bea ホーム | 製品 | dev2dev | support | askBEA
BEA Logo Tuxedo
 ドキュメントのダウンロード   サイトマップ   用語集 
検索
0

COBOL を使用した Tuxedo アプリケーションのプログラミング

 Previous Next Contents View as PDF  

型付きレコードの管理

ここでは、次の内容について説明します。

 


型付きレコードの概要

ほかのアプリケーション・プログラムにデータを送信する場合、送信元プログラムはまず送信データをレコードに格納します。BEA Tuxedo システムのクライアントは、型付きレコードを使用してサーバにメッセージを送ります。「型付きレコード」とは、データ・レコードと補助型レコードが対になった COBOL 言語のレコードです。データ・レコードは、静的領域内に定義され、別のアプリケーション・プログラムに渡すアプリケーション・データが入ります。データ・レコードには、補助型レコードが付加されます。補助型レコードは、異機種システム間で情報をやり取りする場合に、BEA Tuxedo システムで使用されるデータ・レコードの解釈と変換の規則を指定します。型付きレコードは、BEA Tuxedo システムでサポートされる分散プログラミング環境の基本要素の 1 つです。

なぜ「型付き」レコードを使用するのでしょうか。分散環境では、アプリケーションが異機種システムにインストールされ、異なるプロトコルを使用して複数のネットワーク間で通信が行われます。レコード・タイプが異なると、初期化、メッセージの送受信、およびデータの符号化/復号化にそれぞれ別のルーチンが必要になります。各レコードに特定のタイプが割り当てられていると、プログラマが介在しなくても、そのタイプに対応するルーチンを自動的に呼び出すことができます。

以下に示す表は、BEA Tuxedo システムでサポートされる型付きレコードと、そのレコードが次の条件を満たしているかを示しています。

ルーティング用のルーチンが必要な場合は、アプリケーション・プログラマが用意します。

表 3-1 型付きバッファ

型付きレコード

機能説明

自己記述型

サブタイプ

データ依存型
ルーティング

符号化/復号化

CARRAY

未定義の文字配列。LOW-VALUE を含むことができます。BEA Tuxedo システムでは配列のセマンティクスは解釈されないので、この型付きレコードは曖昧なデータを処理する場合に使用します。CARRAY は自己記述型ではないので、転送時には長さを指定する必要があります。システムではバイトは解釈されないので、マシン間のメッセージ送信では符号化/復号化はサポートされません。

該当せず

該当せず

該当せず

該当せず

FML (フィールド操作言語)

BEA Tuxedo システム固有の自己記述型レコード・タイプ。このレコードでは、各データ・フィールドに対応する識別子、オカレンス番号、場合によっては長さを示す値が格納されています。型付きレコードでは、データからの独立性と柔軟性が確立されています。

FML 型レコードでは、フィールド識別子とフィールド長に 16 ビットが使用されます。

詳細については、FML 型レコードを参照してください。

該当

該当せず

該当

該当

FML32

FML と同じ。ただし、フィールド識別子とフィールド長に 32 ビットが使用されます。より長いフィールドを多数使用できるので、レコード全体が大きくなります。

ただし、C プログラミング言語で FML 型レコードの操作に使用できる FML ルーチンは、COBOL 言語では使用できません。COBOL 言語で FML32 を使用する主な目的は、単に VIEW32 または FML32 型レコードが使用されている C 言語プログラムを操作することです。

詳細については、FML 型レコードを参照してください。

該当

該当せず

該当

該当

STRING

最後が LOW-VALUE 文字で終了する文字配列。異なる文字セットを使用するマシン間でデータを交換する場合は、BEA Tuxedo システムによってデータが自動的に変換されます。

該当せず

該当せず

該当せず

該当せず

VIEW

アプリケーションで定義される COBOL データ構造体。VIEW 型には、個々のデータ構造体を示すサブタイプが必要です。VIEW 記述ファイル (データ構造体のフィールドとタイプが定義されたファイル) は、VIEW 型レコードに定義されたデータ構造体を使用するクライアント・プロセスとサーバ・プロセスがアクセスできなければなりません。異なるタイプのマシン間でレコードがやり取りされる場合は、符号化/復号化が自動的に行われます。詳細については、VIEW 型レコードを参照してください。

該当せず

該当

該当

該当

VIEW32

VIEW と同じ。ただし、長さとカウントのフィールド長に 32 ビットが使用されます。より長いフィールドを多数使用できるので、レコード全体が大きくなります。

COBOL 言語で VIEW32 を使用する主な目的は、単に VIEW32 または FML32 型レコードが使用されている C 言語プログラムを操作することです。

詳細については、VIEW 型レコードを参照してください。

該当せず

該当

該当

該当

X_COMMON

VIEW と同じ。ただし、このバッファ型は COBOL と C プログラム間の互換性を取るために使用されます。フィールド・タイプとして使用できるのは、short、long、および string だけです。

該当せず

該当

該当

該当

XML

XML 文書は、次の要素から構成されます。

XML 文書のルーティングは、エレメントの内容、またはエレメント・タイプと属性値に基づいて行われます。使用されている文字符号化は XML パーサによって判別されます。符号化が BEA Tuxedo のコンフィギュレーション・ファイル (UBBCONFIG(5)DMCONFIG(5)) で使用されているネイティブな文字セット (US-ASCII または EBCDIC) と異なる場合、エレメントと属性名は US-ASCII または EBCDIC に変換されます。詳細については、XML 型レコードを参照してください。

該当せず

該当せず

該当

該当せず

X_OCTET

CARRAY と同じ。

該当せず

該当せず

該当せず

該当せず

すべてのレコード・タイプは、$TUXDIR/lib ディレクトリの tmtypesw.c ファイルに定義されています。クライアント・プログラムとサーバ・プログラムで認識されるレコード・タイプは、tmtypesw.c に定義されているものだけです。tmtypesw.c ファイルを編集して、レコード・タイプを追加したり削除できます。また、UBBCONFIGBUFTYPE パラメータを使用して、特定のサービスで処理できるタイプとサブタイプを制限できます。

tmtypesw.c ファイルは、共用オブジェクトやダイナミック・リンク・ライブラリのビルドに使用されます。このオブジェクトは、BEA Tuxedo 管理サーバ、およびアプリケーション・クライアントとアプリケーション・サーバによって動的にロードされます。

関連項目

 


型付きレコードの定義

TPTYPE-REC COBOL 構造体は、アプリケーション・データの送受信に必ず使用されます。

次の表は、TPTYPE-REC 構造体のフィールドを示しています。

フィールド

説明

REC-TYPE

アプリケーションで送信または受信するレコード・タイプを指定します。

SUB-TYPE

レコード (VIEW レコードなど) 内でレコード・タイプをさらに細かく分類する場合は、そのサブタイプを指定します。

LEN

データの送信時に、送信バイト数を指定します。データ送信が正常に行われると、LEN には送信されたバイト数が格納されます。データの受信時に、TPTYPE-RECLEN はデータ・レコードに送られるバイト数を指定します。呼び出しが正常に行われると、LEN にはデータ・レコードに送られたバイト数が格納されます。受信メッセージのサイズが LEN で指定されているサイズより大きい場合、データは切り捨てられます。つまり、LEN を超えて受信されたデータは破棄され、TPTYPE-STATUSTPTRUNCATE が設定されます。

次のコード例は、TPTYPE データ構造体を示しています。

05 REC-TYPE PIC X(8).
88 X-OCTET VALUE “X_OCTET”.
88 X-COMMON VALUE “X_COMMON”.
05 SUB-TYPE PIC X(16).
05 LEN PIC S9(9) COMP-5.
88 NO-LENGTH VALUE 0.
05 TPTYPE-STATUS PIC S9(9) COMP-5.
88 TPTYPEOK VALUE 0.
88 TPTRUNCATE VALUE 1.

 


VIEW 型レコード

VIEW 型レコードには 2 種類あります。1 つは FML VIEW で、FML レコードから生成される COBOL レコードです。もう 1 つは、単なる非依存型 COBOL レコードです。

FML レコードを COBOL レコードに変換して再び元に戻す理由 (および FML VIEW 型レコードを使用する目的) は、FML 関数が COBOL プログラミング環境では使用できないからです。

FML 型レコードの詳細については、『BEA Tuxedo FML リファレンス』を参照してください。

VIEW 型レコードを使用するには、次の手順に従います。

VIEW 型レコードの環境変数の設定

アプリケーションで VIEW 型レコードを使用するには、次の環境変数を設定します。

表 3-2 VIEW 型レコードの環境変数

環境変数

説明

FIELDTBLS または FIELDTBLS32

FML または FML32 型レコードのフィールド・テーブル・ファイル名のカンマ区切りのリスト。FML VIEW 型のみで必要です。

FLDTBLDIR または FLDTBLDIR32

FML または FML32 型レコードのフィールド・テーブル・ファイルが検索されるディレクトリのコロン区切りのリスト。Microsoft Windows では、セミコロンで区切られます。FML VIEW 型のみで必要です。

VIEWFILES または VIEWFILES32

VIEW または VIEW32 記述ファイルに使用されるファイル名のカンマ区切りのリスト。

VIEWDIR または VIEWDIR32

VIEW または VIEW32 ファイルが検索されるディレクトリのコロン区切りのリスト。Microsoft Windows では、セミコロンで区切られます。

VIEW 記述ファイルの作成

VIEW 型レコードを使用するには、VIEW 記述ファイルに COBOL レコードを定義する必要があります。VIEW 記述ファイルには、各エントリの VIEW、および COBOL プロシージャのマッピングと FML 変換パターンを記述した VIEW が定義されています。VIEW の名前は、COBOL プログラムに含まれる copy ファイルの名前に相当します。

VIEW 記述ファイルの各レコードは、次の形式で定義します。

$ /* VIEW 構造体 */
VIEW viewname
type cname fbname count flag size null

次の表は、VIEW 記述ファイルに指定する必要がある各 COBOL レコードのフィールドを示しています。

表 3-3 VIEW 記述ファイルのフィールド

フィールド

説明

type

フィールドのデータ型。shortlongfloatdoublecharstring、または carray を指定できます。

cname

COBOL レコードのフィールド名。

fbname

FML から VIEW、または VIEW から FML への変換ルーチンを使用する場合、対応する FML 名をこのフィールドに指定する必要があります。このフィールド名は、FML フィールド・テーブル・ファイルにも必要です。FML に依存しない VIEW には必要ありません。

count

フィールドの出現回数。

flag

次のいずれかのオプション・フラグを指定します。

size

STRING または CARRAY 型レコードの最大長を指定します。それ以外のレコード・タイプでは、このフィールドは無視されます。

null

ユーザ定義の LOW-VALUE 値、または - の場合はフィールドのデフォルト値。VIEW 型レコードで使用される LOW-VALUE 値は、空の COBOL レコード・メンバを示します。

数値型の場合、デフォルトの LOW-VALUE 値は 0 (dec_t の場合は 0.0) になります。文字型の場合、デフォルトの LOW-VALUE 値は &slq;¥0‘ になります。STRING 型と CARRAY 型の場合、デフォルトの LOW-VALUE 値は &d“drq; になります。

エスケープ文字として使用されている定数も、LOW-VALUE 値の指定に使用できます。VIEW コンパイラで認識されるエスケープ定数は、¥ddd (d は 8 進数)、¥0¥n¥t¥v¥r¥f¥¥¥’、および ¥” です。

STRINGCARRAY、および LOW-VALUE 値は、二重引用符または一重引用符で囲みます。VIEW コンパイラでは、ユーザ定義の LOW-VALUE 値でエスケープされていない引用符は使用できません。

VIEW メンバ記述の LOW-VALUE フィールドにキーワード NONE を指定することもできます。このキーワードは、そのメンバの LOW-VALUE 値がないことを示します。文字列メンバおよび文字配列メンバのデフォルト値の最大サイズは、2660 文字です。詳細については、『BEA Tuxedo FML リファレンス』を参照してください。


 

行頭に # または $ 文字を付けてコメント行を挿入できます。行頭に $ が挿入されたコード行は、.h ファイルに出力されます。

次のコード例は、FML レコードに基づく VIEW 記述サンプル・ファイルの一部です。このコード例では、fbname フィールドを指定する必要があり、この値は対応するフィールド・テーブル・ファイルの値と一致していなければなりません。CARRAY1 フィールドのオカレンス・カウントが 2 に設定されていること、C フラグが設定されて追加のカウント・エレメントの作成が定義されていることに注目してください。また、L フラグが設定され、アプリケーションが CARRAY1 フィールドを格納するときの文字数を示す長さエレメントが定義されています。

コード リスト 0-1 FML VIEW の VIEW 記述ファイル

$ /* VIEW 構造体 */
VIEW MYVIEW
#type cname fbname count flag size null
float float1 FLOAT1 1 - - 0.0
double double1 DOUBLE1 1 - - 0.0
long long1 LONG1 1 - - 0
short short1 SHORT1 1 - - 0
int int1 INT1 1 - - 0
dec_t dec1 DEC1 1 - 9,16 0
char char1 CHAR1 1 - - '¥0'
string string1 STRING1 1 - 20 '¥0'
carray carray1 CARRAY1 2 CL 20 '¥0'
END

次のコード例は、同じ VIEW 記述ファイルで非依存型 VIEW のものを示しています。

コード リスト 0-2 非依存型 VIEW の VIEW 記述ファイル

$ /* VIEW データ構造体 */
VIEW MYVIEW
#type cname fbname count flag size null
float float1 - 1 - - -
double double1 - 1 - - -
long long1 - 1 - - -
short short1 - 1 - - -
int int1 - 1 - - -
dec_t dec1 - 1 - 9,16 -
char char1 - 1 - - -
string string1 - 1 - 20 -
carray carray1 - 2 CL 20 -
END

この形式は FML 依存型 VIEW と同じです。ただし、fbname フィールドと null フィールドには意味がなく、viewc コンパイラで無視されます。これらのフィールドには、プレースホルダとしてダッシュ (-) などの値を挿入する必要があります。

VIEW コンパイラの実行

VIEW 型レコードをコンパイルするには、引数として VIEW 記述ファイルの名前を指定して viewc -C コマンドを実行します。非依存型 VIEW を指定するには、-n オプションを使用します。生成される出力ファイルを書き込むディレクトリを指定することもできます (省略可能)。デフォルトでは、出力ファイルはカレント・ディレクトリに書き込まれます。

たとえば、FML 依存型 VIEW をコンパイルするには、次のようにコンパイラを実行します。

viewc -C myview.v

注記 VIEW32 型レコードをコンパイルするには、viewc32 -C コマンドを実行します。

非依存型 VIEW の場合、コマンド行で次のように -n オプションを指定します。

viewc -C -n myview.v

viewc コマンドでは、次が出力されます。

次のコード例は、viewc によって生成される COBOL の COPY ファイルを示しています。

コード リスト 0-3 COBOL の COPY ファイルのコード例

*    VIEWFILE: "myview.v"
* VIEWNAME: "MYVIEW"
05 FLOAT1 USAGE IS COMP-1.
05 DOUBLE1 USAGE IS COMP-2.
05 LONG1 PIC S9(9) USAGE IS COMP-5.
05 SHORT1 PIC S9(4) USAGE IS COMP-5.
05 FILLER PIC X(02).
05 INT1 PIC S9(9) USAGE IS COMP-5.
05 DEC1.
07 DEC-EXP PIC S9(4) USAGE IS COMP-5.
07 DEC-POS PIC S9(4) USAGE IS COMP-5.
07 DEC-NDGTS PIC S9(4) USAGE IS COMP-5.
* DEC-DGTS は実際のパック 10 進値です。
07 DEC-DGTS PIC S9(1)V9(16) COMP-3.
07 FILLER PIC X(07).
05 CHAR1 PIC X(01).
05 STRING1 PIC X(20).
05 FILLER PIC X(01).
05 L-CARRAY1 OCCURS 2 TIMES PIC 9(4) USAGE IS COMP-5.
* CARRAY1 の長さ
05 C-CARRAY1 PIC S9(4) USAGE IS COMP-5.
* CARRAY1 のカウント
05 CARRAY1 OCCURS 2 TIMES PIC X(20).
05 FILLER PIC X(02).

VIEW に対する COBOL の COPY ファイルは、COPY 文を使用してクライアント・プログラムとサービス・サブルーチンに含める必要があります。

このコード例では、コンパイラは FILLER ファイルを読み込んで、COBOL 言語コードでのフィールドの配置を C 言語コードでの配置と一致させています。

パック 10 進値の DEC1 は、5 つのフィールドから構成されます。このうちの DEC-EXPDEC-POSDEC-NDGTS、および FILLER フィールドは、C 言語だけで使用され、dec_t 型で定義されます。これらのフィールドは、COBOL レコードの配置を満たすために取り込まれます。COBOL アプリケーションでは、これらのフィールドを使用しないでください。

5 番目のフィールド (DEC-DGTS) には、システムによって実際のパック 10 進値が格納されます。COBOL プログラムではこの値を使用する必要があります。ATMI 呼び出しは、DEC-DGTS フィールドに以下の操作を行います。

唯一の制約として、COBOL 言語プログラムでは、ATMI インターフェイス外から C 言語関数に直接レコードを渡すことはできません。COBOL 言語プログラムと C 言語関数では 10 進数の形式が異なるからです。

最後に、COBOL の COPY サンプル・ファイルで L-CARRAY1 長さフィールドが 2 回使用されていることに注目してください。つまり、CARRAY1C-CARRAY1 カウント・フィールドに対して 1 回ずつ使用されています。

viewc は、C 言語バージョンのヘッダ・フィルを生成します。このファイルを使用すると、C と COBOL 言語のサービスやクライアント・プログラムを混在させることができます。

関連項目

 


FML 型レコード

FML インターフェイスは、C 言語で使用されるように設計されたものです。COBOL 言語に対しては、ルーチンが提供されています。そのため、受信した FML 型レコードを COBOL レコードに変換して処理した後で、FML 型に再度変換できます。

FML 型レコードを使用するには、次の手順に従います。

FML ルーチンは、フィールド化レコードから C 構造体への変換、またその逆の変換など、型付きレコードを操作する場合に使用します。これらの関数を使用すると、データ構造やデータの格納状態がわからなくても、データ値にアクセスしたり更新できます。FML ルーチンの詳細については、『BEA Tuxedo FML リファレンス』を参照してください。

FML 型レコードの環境変数の設定

アプリケーション・プログラムで FML 型レコードを使用するには、次の環境変数を設定する必要があります。

表 3-4 FML 型レコードの環境変数

環境変数

説明

FIELDTBLS または FIELDTBLS32

FML または FML32 型付きレコードのフィールド・テーブル・ファイル名のカンマ区切りのリスト。

FLDTBLDIR または FLDTBLDIR32

FML または FML32 型バッファのフィールド・テーブル・ファイルが検索されるディレクトリのコロン区切りのリスト。Microsoft Windows では、セミコロンで区切られます。

フィールド・テーブル・ファイルの作成

FML 型レコードや FML 依存型 VIEW を使用する場合は、常にフィールド・テーブル・ファイルが必要です。フィールド・テーブル・ファイルは、FML 型レコードのフィールドの論理名をそのフィールドを一意に識別する文字列にマッピングします。

FML フィールド・テーブルの各フィールドは、次の形式で定義します。

$ /* FML 構造体 */
*base value
name number type flags comments

次の表は、FML フィールド・テーブルに指定する必要がある FML フィールドを示しています。

表 3-5 フィールド・テーブル・ファイルのフィールド

フィールド

説明

*base value

後続のフィールド番号をオフセットするためのベース値。関連するフィールドのセットを簡単にグループ分けし、番号を付け直すことができるようになります。*base オプションを使用すると、フィールド番号を再利用できます。16 ビットのレコードの場合、ベース値とそれに関連する番号を加算した値が、100 以上 8191 未満でなければなりません。

注記 BEA Tuxedo システムでは、フィールド番号 1 〜 100 と 6,000 〜 7,000 は、内部使用のために予約されています。FML ではフィールド番号 101 〜 8,191、FML32 ではフィールド番号 101 〜 33、554、および 431 がアプリケーション定義のフィールド用に使用できます。

name

フィールドの識別子。この値は 30 文字以下の文字列で、英数字と下線文字だけを指定できます。

rel-number

フィールドの相対数値。現在のベース値が指定されている場合、この値は現在のベース値に加算されて、フィールド番号が計算されます。

type

フィールドのタイプ。指定できるのは、charstringshortlongfloatdouble、または carray です。

flag

将来使用するために予約されたフィールド。プレースホルダとしてダッシュ (-) を挿入します。

comment

コメント (省略可能)。

すべてのフィールドは省略可能です。また、複数個使用できます。

次のコード例は、FML àÀë¹å^ VIEW の例で使用されるフィールド・テーブル・ファイルを示しています。

コード リスト 0-4 FML VIEW のフィールド・テーブル・ファイル

# name       number    type     flags   comments
FLOAT1 110 float - -
DOUBLE1 111 double - -
LONG1 112 long - -
SHORT1 113 short - -
INT1 114 long - -
DEC1 115 string - -
CHAR1 116 char - -
STRING1 117 string - -
CARRAY1 118 carray - -

型付きレコードの初期化

FML 型レコードは、FINIT プロシージャを使用して初期化する必要があります。TPINIT プロシージャは、指定された FML レコード (できればワード境界に配置されているレコード) を使用し、FMLINFO レコードの FML-LENGTH フィールドに長さとして指定された値を使用します。

TPNOCHANGE が設定されている場合は、プログラムによって (作成されたのではなく) 受信された FML レコードが自動的に初期化されます。その場合、FINIT を呼び出す必要はありません。

次のコード例は、初期化の方法を示しています。

コード リスト 0-5 FML/VIEW 変換

WORKING-STORAGE SECTION.
*レコード・タイプおよび長さ
01 TPTYPE-REC.
COPY TPTYPE.
*呼び出しの状態
01 TPSTATUS-REC.
COPY TPSTATUS.
* サービス呼び出しフラグ/レコード
01 TPSVCDEF-REC.
COPY TPSVCDEF.
* TPINIT フラグ/レコード
01 TPINFDEF-REC.
COPY TPINFDEF.
* FML 呼び出しフラグ/レコード
01 FML-REC.
COPY FMLINFO.
*
*
* アプリケーション FML レコード - 配置
01 MYFML.
05 FBFR-DTA OCCURS 100 TIMES PIC S9(9) USAGE IS COMP-5.
* アプリケーション VIEW レコード
01 MYVIEW.
COPY MYVIEW.
.....
* MYVIEW へのデータの移動
.....
* FML レコードの初期化
MOVE LENGTH OF MYFML TO FML-LENGTH.
CALL "FINIT" USING MYFML FML-REC.
IF NOT FOK
MOVE "FINIT Failed" TO LOGMSG-TEXT
PERFORM DO-USERLOG
PERFORM EXIT-PROGRAM
END-IF.
* VIEW の FML レコードへの変換
SET FUPDATE TO TRUE.
MOVE "MYVIEW" TO VIEWNAME.
CALL "FVSTOF" USING MYFML MYVIEW FML-REC.
IF NOT FOK
MOVE "FVSTOF Failed" TO LOGMSG-TEXT
PERFORM DO-USERLOG
PERFORM EXIT-PROGRAM
END-IF.
* FML レコードを使用したサービスの呼び出し
MOVE "FML" TO REC-TYPE IN TPTYPE-REC.
MOVE SPACES TO SUB-TYPE IN TPTYPE-REC.
MOVE LENGTH OF MYFML TO LEN.
CALL "TPCALL" USING TPSVCDEF-REC
TPTYPE-REC
MYFML
TPTYPE-REC
MYFML
TPSTATUS-REC.
IF NOT TPOK
MOVE "TPCALL MYFML Failed" TO LOGMSG-TEXT
PERFORM DO-USERLOG
PERFORM EXIT-PROGRAM
END-IF.
* FML レコードの MYVIEW への再変換
CALL "FVFTOS" USING MYFML MYVIEW FML-REC.
IF NOT FOK
MOVE "FVFTOS Failed" TO LOGMSG-TEXT
PERFORM DO-USERLOG
PERFORM EXIT-PROGRAM
END-IF.

このコード例では、FVSTOF プロシージャで FML レコードを VIEW レコードに変換しています。VIEW を定義するために、VIEW コンパイラによって生成された copy ファイルが読み込まれています。FML-REC レコードには VIEWNAMEFML-MODE 転送モードがあり、転送モードには FUPDATEFOJOINFJOIN、または FCONCAT を設定できます。これらのモードで行われる処理は、Fupdate、Fupdate32(3fml)Fojoin、Fojoin32(3fml)Fjoin、Fjoin32(3fml)Fconcat、Fconcat32(3fml) での処理と同じです。

FVFTOS プロシージャは、VIEW レコードを FML レコードに変換しています。パラメータは FVSTOF プロシージャのパラメータと同じですが、FML-MODE を設定する必要はありません。各フィールドは、VIEW のエレメントの記述に基づいて、フィールド化レコードから構造体にコピーされます。フィールド化レコードのフィールドに対応するエレメントが COBOL レコードに存在しない場合、そのフィールドは無視されます。COBOL レコードに指定されたエレメントに対応するフィールドがフィールド化レコードに存在しない場合、そのエレメントに NULL 値がコピーされます。使用する NULL 値は、エレメントごとに VIEW 記述ファイルに定義できます。

フィールドの複数のオカレンスを COBOL レコードに格納するには、レコード・エレメントを OCCURS で定義します。レコードのフィールドのオカレンス数がエレメントのオカレンス数より少ない場合は、余分なエレメントには NULL 値が割り当てられます。また、レコードのフィールドのオカレンス数がエレメントのオカレンス数より多い場合は、余分なオカレンスは無視されます。

FML32 および VIEW32 では、FINIT32FVSTOF32、および FVFTOS32 プロシージャを使用する必要があります。

正常終了した場合は、FML-STATUSFOK が設定されます。エラーが発生した場合は、FML-STATUS に 0 以外の値が設定されます。

FML ヘッダ・ファイルの作成

クライアント・プログラムやサービス・サブルーチンで FML 型レコードを使用するには、FML ヘッダ・ファイルを作成し、アプリケーションの #include 文にそのヘッダ・ファイルを指定する必要があります。

フィールド・テーブル・ファイルから FML ヘッダ・ファイルを作成するには、mkfldhdr(1) コマンドを使用します。たとえば、myview.flds.h というファイルを作成するには、次のコマンドを入力します。

mkfldhdr myview.flds

FML32 型レコードの場合は、mkfldhdr32 コマンドを使用します。

次のコード例は、mkfldhdr コマンドによって作成される myview.flds.h ヘッダ・ファイルを示しています。

コード リスト 0-6 myview.flds.h ヘッダ・ファイル

/*       fname    fldid            */
/* ----- ----- */

#define FLOAT1 ((FLDID)24686) /* 番号 : 110 タイプ : float */
#define DOUBLE1 ((FLDID)32879) /* 番号 : 111 タイプ : double */
#define LONG1 ((FLDID)8304) /* 番号 : 112 タイプ : long */
#define SHORT1 ((FLDID)113) /* 番号 : 113 タイプ : short */
#define INT1 ((FLDID)8306) /* 番号 : 114 タイプ : long */
#define DEC1 ((FLDID)41075) /* 番号 : 115 タイプ : string */
#define CHAR1 ((FLDID)16500) /* 番号 : 116 タイプ : char */
#define STRING1 ((FLDID)41077) /* 番号 : 117 タイプ : string */
#define CARRAY1 ((FLDID)49270) /* 番号 : 118 タイプ : carray */

アプリケーションの #include 文に新しいヘッダ・ファイルを指定します。ヘッダ・ファイルがインクルードされると、シンボリック名でフィールドを参照できるようになります。

関連項目

 


XML 型レコード

XML 型レコードを使用すると、BEA Tuxedo アプリケーションで XML を使用して、アプリケーション内やアプリケーション間でデータを交換できるようになります。BEA Tuxedo アプリケーションでは、単純な XML 型レコードの送受信や、それらのレコードを適切なサーバにルーティングできます。解析など、XML 文書のすべての処理ロジックはアプリケーション側にあります。

XML 文書は、次の要素から構成されます。

イベント処理で行われるフォーマット処理とフィルタ処理は、STRING 型レコードが使用されている場合はサポートされますが、XML 型レコードではサポートされません。そのため、XML 型レコードのレコード・タイプ・スイッチ内の _tmfilter_tmformat のポインタは、LOW-VALUE に設定されます。

BEA Tuxedo システムの XML パーサは、次の操作を行います。

XML 型レコードでは、データ依存型ルーティングがサポートされています。XML 文書のルーティングは、エレメントの内容、またはエレメントのタイプと属性値に基づいて行われます。使用される文字符号化は XML パーサによって判別されます。符号化が BEA Tuxedo のコンフィギュレーション・ファイル (UBBCONFIGDMCONFIG) で使用されるネイティブな文字セット (US-ASCII または EBCDIC) と異なる場合、エレメントと属性名は US-ASCII または EBCDIC に変換されます。

XML 文書には、ルーティング用に設定する属性を含めなければなりません。属性がルーティング基準として設定されていても XML 文書に含まれていない場合、ルーティング処理は失敗します。

エレメントの内容と属性値は、ルーティング・フィールド値の構文とセマンティクスに従っていることが必要です。また、ルーティング・フィールド値のタイプも指定しなければなりません。XML でサポートされるのは文字データだけです。範囲フィールドが数値の場合、そのフィールドの内容や値はルーティング処理時に数値に変換されます。

関連項目

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy