Linux のシェルスクリプトでルーチンやメソッドの戻り値を取得する方法
これは InterSystems FAQ サイトの記事です。
Linux で シェルスクリプト(shell script) からルーチンやメソッドを実行し戻り値を取得するには、iris コマンドを使用します。
詳細はドキュメント「インスタンスの接続について」 をご参照ください。
コマンド記述例は以下の通りです。
iris session インスタンス名 -U ネームスペース名 "実行ルーチン・メソッド"
シェルスクリプトへの戻り値の指定は、ルーチンやメソッド終了時に指定する QUIT や RETURN コマンドに引数を指定する方法ではなく、プロセス処理終了時に %SYSTEM.Process クラスの Terminate() メソッドを使用して 特殊変数 $? に値を返す方法を利用します。
値は、0~255 を指定できます。 ルーチンでの利用例は以下の通りです。
// ルーチン名をTestとします
start1() public {
hang 5 // 5秒待つ
//第2引数に指定した数値がシェルスクリプトに戻ります
set st=$system.Process.Terminate($JOB,11)
}
実行例は以下の通りです。
# iris session iris -U USER "start1^Test()"
# echo $?
11
クラスメソッドでの利用例は以下の通りです。
Class Test.Class1
{
ClassMethod test()
{
hang 5 // 5秒待つ
//第2引数に指定した数値が シェルスクリプトに戻ります
set st=$system.Process.Terminate($JOB,12)
}
}
実行例は以下の通りです。
# iris session iris -U USER "##class(Test.Class1).test()"
# echo $?
12
関連情報もあります。以下、FAQサイトのトピックをご参照ください。