Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引


ee_adm_call_command

〈このページの構成〉

名称

運用コマンドの実行

形式

ANSI C,C++の形式

#include <eeadm.h>
int  ee_adm_call_command(char *com, int *stat, char *outmsg, 
                         EEULONG *outsiz, char **errmsg, 
                         EEULONG *errsiz, EELONG time, 
                         EELONG flags)

機能

オンライン中にコマンドを入力したときと同様に,UAPからコマンドを実行します。コマンドの処理が完了するまで待って,コマンドの実行結果を戻します。コマンドの処理が終了すると,標準出力情報と標準エラー出力情報が返ります。

コマンドの実行形式ファイルを格納したディレクトリをサーチパスに追加しておいてください。

UAPで値を設定する引数

●com

実行する運用コマンドの文字列を設定します。指定できる文字列の最大長は2048バイトです(末尾のNULL文字を含む)。

●outmsg

コマンドの実行結果として標準出力に出力する文字列を受け取る領域の先頭ポインタを設定します。事前にこのアドレスから,(outsizの値+errsizの値)分の領域を確保しておいてください(単位:バイト)。出力結果を受け取る必要がない場合でも,この長さの領域を確保してください。

●outsiz

コマンドの実行結果として標準出力に出力する文字列(outmsgに返される値)を受け取る長さを設定します(単位:バイト)。指定できる値は1〜32768です。設定する長さには出力結果の末尾のNULL文字分も含まれます。

この引数の値は,UAPから実行するコマンドに応じて決めてください。出力結果を受け取る必要がない場合は,1を設定してください。

処理終了後は,コマンドの実行結果として標準出力に出力した実際の文字列の長さが返されます。

●errsiz

コマンドの実行結果として標準エラー出力に出力する文字列(errmsgに返される値)を受け取る長さを設定します(単位:バイト)。指定できる値は13〜32780です。設定する長さには出力結果の末尾のNULL文字分も含まれます。

この引数の値は,UAPから実行するコマンドに応じて決めてください。出力結果を受け取る必要がない場合は,13を設定してください。

処理終了後は,コマンドの実行結果として標準エラー出力に出力した実際の文字列の長さが返されます。

●time

応答監視時間を設定します(単位:秒)。指定できる値は1〜65535,EEADM_TIMEOUT_DEF,またはEEADM_TIMEOUT_INFです。

EEADM_TIMEOUT_DEFを設定した場合,プロセス関連定義のcall_cmd_timeオペランドで指定した値が応答監視時間になります。EEADM_TIMEOUT_INFを設定した場合は,時間監視をしません。

●flags

EENOFLAGSを設定します。

TP1/EEから値が返される引数

次に示す引数を参照できるのは,リターン値がEE_OK,EEADMER_STATNOTZERO,EEADMER_MEMORY_OUT,EEADMER_MEMORY_ERR,またはEEADMER_MEMORY_OUTERRのときだけです。ほかのリターン値のときは,参照できません。

●stat

実行したコマンドが,正常終了したか異常終了したか(シェルの終了コード)が返されます。コマンドをバックグラウンド実行した場合は,正常終了か異常終了かに関係なく0が返されます。

注※

waitpid(2)で指定した形式で,sh(1)の終了ステータスを示します。

●outmsg

コマンドの実行結果として標準出力に出力した文字列が返されます。

文字列の先頭アドレスは,ee_adm_call_command関数を呼び出すときにoutmsgに設定したアドレスです。文字列の長さは,最大で(ee_adm_call_command関数を呼び出すときにoutsizに設定した値−1)です(単位:バイト)。

長さの最大を超える文字列は切り捨てられます。また,パイプの容量を超えた分も切り捨てられます。長さの最大を超えなかった場合は,その文字列の長さ分だけ返されます。

文字列の末尾にはNULL文字が付きます。出力結果がない場合は,NULL文字だけが返されます。

●outsiz

標準出力に出力した文字列の長さが返されます(単位:バイト)。返される長さには出力結果の末尾のNULL文字分は含まれません。

●errmsg

コマンドの実行結果として標準エラー出力に出力した文字列の先頭ポインタが返されます。

この文字列は,標準出力に出力した文字列に続いて出力されます。文字列の長さは,最大で(ee_adm_call_command関数を呼び出すときにerrsizに設定した値−13)です(単位:バイト)。

長さの最大を超える文字列は切り捨てられます。また,パイプの容量を超えた分も切り捨てられます。長さの最大を超えなかった場合は,その文字列の長さ分だけ返されます。

文字列の末尾にはNULL文字が付きます。出力結果がない場合は,NULL文字が13バイト返されます。

●errsiz

標準エラー出力に出力した文字列の長さが返されます(単位:バイト)。返される長さには出力結果の末尾のNULL文字分は含まれません。

リターン値

リターン値

意味

EE_OK

シェルの終了コードは0(コマンドの実行が正常終了)です。標準出力および標準エラー出力の領域に文字列を格納しました。

EEADMER_ARGUMENT

引数に設定した値が間違っています。

EEADMER_DEF_INVALID

運用コマンド実行サーバ関連の定義が指定されていません。

EEADMER_MEMORY_ERR

標準エラー出力のデータが,領域に収まりません。

EEADMER_MEMORY_OUT

標準出力のデータが,領域に収まりません。

EEADMER_MEMORY_OUTERR

標準出力のデータと標準エラー出力のデータの両方が,領域に収まりません。

EEADMER_MEMORY_SHORT

メモリが不足しました。

EEADMER_RPC_ERR

運用コマンド実行サーバへの通信が失敗しました。

EEADMER_STATNOTZERO

シェルの終了コードは0以外(コマンドの実行が異常終了)です。標準出力および標準エラー出力のデータを領域に格納しました。

EEADMER_SYSTEMCALL

システムコール(close,pipe,dup,またはread)の呼び出しに失敗しました。

EEADMER_UNRESOLVABLE

そのほかのエラーが発生しました。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため,この機能は使用できません。

EECOMER_CNDUOC

UOCから発行しているため,この機能は使用できません。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

注意事項

  1. この関数で実行できるTP1/EEのコマンドは,トランザクション種別によって異なります。詳細は「2.6 運用コマンド実行機能」を参照してください。

  2. サーチパスに指定したディレクトリ間で,コマンド名が重複しないように注意してください。コマンド名が重複している場合,正しいコマンドが実行されないおそれがあります。

  3. ファイル操作に関連するコマンドを実行する場合,ファイルのI/Oなどの処理に時間が掛かるため,実行する場合は十分注意してください。