Windows のバッチスクリプトでIRISのルーチンやメソッドの戻り値を取得する方法を教えてください。

iris コマンドを使用して、InterSystems IRIS のインスタンスを制御できます。
iris コマンドは多くの機能をサポートします。以下の構文を使用します。

iris <ファンクション名> <インスタンス名> [引数]

irisコマンドの詳細は下記ドキュメントをご参照ください。
InterSystems IRIS インスタンスの制御

このirisコマンドのrunw というファンクションを使用して、同期実行や戻り値を取得することができます。
コマンド実行例は以下の通りです。

iris runw インスタンス名 tag^^routine([parameter-list]) ネームスペース名
iris runw インスタンス名 ##CLASS(package.class).method([parameter-list]) ネームスペース名


バッチスクリプトへの戻り値の指定は、ルーチンやメソッド終了時に指定する QUIT や RETURN コマンドに引数を指定する方法ではなく、IRIS 内の処理終了時に %SYSTEM.Process クラスの Terminate() メソッドを使用して errorlevel 変数に値を返す方法を使用します。
値は、0~255 を指定できます。
ルーチンサンプルは以下の通りです。

// ルーチン名をTest.macとします
start1() public {
 hang 5 // 5秒待つ
 //第2引数に指定した数値がシェルスクリプトに戻ります
 set st=$system.Process.Terminate($JOB,11)
}


クラスメソッドサンプルは以下の通りです。

Class Test.Class1
{
ClassMethod test()
{
 hang 5 // 5秒待つ
 //第2引数に指定した数値がシェルスクリプトに戻ります
 set st=$system.Process.Terminate($JOB,12)
}
}


上記ルーチンとクラスメソッドを起動するバッチスクリプト例は以下の通りです。
※インスタンス名=IRIS1

cd c:\intersystems\IRIS1\bin
iris runw IRIS1 start1^^Test() USER
echo %errorlevel%

iris runw IRIS1 ##class(Test.Class1).test() USER
echo %errorlevel%

pause

該当する製品: IRIS Data Platform, HealthShare/IRIS Based, IRIS for Health
関連トピック: ccontrol/iris コマンドでユーザ名を指定して実行することはできますか?
関連トピック:【IRIS】 Linux のシェルスクリプトでルーチンやメソッドの戻り値を取得する方法を教えてください
添付ファイル:

アンケートにご協力をお願いします
このトピックは参考になりましたか?
このトピックに関するお問い合わせ

FAQトップに戻る