COMMAND EXECUTE(UAPからのコマンド実行)
機能
UAP中から,HiRDBのコマンド,及びOSのコマンドを実行します。
COMMAND EXECUTEを実行する場合,HiRDBサーバにHiRDB Control Manager - Agentをインストールしておく必要があります。これは,HiRDB Control Manager - Agentがコマンドを実行するためです。
形式
COMMAND EXECUTE :コマンドライン変数, |
オペランド
コマンドライン変数には,HiRDBサーバで実行するコマンドのコマンドラインを設定します。
CHAR型(領域長30,000バイト以内)として宣言した埋込み変数を指定してください。また,コマンドラインの最後には,必ずナル文字を指定してください。
既定文字集合以外の文字集合は指定できません。
コマンドライン変数に複数のコマンドは指定しないでください。指定した場合,動作は保証されません。
リターンコード受け取り変数には,COMMAND EXECUTE実行時のリターンコードが設定されます。INT型として宣言した埋込み変数を指定してください。
リターンコード受け取り変数には,次の値が設定されます。なお,エラーの場合には,実行結果受け取り変数に詳細情報が設定されます。
実行結果受け取り領域長変数には,実行結果受け取り変数の領域長を設定します。INT型として宣言した埋込み変数を指定してください。
実行結果受け取り領域長は,2ギガバイト以内で設定してください。
実行結果長受け取り変数には,実行結果受け取り変数への出力長が設定されます。INT型として宣言した埋込み変数を指定してください。
実行結果受け取り変数には,実行結果受け取り用に確保した領域のアドレスを設定します。PDOUTBUF型として宣言した埋込み変数を指定してください。
COMMAND EXECUTE実行後,実行結果受け取り変数には,次の値が設定されます。ただし,(実行結果受け取り領域長変数の指定値-1)以降のデータは切り捨てられます。また,実行結果の最後には,1バイトのナル文字が設定されます。
実行コマンドリターンコード受け取り変数には,HiRDBサーバで実行したコマンドラインのリターンコードが設定されます。INT型として宣言した埋込み変数を指定してください。
COMMAND EXECUTEが正常終了(リターンコード受け取り変数にp_rdb_RC_NORMが設定されている場合)したときだけ,実行コマンドリターンコード受け取り変数に有効な値が設定されます。
なお,実行したコマンドが標準出力又は標準エラー出力に情報を出力しない場合は,実行コマンドリターンコード受け取り変数には0が設定されます。
環境変数グループ名変数には,次の値を指定します。
CHAR型(領域長256バイト以内)として宣言した埋込み変数を指定してください。
既定文字集合以外の文字集合は指定できません。
環境変数グループを使用しない場合は,1バイト目にナル文字を設定してください。
環境変数グループについては,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。
共通規則
留意事項
使用例
UAP中から,pdlsコマンドを実行します。なお,HiRDB/シングルサーバで実行しているものとします。
EXEC SQL BEGIN DECLARE SECTION;
char CmdLine[30000];
int ReturnCode;
int OutBufLen;
int OutDataLen;
int DataLength;
PDOUTBUF OutBuf ;
int CmdRetCode;
char EnvGroup[256];
EXEC SQL END DECLARE SECTION;
strcpy(CmdLine,"c:¥HiRDB_S¥bin¥pdls -d trn");
OutBuf = malloc(30000) ;
OutBufLen = 30000 ;
EnvGroup[0] = '¥0';
EXEC SQL COMMAND EXECUTE :CmdLine,
:ReturnCode,
:OutBufLen,
:DataLength,
:OutBuf,
:CmdRetCode,
:EnvGroup ;
if (ReturnCode == p_rdb_RC_NORM)
{
if (CmdRetCode == 0)
{
printf("%s実行成功¥n",CmdLine) ;
printf("実行結果:%s¥n",OutBuf) ;
}
else
{
printf("%s実行失敗¥n",CmdLine) ;
printf("実行結果:%s¥n",OutBuf) ;
}
}
else
{
printf("ReturnCode=%d¥n",ReturnCode) ;
printf("エラー詳細情報:%s¥n",OutBuf) ;
}