11.4 32ビットモードから64ビットモードへの移行

ここでは,32ビットモードから64ビットモードへ移行するときの留意事項について説明します。32ビットモードのHiRDBから64ビットモードのHiRDBへ移行する方法については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

また,HiRDBクライアントを32ビットモードから64ビットモードへ移行するには,64ビットモードのHiRDBクライアントをインストールして,環境設定をしてください。HiRDBクライアントの環境設定については,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。

<この節の構成>
(1) 互換性がないファイル
(2) 省略値が変わるオペランド
(3) メモリ所要量の違い
(4) UOCインタフェースの違い
(5) SQL連絡領域の違い
(6) SQL記述領域の違い
(7) SQLのデータ型とC言語のデータ記述の違い
(8) 表分割ハッシュ関数を使用したUAPの作成方法の違い(HP-UX版及びLinux版限定)
(9) 32ビットモード対応のUAPを64ビットモード対応にする手順

(1) 互換性がないファイル

32ビットモードのHiRDBで使用していたファイルは,基本的に64ビットモードのHiRDBで使用できます。ただし,次に示すファイルは互換性がないため,64ビットモードのHiRDBで使用できません。

(2) 省略値が変わるオペランド

HiRDBを32ビットモードから64ビットモードにすると,次の表に示すHiRDBシステム定義のオペランドの省略値が変わります。

表11-5 省略値が変わるオペランド

オペランド名指定項目32ビットモード
での省略値
64ビットモード
での省略値
pd_dbbuff_attributeグローバルバッファが使用する共用メモリを実メモリ上に固定するかどうかの指定fixed(固定する)free(固定しない)
pd_work_buff_size作業表用バッファ長
  • HiRDB/シングルサーバの場合:384
  • HiRDB/パラレルサーバ場合:1024
5120
pd_fes_lck_pool_sizeフロントエンドサーバの排他制御用プールサイズ{(pd_max_users+pd_max_reflect_process_countの値+3)×(pd_max_access_tablesの値+4)}÷ 6{(pd_max_users+pd_max_reflect_process_countの値+3)×(pd_max_access_tablesの値+4)}÷ 4
SHMMAX共用メモリセグメントサイズの上限値200メガバイト1024メガバイト
注※
pd_work_buff_modeオペランドを省略するか又はpoolを指定した場合の省略値です。pd_work_buff_modeオペランドにeachを指定した場合は,省略値は変わりません。

(3) メモリ所要量の違い

HiRDBを32ビットモードから64ビットモードにすると,メモリ所要量が増えます。メモリ所要量の計算方法については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

(4) UOCインタフェースの違い

HiRDBを64ビットモードにすると,データベース作成ユティリティ(pdload)のUOCインタフェースが変わります。したがって,UOCを作成し直す必要があります。UOCインタフェースについては,マニュアル「HiRDB Version 8 コマンドリファレンス」のデータベース作成ユティリティ(pdload)を参照してください。

(5) SQL連絡領域の違い

HiRDBを64ビットモードにすると,SQL連絡領域の構成が変わります。また,次の表に示す連絡領域名の長さが変わります。SQL連絡領域については,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。

表11-6 変更になる連絡領域名

連絡領域名長さ(単位:バイト)
32ビットモード64ビットモード
SQLCA336368
SQLCABC48
SQLCODE48
SQLERRD4×68×6

(6) SQL記述領域の違い

HiRDBを64ビットモードにすると,SQL記述領域の構成が変わります。また,次の表に示す記述領域名の長さとデータ型が変わります。SQL記述領域については,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。

表11-7 変更になる記述領域名

記述領域名32ビットモード64ビットモード
長さ(バイト)データ型長さ(バイト)データ型
SQLDA16+16×n24+24×n
SQLDABC48
SQLVAR16×n24×n
SQLVAR_LOB16×n24×n
SQLLOBLENlongint
SQLDATA48
SQLIND48
SQLLOBIND4long8int
(凡例)
n:記述領域名SQLNに指定したSQLVARの数です。
-:長さ又はデータ型の変更はありません。

(7) SQLのデータ型とC言語のデータ記述の違い

64ビットモード対応のC言語UAPでは,long型のサイズが8バイトのため,longを使用していた埋込み変数はlongの代わりにintを使用します。したがって,次の表に示すC言語のデータ記述が変わります。C言語のデータ記述については,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。

表11-8 変更になるC言語のデータ記述

SQLのデータ型C言語のデータ記述項目の記述備考
INTEGER単純形int 変数名;変数
配列形int 変数名[n];配列1≦n≦4096
BLOB用標識変数int 標識変数名;
SQL文struct{
int len;
char str[n];
}変数名;
構造体
(凡例)
n:長さ(単位:バイト)。
-:記述できません。

(8) 表分割ハッシュ関数を使用したUAPの作成方法の違い(HP-UX版及びLinux版限定)

表分割ハッシュ関数を使用したUAPのコンパイル及びリンケージをするときに指定する共用ライブラリが変わります。表分割ハッシュ関数を使用したUAPの作成方法については,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。

(9) 32ビットモード対応のUAPを64ビットモード対応にする手順

32ビットモード対応のUAPを64ビットモード対応にする手順を次に示します。

  1. 埋込み変数の宣言でlong型を使用している箇所をint型に置き換えます。
  2. UAPのプリプロセスを実行します。このとき,64ビットモード用のポストソースを生成するオプション(-h64)を指定します。
  3. UAPのコンパイルを実行します。このとき,64ビットモード用のオブジェクトを生成するオプションを指定します。
  4. UAPのリンケージを実行します。このとき,リンケージするライブラリに64ビットモードのHiRDBクライアントのライブラリを指定します。