Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option 使用の手引


6.8.4 COBOL言語を使用する場合の設定

TP1/EEでCOBOL言語によって作成したUAPを使用する場合に設定する必要のある項目や,UAPの作成方法について説明します。

なお,OSがLinux (IA32)の場合,COBOL製品として使用できるのはCOBOL85だけです。また,OSがLinux (EM64T)の場合,COBOL製品として使用できるのはCOBOL2002だけです。

〈この項の構成〉

(1) システム定義

システム定義を次のように指定します。

(2) 環境変数

プロセス関連定義のcobol_use_flagオペランドにYを指定した場合,次の環境変数で指定したCOBOLファイル名の終端にIFA番号が付加されます。

スレッドダウンが発生してスレッドを消滅させたあとにスレッドを再起動する場合,IFA番号は前回のスレッドから引き継がれます。そのため,スレッドの再起動後も,スレッドの再起動前と同じファイルに出力されます。

なお,DISPLAY文で環境変数を指定した場合は,ファイル名の終端にIFA番号が付加されません。また,プロセス関連定義のcobol_use_flagオペランドにNを指定した場合,COBOLファイル名はCOBOL言語の仕様に従います。

(3) COBOL言語によるUAP作成方法

COBOL言語でUAPを作成する方法について説明します。

(a) コンパイルとリンケージ

■ コンパイル

TP1/EEで使用するCOBOLプログラムをマルチスレッド対応にするためには,次に示すマルチスレッド用のコンパイラオプションを指定します。

  • COBOL85の場合:-Mtおよび-Mp

  • COBOL2002の場合:-MultiThread

■ リンケージ

AIXでPOSIXスレッドを使用する場合,スレッド関数ライブラリはlibpthreads.aを使用します。また,次に示すCOBOLスレッド関数インタフェースライブラリを使用します。

  • COBOL85の場合:libcbl85mp.a

  • COBOL2002の場合:libcbl2kmp.a

ccblコマンドを使用する場合およびcc/ldコマンドを使用する場合のリンケージ例を次に示します。

• ccblコマンドを使用する場合
COBOL85の場合

-Mt,-Mp,-lpthreadsオプションを指定します。

ccbl -Mt -Mp cmain.o SUBCBL.o -lpthreads
COBOL2002の場合

-MultiThreadオプションを指定します。

ccbl2002 -MultiThread cmain.o SUBCBL.o -lpthreads
• cc/ldコマンドを使用する場合
COBOL85の場合

-lcbl85mp,-lpthreadsオプションを指定します。

cc cmain.o SUBCBL.o -lcbl85 -lcbl85ml -lcbl85mp -lpthreads -lXm -lm
COBOL2002の場合

-lcbl2kmp,-lpthreadsオプションを指定します。

cc cmain.o SUBCBL.o -lcbl2k -lcbl2kml -lcbl2kmp -lpthreads -lXm -lm

なお,整列併合機能や索引ファイルを使用する場合には,それぞれのマルチスレッド用ライブラリを指定する必要があります。整列併合機能や索引ファイルで使用するマルチスレッド用ライブラリについては,COBOL85の場合はマニュアル「COBOL85 使用の手引」を,COBOL2002の場合はマニュアル「COBOL2002 使用の手引 手引編」を参照してください。

また,cc/ldコマンドによるリンケージで,システムのスレッドライブラリを指定するときは,ほかのシステムライブラリとの指定順序に制約がある場合があります。詳細については,システムリファレンスでご確認ください。

(4) 注意事項