12.2.1 HiRDB/シングルサーバの場合
データロード(データベース作成ユティリティ)を実行するUAPを例にして説明します。
HiRDB/シングルサーバの場合のサーバ,クライアント構成例を次の図に示します。
|
|
図「HiRDB/シングルサーバの場合のサーバ,クライアント構成例」のようなサーバ,クライアント構成で,データロードをするUAPを実行する場合,事前に次の設定をしておきます。
-
次のクライアント環境定義を設定します。
- PDSYSTEMID:
-
HiRDBサーバのHiRDB識別子(HRD1)を設定します。
- PDASTHOST:
-
HiRDB Control Manager - Agentのホスト名(HOST1)を設定します。
- PDASTPORT:
-
HiRDB Control Manager - Agentのポート番号(22201)を設定します。
-
HiRDBサーバ側に,データロードで必要となる制御情報ファイル,及び入力データファイルを用意します。
-
HiRDB管理者がUSERA(パスワードUSERA)で,データロードをする表の所有者がUSERB(パスワードUSERB)であったとします。この場合,次のクライアント環境定義を設定します。
PDASTUSER=USERA/USERA PDUSER=USERB/USERB
これで,データロードをするUAPを実行できるようになります。なお,各クライアント環境定義については,「クライアント環境定義の設定内容」を参照してください。
データロードを実行するUAPの例を次に示します。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
EXEC SQL BEGIN DECLARE SECTION;
char CmdLine[30000]; /* CmdLine変数 */
long ReturnCode; /* リターンコード受取変数 */
long OutBufLen; /* 実行結果受取領域長 */
long CmdRetCode; /* 実行コマンドリターンコード
受取変数 */
long OutDataLen; /* 実行結果長受取変数 */
PDOUTBUF OutBuf; /* 実行結果受取領域 */
char EnvGroup[256]; /* 環境変数グループ名変数 */
EXEC SQL END DECLARE SECTION;
void main()
{
strcpy(CmdLine,"pdhold -r RDDATA10"); /* 実行コマンドライン
(RDエリア閉塞)設定 */
OutBuf = malloc(30000); /* 実行結果受取領域確保 */
if (OutBuf == NULL){ /* メモリ確保失敗 */
printf("メモリ確保失敗\n");
return ;
}
OutBufLen = 30000 ; /* 実行結果受取領域長設定 */
EnvGroup[0] = '\0' ; /* 環境変数グループ設定なし */
/* コマンド実行 */
EXEC SQL COMMAND EXECUTE :CmdLine, :ReturnCode, :OutBufLen,
:OutDataLen, :OutBuf, :CmdRetCode, :EnvGroup ;
if (ReturnCode == p_rdb_RC_NORM) { /* COMMAND EXECUTE正常終了 */
if (CmdRetCode==0) { /* 実行コマンド正常 */
/* 実行コマンドライン(データロード実行)設定 */
strcpy(CmdLine,"pdload -i c -be ZAIKO c:\HiRDB_S\conf\LOAD");
EXEC SQL COMMAND EXECUTE :CmdLine, :ReturnCode, :OutBufLen,
:OutDataLen, :OutBuf, :CmdRetCode, :EnvGroup ;
if (ReturnCode == p_rdb_RC_NORM) { /* COMMAND EXECUTE正常終了 */
if (CmdRetCode==0) { /* 実行コマンド正常 */
printf("pdload command successfully\n");
printf("%s\n", OutBuf);
} else { /* 実行コマンドエラー */
printf("pdload command Error,Code = %d\n", CmdRetCode);
printf("%s\n", OutBuf);
}
} else { /* COMMAND EXECUTEエラー */
printf("COMMAND EXECUTE Error,Code = %d\n", ReturnCode);
printf("%s\n", OutBuf);
}
} else { /* 実行コマンドエラー */
printf("pdhold command Error,Code = %d\n", CmdRetCode);
printf("%s\n", OutBuf);
}
strcpy(CmdLine,"pdrels -r RDDATA10"); /* 実行コマンドライン
(RDエリア閉塞解除)設定 */
EXEC SQL COMMAND EXECUTE :CmdLine, :ReturnCode, :OutBufLen,
:OutDataLen, :OutBuf, :CmdRetCode, :EnvGroup ;
if (ReturnCode == p_rdb_RC_NORM) { /* COMMAND EXECUTE正常終了 */
if (CmdRetCode!=0) { /* 実行コマンドエラー */
printf("pdrels command Error,Code = %d\n", CmdRetCode);
printf("%s\n", OutBuf);
}
} else { /* COMMAND EXECUTEエラー */
printf("COMMAND EXECUTE Error,Code = %d\n", ReturnCode);
printf("%s\n", OutBuf);
}
} else { /* COMMAND EXECUTEエラー */
printf("COMMAND EXECUTE Error,Code = %d\n", ReturnCode);
printf("%s\n", OutBuf);
}
return ;
}