Version 2015.1.x ~
  Windows のバッチスクリプトで Caché/Ensemble のルーチンやメソッドの戻り値を取得する方法を押してください。

Caché 2008.2.0 以降で ccontrol runw というオプションが追加され、このオプションを利用することで同期実行や戻り値を取得することができます。

ccontrol コマンドの引数詳細はドキュメントをご参照ください。
ccontrolコマンドの引数について

コマンド実行例は以下の通りです。

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


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

値は、0~255 を指定できます。

ルーチンサンプルは以下の通りです。

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


クラスメソッドサンプルは以下の通りです。
※%SYSTEM.Process の Terminate メソッドは 2015.1 以降のバージョンで使用可能です。

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


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

cd c:\intersystems\cache1\bin
ccontrol runw CACHE1 start1^^Test() USER
echo %errorlevel%

ccontrol runw CACHE1 ##class(Test.Class1).test() USER
echo %errorlevel%

pause

関連トピック: Linux のシェルスクリプトで Caché/Ensembmle のルーチンやメソッドの戻り値を取得する方法を教えてください
添付ファイル:

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

FAQトップに戻る