BEA Logo BEA Tuxedo Release 8.0

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

 

   Tuxedo ホーム   |   COBOL を使用した BEA Tuxedo アプリケーションのプログラミング   |   先頭へ   |   前へ   |   次へ   |   目次

 


VIEW 型レコード

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

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

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

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

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

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

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 レコードのフィールドを示しています。

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 値は ‘\0’ になります。STRING 型と CARRAY 型の場合、デフォルトの LOW-VALUE 値は " " になります。

エスケープ文字として使用されている定数も、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 フィールドを格納するときの文字数を示す長さエレメントが定義されています。

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 コマンドでは、次が出力されます。

次のコード例は、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-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 言語のサービスやクライアント・プログラムを混在させることができます。

関連項目

 

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