COBOL2002 使用の手引 手引編


18.6.2 共用ライブラリに含まれるプログラムの呼び出し方法

共用ライブラリに含まれるプログラムの呼び出しには,静的なリンクによる呼び出しと,動的なリンクによる呼び出しの二つの方法があります。

〈この項の構成〉

(1) 静的なリンク

呼び出し元プログラムのリンク時に共用ライブラリを指定して,呼び出し先プログラム名を解決する方法です。この場合,実行可能ファイルがロードされるときに,共用ライブラリもロードされます。

共用ライブラリを静的にリンクするには,呼び出し元プログラムから定数指定のCALL文で,呼び出し先プログラムの共用ライブラリを呼び出します。

プログラム実行時,リンク時に指定した検索パスに共用ライブラリがないと,プロセス起動エラーとなります。

UNIXの場合,-DynamicLink,Callオプションを指定していない定数指定のCALL文を実行することで,静的なリンクによって呼び出しを行います。

(例)

副プログラムを含む共用ライブラリがCALL '定数'で呼ばれ,実行可能ファイルの作成時に共用ライブラリを指定してリンクした場合,静的なリンクでの呼び出しとなります。

[図データ]

(3) 注意事項

(4) プログラムのデバッグ

実行可能ファイルに静的にリンクしたCOBOLプログラムと同様に,動的にリンクした共用ライブラリについてもテストデバッガを使用したデバッグができます。

(5) 動的なリンクを使用するプログラム作成時の注意事項

プログラムの作成時には次のような注意が必要になります。

プログラムの作成方法については,「34 実行可能ファイルと共用ライブラリの作成」を参照してください。

(6) 動的なリンクを使用する場合の注意事項

動的なリンクでは,独自に共用ライブラリのロードやアンロードを管理しています。そのため,プログラムの実行中に,共用ライブラリのロードやアンロードに関連するシステム関数(dlopen,dlclose)を,ユーザプログラムから呼び出してはなりません。