![]() |
![]() |
|
|
VIEW 型レコード
VIEW 型レコードには 2 種類あります。1 つは FML VIEW で、FML レコードから生成される COBOL レコードです。もう 1 つは、単なる非依存型 COBOL レコードです。
FML レコードを COBOL レコードに変換して再び元に戻す理由 (および FML VIEW 型レコードを使用する目的) は、FML 関数が COBOL プログラミング環境では使用できないからです。
FML 型レコードの詳細については、『BEA Tuxedo FML リファレンス』を参照してください。
VIEW 型レコードを使用するには、次の手順に従います。
VIEW 型レコードの環境変数の設定
アプリケーションで VIEW 型レコードを使用するには、次の環境変数を設定します。
VIEW 型レコードの環境変数
VIEW 記述ファイルの作成 VIEW 型レコードを使用するには、VIEW 記述ファイルに COBOL レコードを定義する必要があります。VIEW 記述ファイルには、各エントリの VIEW、および COBOL プロシージャのマッピングと FML 変換パターンを記述した VIEW が定義されています。VIEW の名前は、COBOL プログラムに含まれる copy ファイルの名前に相当します。 VIEW 記述ファイルの各レコードは、次の形式で定義します。 次の表は、VIEW 記述ファイルに指定する必要がある各 COBOL レコードのフィールドを示しています。
$ /* VIEW 構造体 */
VIEW viewname
type cname fbname count flag size null
行頭に # または $ 文字を付けてコメント行を挿入できます。行頭に $ が挿入されたコード行は、.h ファイルに出力されます。
次のコード例は、FML レコードに基づく VIEW 記述サンプル・ファイルの一部です。このコード例では、fbname フィールドを指定する必要があり、この値は対応するフィールド・テーブル・ファイルの値と一致していなければなりません。CARRAY1 フィールドのオカレンス・カウントが 2 に設定されていること、C フラグが設定されて追加のカウント・エレメントの作成が定義されていることに注目してください。また、L フラグが設定され、アプリケーションが CARRAY1 フィールドを格納するときの文字数を示す長さエレメントが定義されています。
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 のものを示しています。
非依存型 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 コマンドでは、次が出力されます。
注記 Microsoft Windows など、大文字と小文字が区別されないプラットフォームでは、バイナリ・バージョンのソース記述ファイル名には、拡張子 vv (myview.vv など) が使用されます。
次のコード例は、viewc によって生成される COBOL の COPY ファイルを示しています。
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-EXP、DEC-POS、DEC-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 回使用されていることに注目してください。つまり、CARRAY1 と C-CARRAY1 カウント・フィールドに対して 1 回ずつ使用されています。
viewc は、C 言語バージョンのヘッダ・フィルを生成します。このファイルを使用すると、C と COBOL 言語のサービスやクライアント・プログラムを混在させることができます。
関連項目
![]() |
![]() |
![]() |
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|