Hitachi

ノンストップデータベース HiRDB Version 10 UAP開発ガイド


8.3.4 複数接続機能を使用する場合のコンパイルとリンケージ

〈この項の構成〉

(1) マルチスレッドの場合

OLTP用でない通常のUAPで複数接続機能を使用する場合の,UAPのコンパイルとリンケージについて説明します。

(a) UNIX環境の場合

複数接続機能使用時にリンケージするライブラリについては,表「コンパイル,及びリンケージをするときに指定するライブラリ(OLTP下でない場合(UNIX環境))」及び表「コンパイル,及びリンケージをするときに指定するライブラリ(OLTP下の場合(UNIX環境))」を参照してください。なお,マルチスレッドを利用するためにリンケージしなければならないライブラリについては,各OSのマニュアルを参照してください。

  • C言語の例

C言語の場合の例を次に示します。なお,下線で示す部分は,HiRDBのインストールディレクトリです。

<例1>HP-UXで,UAPと共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合

    aCC -Ae -mt -I /HiRDB/include sample.c -L/HiRDB/client/lib -lzcltk
<例2>HP-UXで,UAPと64ビットモード用の共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合

    aCC -Ae -mt +DD64 -I /HiRDB/include sample.c -L/HiRDB/client/lib -lzcltk64
<例3>Linuxで,UAPと共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合

    cc -I/HiRDB/include sample.c -D_REENTRANT -L/HiRDB/client/lib/ -lzcltk -lthread
<例4>AIXで,UAPと共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合

    xlc_r -I/HiRDB/include sample.c -L/HiRDB/client/lib/ -lzclt6k
<例5>AIXで,UAPと64ビットモード用の共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合

    xlc_r -I/HiRDB/include sample.c -q64 -L/HiRDB/client/lib/ -lzclt6k64
  • COBOL言語の例

COBOL言語の場合,マルチスレッドに対応したバージョン(03-01以降)のCOBOL85コンパイラが必要となります。

コンパイル時には,-Mtオプション(POSIXスレッドの場合は-Mpも必要)を指定します。-Mtオプションを指定してコンパイルしたオブジェクトと,指定しないでコンパイルしたオブジェクトをリンクすると,動作は保証されません。COBOL言語の場合のコンパイルについては,マニュアル「COBOL85 使用の手引」を参照してください。

COBOL言語の場合の例を次に示します。なお,下線で示す部分は,HiRDBのインストールディレクトリです。

<例1>HP-UXでカーネルスレッドを使用する場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合

    setenv CBLLIB /HiRDB/include
    ccbl -Mt -Mp sample.cbl -L/HiRDB/client/lib/ -lzcltk -lpthread
<例2>Linuxで,POSIXスレッド用のUAPと共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合

    setenv CBLLIB /HiRDB/include
    ccbl -Mt -Mp sample.cbl -L/HiRDB/client/lib/ -lcltk -lpthread
<例3>AIXで,POSIXスレッド用のUAPと共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合

    setenv CBLLIB /HiRDB/include
    ccbl -Mt -Mp sample.cbl -L/HiRDB/client/lib/ -lzclt6k -lpthread

(b) Windows環境の場合

CLTDLL.LIBの代わりに,PDCLTM32.LIBをリンケージします。なお,OLTP下でX/Openに従ったAPIを使用したUAPの場合,PDCLTXM.LIBをリンケージします。

  • C言語の場合

ここでは,Microsoft Visual C++ Version 4.2を前提として説明します。プロジェクトメニューから「設定」を選択して,各項目を設定します。「設定」で設定する項目を次の表に示します。マルチスレッドを利用するときに,リンケージする必要があるライブラリについては,各OSのマニュアルを参照してください。

表8‒28 「設定」で設定する項目

項 目

カテゴリ

カテゴリの設定

設 定 値

コンパイラ

コード生成

構造体メンバのアライメント

8バイト

使用するランタイムライブラリ

マルチスレッドDLL

プリプロセサ

インクルードファイルのパス

\HIRDB\INCLUDE

リンカ

インプット

ライブラリ

\HIRDB\LIB\PDCLTM32.LIB

注 下線で示す部分は,HiRDBのインストールディレクトリを指定してください。

  • COBOL言語の場合

COBOL言語の場合,マルチスレッドに対応したバージョンのCOBOL85コンパイラが必要となります。ここでは,COBOL85 Version 5.0を前提に説明します。

コンパイル時には,コンパイラオプションダイアログボックスで-Mtオプションを指定します。-Mtオプションを指定してコンパイルしたオブジェクトと,指定しないでコンパイルしたオブジェクトをリンクすると,動作は保証されません。COBOL言語の場合のコンパイルについては,マニュアル「COBOL85 操作ガイド」を参照してください。

「オプション」メニューで設定する項目を次の表に示します。

表8‒29 「オプション」メニューで設定する項目

サブメニュー

ダイアログ

設定項目

設定値

コンパイラ

COBOL85コンパイラオプション

COBOL85コンパイラオプション

-Mtの項目をチェック

環境変数設定

CBLLIB=C:\HIRDB\INCLUDE

リンカ

リンカオプションの設定

インポート/ユーザ指定ライブラリ

C:\HIRDB\LIB\PDCLTM32

注 下線で示す部分は,HiRDBのインストールディレクトリを指定してください。

(2) シングルスレッドの場合

シングルスレッドのUAPで複数接続機能を使用する場合の,コンパイルとリンケージの方法について説明します。なお,ここではHP-UXを例に説明します。

(a) HP-UX版でのコンパイルとリンケージ

  • C言語の例

C言語の場合の例を次に示します。なお,下線で示す部分は,HiRDBのインストールディレクトリです。

<例1>(共用ライブラリの場合)
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合

    aCC -Ae -I /HiRDB/include sample.c -L/HiRDB/client/lib -lzclts