添付の方法で、出力内容を変数にリダイレクトすることが可能です。
こちらの方法では、出力を %Stream変数(%Stream.TmpCharacter)にリダイレクトしています。
【テスト方法】
添付のTest.xmlをインポートして実行してください。
do run^Test()
上記のように実行することで、%Stream変数にリダイレクトした内容が画面に出力されます。
※サンプルでは、%Streamの内容を変数 res に格納しています。
こちらの方法は、Cache2013以降のバージョンで使用可能となった、クライアント(ブラウザ)とサーバ間でJSONオブジェクトを渡すことができる %ZEN.Auxiliary.jsonProvider クラスの %ObjectToJSON() メソッドなどの出力結果を変数に書き込む場合にも利用可能です。
ただしバージョン2016.1以降は、新機能 DocDM(Document Data Model) の導入により、以下の例のようにJSON文字列を簡単に変数に渡すことが可能になりました。
以下ドキュメントをご参照ください。
JSON の使用について【IRIS】
※以下はバージョン2016.2以降のサンプルです。バージョン2016.1の場合は方法が多少異なります。
set dynObject1 = ##class(%DynamicObject).%New() /// DocDM オブジェクトを作成する一つの方法
set dynObject1.SomeNumber = 42
set dynObject1.SomeString = "a string"
set string=dynObject1.%ToJSON() /// システムメソッド "%ToJSON()" を呼び出すことでシリアル化された JSON 文字列が返される
write string
英語のみになりますが、弊社Developer Communityサイトに関連トピックがありますので是非ご覧ください。
Caché tricks - capture write output to variable