サーバアプリケーションのソースとスケルトンのコンパイル方法、およびリンク方法について説明します。
COBOLでアプリケーションを作成した場合について、コンパイルとリンクの手順の流れを以下に示します。
■Windows(R)の場合
サーバアプリケーションは、APMと動的に結合します。このため、サーバアプリケーションは共用ライブラリとし、動的結合ができる状態にしておく必要があります。この共用ライブラリには、サーバアプリケーションが使用するライブラリを結合してください。データベース管理システムのライブラリ以外で、サーバアプリケーションのリンク時に指定するライブラリを以下に示します。
ライブラリ名 | 格納場所 | 用途 |
---|---|---|
f3fmalcapi.lib | C:\Interstage\td\lib | コンポーネントトランザクションサービスランタイム(必須) |
libextpapiskl.lib | C:\Interstage\extp\lib | コンポーネントトランザクションサービスランタイム(必須) |
odcobcbl.lib | C:\Interstage\odwin\lib | CORBAサービスランタイム(注) |
注)中継用サーバアプリケーションを作成するときに必要です。
サーバアプリケーションとスケルトンをPowerCOBOL97でコンパイル後、リンクする場合のオプションの例を以下に示します。
PowerCOBOL97でコンパイルする場合は、以下の表に示すコンパイルオプションを設定してください。
項目 | 設定値 |
---|---|
登録集名 | CORBA="C:\Interstage\odwin\include\cobol" |
SSOUT | 任意の文字列(注) |
注)サーバアプリケーションでDISPLAY文を使用している場合に必要です。
また、ワークユニット定義の環境変数ステートメントに、「任意の文字列」を環境変数として、DISPLAY文を出力するファイル名を指定します。指定されたファイルは、ワークユニット定義のカレントフォルダステートメントで指定されたフォルダ配下の「ワークユニット名\プロセスID」フォルダ配下に出力されます。以下に設定方法を示します。
Environment Variable: 任意の文字列=ファイル名
■Solarisの場合
注意
スレッドライブラリ(libthread.so)は、スレッドモードで作成する場合にのみ必要です。
サーバアプリケーションは、APMと動的に結合します。このため、サーバアプリケーションは共用ライブラリとし、動的結合ができる状態にしておく必要があります。この共用ライブラリには、サーバアプリケーションが使用するライブラリを結合してください。データベース管理システムのライブラリ以外で、サーバアプリケーションのリンク時に指定するライブラリを以下に示します。
スレッドモードのアプリケーションのコンパイルとリンク
ライブラリ名 | 格納場所 | 用途 |
---|---|---|
libthread.so | /usr/lib | スレッドライブラリ(必須) (注1) |
libtdalcapi.so | コンポーネントトランザクションサービスのインストールディレクトリ/lib | コンポーネントトランザクションサービス ランタイム(必須) |
libextpapiskl.so | EXTPのインストールディレクトリ/lib | コンポーネントトランザクションサービス ランタイム(必須) |
librcobol.so | COBOLのインストールディレクトリ/lib | COBOL ランタイム(必須) |
libOMcbl.so | CORBAサービスのインストールディレクトリ/lib | CORBAサービスランタイム(注2) |
注1)スレッドライブラリは必ず結合するライブラリの中で先頭に指定してください。
注2)中継用サーバアプリケーションを作成するとき、および、例外を使用するときに必要です。
ただし、Sun日本語COBOLでアプリケーションを作成する場合と、PowerCOBOL97でアプリケーションを作成する場合で、リンクするライブラリが異なります。
Sun日本語COBOLでサーバアプリケーションを作成する場合には、libOMcbl.soをリンクしてください
PowerCOBOL97でサーバアプリケーションを作成する場合には、libOMcblMT.soをリンクしてください
注意
リンクは、表の上から順番に行う必要があります。必要なものだけをリンクしてください。
なお、リンカにより結合処理を行う場合、以下のオプションを指定してください。
-dy -G
サーバアプリケーションとスケルトンをコンパイル後、リンクする手順について例を以下に示します。
CORBA=/opt/FSUNod/include/COBOL export CORBA cobol -c tdsample1_s.cbl cobol -c TD_TDSAMPLE1_INTF_skel.cbl cobol -G -dy -Tm -o libtdsample1.so -lthread -L/opt/FSUNtd/lib -ltdalcapi \ -L/opt/FSUNextp/lib -lextpapiskl tdsample1_s.o TD_TDSAMPLE1_INTF_skel.o
\:継続行
注意
PowerCOBOL97でアプリケーションを作成する場合は、以下について注意してください。
リンクオプションに-Tmオプションを指定してください。また、ソースのコンパイルとリンクは分けて実施し、リンク時のオプションにのみ-Tmオプションを指定してください。
リンクオプションに-Tmオプションを指定することで、自動的にlibrcobol.soをリンクします。このため、リンクライブラリにlibrcobol.soを指定する必要はありません。
プロセスモードのアプリケーションのコンパイルとリンク
サーバアプリケーションのリンク時に指定するライブラリを以下に示します。
ライブラリ名 | 格納場所 | 用途 |
---|---|---|
libtdalcapi_nt.so | TDのインストールディレクトリ/lib | TD ランタイム(必須) |
libextpapiskl_nt.so | EXTPのインストールディレクトリ/lib | TD ランタイム(必須) |
libcobol.so | COBOLのインストールディレクトリ/lib | COBOL ランタイム(必須) |
libOMcbl.so | ODのインストールディレクトリ/lib | ODランタイム(注) |
注)中継用サーバアプリケーションを作成するとき、および、例外を使用するときに必要です。
注意
リンクは、表の上から順番に行う必要があります。必要なものだけをリンクしてください。
なお、リンカにより結合処理を行う場合、以下のオプションを指定してください。
-dy -G
サーバアプリケーションとスケルトンをコンパイル後、リンクする手順について例を以下に示します。
cobol -c TD_TDSAMPLE1_INTF_skel.cbl cobol -G -o libtdsample1.so -L/opt/FSUNtd/lib -ltdalcapi_nt \ -L/opt/FSUNextp/lib -lextpapiskl_nt -L/opt/FJSVCOBop/lib -lcobol tdsample1_s.o \ TD_TDSAMPLE1_INTF_skel.o
cobol -c TD_TDSAMPLE1_INTF_skel.cbl cobol -G -o libtdsample1.so -L/opt/FSUNtd/lib -ltdalcapi_nt \ -L/opt/FSUNextp/lib -lextpapiskl_nt tdsample1_s.o TD_TDSAMPLE1_INTF_skel.o
\:継続行
注意
作成したアプリケーションライブラリにスレッドライブラリが結合されていないことを確認してください。
アプリケーションのコンパイル/リンクの手順に誤りがあった場合や、libthread.soがリンクされている場合、ワークユニット起動/停止処理またはクライアントとの通信が無応答状態となる可能性があります。その場合、以下の対処を行ってください。
当該ワークユニット配下で動作しているアプリケーションプロセスのプロセスIDを特定します。
ps -ef | grep ワークユニット名
当該ワークユニット配下で動作しているアプリケーションプロセスの強制停止
kill -9 プロセスID