ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(データベース連携サービス編)
Interstage

J.4.2 サーバアプリケーションのコンパイル・リンク

サーバアプリケーションのソースとスケルトンのコンパイル方法、およびリンク方法について説明します。
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
libOMcblMT.so

CORBAサービスのインストールディレクトリ/lib

CORBAサービスランタイム(注2)

1)スレッドライブラリは必ず結合するライブラリの中で先頭に指定してください。

注2中継用サーバアプリケーションを作成するとき、および、例外を使用するときに必要です。
ただし、Sun日本語COBOLでアプリケーションを作成する場合と、PowerCOBOL97でアプリケーションを作成する場合で、リンクするライブラリが異なります。

注意

リンクは、表の上から順番に行う必要があります。必要なものだけをリンクしてください。


なお、リンカにより結合処理を行う場合、以下のオプションを指定してください。

-dy -G

サーバアプリケーションとスケルトンをコンパイル後、リンクする手順について例を以下に示します。


[コンパイル・リンク手順の例]
PowerCOBOL97の場合
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

サーバアプリケーションとスケルトンをコンパイル後、リンクする手順について例を以下に示します。


[コンパイル・リンク手順の例]
Sun 日本語COBOLの場合
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

PowerCOBOL97の場合
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がリンクされている場合、ワークユニット起動/停止処理またはクライアントとの通信が無応答状態となる可能性があります。その場合、以下の対処を行ってください。

  1. 当該ワークユニット配下で動作しているアプリケーションプロセスのプロセスIDを特定します。

    ps -ef | grep ワークユニット名
  2. 当該ワークユニット配下で動作しているアプリケーションプロセスの強制停止

    kill -9 プロセスID