サーバアプリケーションのソースとスケルトンのコンパイル方法、およびリンク方法について説明します。
COBOLでアプリケーションを作成した場合について、コンパイルとリンクの手順の流れを以下に示します。
サーバアプリケーションは、APMと動的に結合します。このため、サーバアプリケーションは共用ライブラリとし、動的結合を可能とする構造(ダイナミックリンクライブラリ)としなければならず、動的リンク構造の実行可能プログラムとします。動的プログラム構造とすることはできません。この共用ライブラリには、サーバアプリケーションが使用するライブラリを結合してください。データベース管理システムのライブラリ以外で、サーバアプリケーションのリンク時に指定するライブラリを以下に示します。
ライブラリ名 | 格納場所 | 用途 |
---|---|---|
f3fmalcapi.lib | INTERSTAGEインストールフォルダ\td\lib | コンポーネントトランザクションサービスランタイム(必須) |
libextpapiskl.lib | INTERSTAGEインストールフォルダ\extp\lib | コンポーネントトランザクションサービスランタイム(必須) |
odcobcbl.lib | INTERSTAGEインストールフォルダ\odwin\lib | CORBAサービスランタイム(注) |
(注):
中継用サーバアプリケーションを作成するとき、および、例外を使用するときに必要です。
サーバアプリケーションとスケルトンをコンパイル後、リンクする場合のオプションの例を以下に示します。
以下の表に示すコンパイルオプションを設定してください。
項目 | 設定値 |
---|---|
登録集名 | CORBA="INTERSTAGEインストールフォルダ\odwin\include\cobol" |
SSOUT | 任意の文字列(注) |
(注)
サーバアプリケーションでDISPLAY文を使用している場合に必要です。また、ワークユニット定義の環境変数ステートメントに、“任意の文字列”を環境変数として、DISPLAY文を出力するファイル名を指定します。指定されたファイルは、ワークユニット定義のカレントフォルダステートメントで指定されたフォルダ配下の“ワークユニット名\プロセスID”フォルダ配下に出力されます。以下に設定方法を示します。
Environment Variable: 任意の文字列=ファイル名
リンク時の注意事項
サーバアプリケーションのリンク時には、上記のライブラリの他に、データベースや連携する他製品のライブラリなど、サーバアプリケーションで必要なライブラリがすべてリンクされていることを確認してください。また、リンクしたライブラリの格納先をワークユニット定義のアプリケーション使用パス(Path for Applicationセクション)に設定してください。
リンクが完全でない場合やワークユニット定義のアプリケーション使用パスが完全でない場合は、ワークユニット起動処理において実行ファイルのオープン処理に失敗し、メッセージ(EXTP4640,EXTP4643,EXTP4645,EXTP4508)が出力されます。
以下に必要なワークユニット定義の設定例を示します。
ワークユニット定義の設定例
サーバアプリケーションの実行ファイルが“application1.dll”、格納先がc:\application\bin、サーバアプリケーションにリンクされているライブラリの格納先が、それぞれ、“d:\product1\bin”、“e:\product2\bin”の場合の定義例を以下に示します。
[WORK UNIT] Name: SAMPLEWU Kind: ORB [APM] Name: TDNORM [Control Option] … Path: c:\application\bin Path for Application: d:\product1\bin Path for Application: e:\product2\bin … [Application Program] … Executable File: application1.dll |
サーバアプリケーションにリンクされているライブラリの格納先が複数存在する場合は、アプリケーション使用パス(Path for Applicationセクション)を複数設定してください。
また、出口プログラムにリンクされているライブラリの格納先についても、同様にアプリケーション使用パス(Path for Applicationセクション)に設定してください。
スレッドライブラリ(libthread.so)は、スレッドモードで作成する場合のみ必要です。
サーバアプリケーションは、APMと動的に結合します。このため、サーバアプリケーションは共用ライブラリとし、動的結合を可能とする構造(ダイナミックリンクライブラリ)としなければならず、動的リンク構造の実行可能プログラムとします。動的プログラム構造とすることはできません。この共用ライブラリには、サーバアプリケーションが使用するライブラリを結合してください。データベース管理システムのライブラリ以外で、サーバアプリケーションのリンク時に指定するライブラリを以降に示します。
APMの再作成
コード変換用関数などのように、ユーザアプリケーションから呼び出されているシンボルが、ユーザがアプリケーションにリンクしたライブラリとlibc.soなどのシステムライブラリとの両方に格納されているとき、ユーザアプリケーションを実行すると、無条件にlibc.soなどのシステムライブラリに格納されたシンボルが呼び出されます。これは、APM実行モジュールの先頭にlibc.soなどのシステムライブラリが結合されているためです。この場合、ユーザアプリケーションに結合されたライブラリのシンボルを呼び出すためには、APM実行モジュールの先頭にユーザアプリケーションが使用するライブラリを結合する必要があります。
APM実行モジュールの先頭にユーザアプリケーションが使用するライブラリを結合するためには、tdlinknormapmコマンドを使用し、APMを再作成してください。tdlinknormapmコマンドの使用方法については“リファレンスマニュアル(コマンド編)”を参照してください。