スケーラブルデータベースサーバ HiRDB Version 8 解説(Windows(R)用)

[目次][用語][索引][前へ][次へ]

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) 32ビットモード対応のUAPを64ビットモード対応にする手順

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

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

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

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

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

オペランド名 指定項目 32ビットモード
での省略値
64ビットモード
での省略値
pd_work_buff_size 作業表用バッファ長
  • HiRDB/シングルサーバの場合:384
  • HiRDB/パラレルサーバ場合:1024
5120
pd_fes_lck_pool_size フロントエンドサーバの排他制御用プールサイズ {(pd_max_usersの値+3)×(pd_max_access_tablesの値+4)}÷ 6 {(pd_max_usersの値+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ビットモード
SQLCA 336 368
SQLCABC 4 8
SQLCODE 4 8
SQLERRD 4×6 8×6

(6) SQL記述領域の違い

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

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

記述領域名 32ビットモード 64ビットモード
長さ(バイト) データ型 長さ(バイト) データ型
SQLDA 16+16×n 24+24×n
SQLDABC 4 8
SQLVAR 16×n 24×n
SQLVAR_LOB 16×n 24×n
SQLLOBLEN long int
SQLDATA 4 8
SQLIND 4 8
SQLLOBIND 4 long 8 int

(凡例)
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) 32ビットモード対応のUAPを64ビットモード対応にする手順

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

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