26.2.2 マルチスレッド対応COBOLプログラムのリンク

マルチスレッド対応COBOLプログラムは,ccbl2002コマンド,またはcc/ldコマンドでリンクします。

リンク時には,システムごとのスレッド制御方式に対応したスレッド関数ライブラリを指定する必要があります。また,cc/ldコマンドを使用してリンクするときは,さらに,COBOL2002スレッド関数インタフェースライブラリを指定する必要があります。

なお,cc/ldコマンドを使用して実行可能ファイルを生成する方法については,「34.1.5 ccコマンドおよびldコマンドの-lオプション」を参照してください。

<この項の構成>
(1) マルチスレッド対応COBOLプログラムのリンク時に指定するライブラリ
(2) リンク方法
(3) 注意事項

(1) マルチスレッド対応COBOLプログラムのリンク時に指定するライブラリ

マルチスレッド対応COBOLプログラムで使用するスレッド関数ライブラリとCOBOL2002スレッド関数インタフェースライブラリとの対応を次に示します。

使用できるOSスレッド関数ライブラリCOBOL2002スレッド関数
インタフェースライブラリ
HP-UX(IPF)
HP-UX(IPF64)
libpthread.solibcbl2kkn.so
AIX(32)libpthreads.alibcbl2kmp.a
AIX(64)libpthreads.alibcbl2kmp64.a
Solaris(SPARC)libpthread.solibcbl2kmp.so
Linuxlibpthread.solibcbl2kmp.so

(2) リンク方法

(a) HP-UX(IPF)の場合

HP-UX(IPF)の場合,スレッド関数ライブラリにはlibpthread.soを,COBOL2002スレッド関数インタフェースライブラリにはlibcbl2kkn.soを使用します。指定するオプション,および指定例を次に示します。

ccbl2002コマンドを使用する場合
-MultiThread,-lpthreadオプションを指定します。
(例)

ccbl2002 -MultiThread cmain.o SUBCBL.o -lpthread

cc/ldコマンドを使用する場合
-lcbl2kkn,-lpthreadオプションを指定します。
(例)

cc cmain.o SUBCBL.o -L/opt/HILNGcbl2k/lib -lcbl2k
  -lcbl2kml -lcbl2kkn -lpthread -lm

(b) HP-UX(IPF64)の場合

HP-UX(IPF64)の場合,スレッド関数ライブラリにはlibpthread.soを,COBOL2002スレッド関数インタフェースライブラリにはlibcbl2kkn.soを使用します。指定するオプション,および指定例を次に示します。

ccbl2002コマンドを使用する場合
-MultiThread,-lpthreadオプションを指定します。
(例)

ccbl2002 -MultiThread cmain.o SUBCBL.o -lpthread

cc/ldコマンドを使用する場合
-lcbl2kkn,-lpthreadオプションを指定します。
(例)

cc cmain.o SUBCBL.o +DD64 -L/opt/HILNGcbl2k64/lib -lcbl2k
  -lcbl2kml -lcbl2kkn -lpthread -lm

(c) AIX(32)の場合

AIX(32)の場合,スレッド関数ライブラリにはlibpthreads.aを,COBOL2002スレッド関数インタフェースライブラリにはlibcbl2kmp.aを使用します。指定するオプション,および指定例を次に示します。

ccbl2002コマンドを使用する場合
-MultiThread,-lpthreadsオプションを指定します。
(例)

ccbl2002 -MultiThread  cmain.o SUBCBL.o -lpthreads

cc/ldコマンドを使用する場合
-lcbl2kmp,-lpthreadsオプションを指定します。
(例)

cc cmain.o SUBCBL.o -L/opt/HILNGcbl2k/lib -lcbl2k
  -lcbl2kml -lcbl2kmp -lpthreads -lm

(d) AIX(64)の場合

AIX(64)の場合,スレッド関数ライブラリにはlibpthreads.aを,COBOL2002スレッド関数インタフェースライブラリにはlibcbl2kmp64.aを使用します。指定するオプション,および指定例を次に示します。

ccbl2002コマンドを使用する場合
-MultiThread,-lpthreadsオプションを指定します。
(例)

ccbl2002 -MultiThread  cmain.o SUBCBL.o -lpthreads

cc/ldコマンドを使用する場合
-lcbl2kmp64,-lpthreadsオプションを指定します。
(例)

cc cmain.o SUBCBL.o -q64 -L/opt/HILNGcbl2k64/lib -lcbl2k64
  -lcbl2kml64 -lcbl2kmp64 -lpthreads -lm

(e) Solaris(SPARC)の場合

Solaris(SPARC)の場合,スレッド関数ライブラリにはlibpthread.soを,COBOL2002スレッド関数インタフェースライブラリにはlibcbl2kmp.soを使用します。指定するオプション,および指定例を次に示します。

ccbl2002コマンドを使用する場合
-MultiThread,-lpthreadオプションを指定します。
(例)

ccbl2002 -MultiThread  cmain.o SUBCBL.o -lpthread

cc/ldコマンドを使用する場合
-lcbl2kmp,-lpthreadオプションを指定します。
(例)

cc cmain.o SUBCBL.o -L/opt/HILNGcbl2k/lib -lcbl2k
  -lcbl2kml -lcbl2kmp -lpthread -lm

(f) Linuxの場合

Linuxの場合,スレッド関数ライブラリにはlibpthread.soを,COBOL2002スレッド関数インタフェースライブラリにはlibcbl2kmp.soを使用します。指定するオプション,および指定例を次に示します。

ccbl2002コマンドを使用する場合
-MultiThread,-lpthreadオプションを指定します。
(例)Linux(x86),Linux(x64)の場合

ccbl2002 -MultiThread -UniObjGen cmain.o SUBCBL.o -lpthread

(例)Linux(IPF64)の場合

ccbl2002 -MultiThread cmain.o SUBCBL.o -lpthread

cc/ldコマンドを使用する場合
-lcbl2kmp,-lpthreadオプションを指定します。
(例)Linux(x86),Linux(IPF64)の場合

cc cmain.o SUBCBL.o -L/opt/HILNGcbl2k/lib -lcbl2k
  -lcbl2kml -lcbl2kmp -lpthread -lm

(例)Linux(x64)の場合

cc cmain.o SUBCBL.o -L/opt/HILNGcbl2k64/lib -lcbl2k
  -lcbl2kml -lcbl2kmp -lpthread -lm

(3) 注意事項