Write コマンドの出力情報を変数に格納する方法を教えてください

添付の方法で、出力内容を変数にリダイレクトすることが可能です。
こちらの方法では、出力を %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】

Caché での JSON の使用について


※以下はバージョン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


該当する製品: Caché, Ensemble, HealthShare/Caché Based, IRIS Data Platform, HealthShare/IRIS Based, IRIS for Health
関連トピック:
添付ファイル: 参考資料(zip)

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

FAQトップに戻る