記事
Mihoko Iijima · 2021年1月29日 2m read

グローバルのサイズをプログラミングで取得する方法

これは InterSystems FAQ サイトの記事です。

システム提供の %SYS.GlobalQueryクラス の Size クエリーを使用することで取得できます。

使用例は、以下のサンプルコードをご参照ください。
※カラムやパラメータの指定はクラスリファレンスをご確認ください。

 set dir="C:\intersystems\iris\mgr\user" // IRIS.DAT(またはCACHE.DAT)フォルダ
 set rs = ##class(%ResultSet).%New("%SYS.GlobalQuery:Size")
 do rs.Execute(dir) // 第3引数でマスク指定も可
 while (rs.Next()) { 
   set gname= rs.Get("Name") // グローバル名
   set gsize= rs.Get("Used MB") // グローバルサイズ(MB)
   write gname," : ",gsize,!
 }

 

グローバル変数のサイズが大きい場合、取得時間がかかる場合もあります。その場合、Size クエリーの第 6 引数に 1 を指定してクエリを再実行してみてください。

第 6 引数の指定により、簡易モードでサイズを取得します。簡易モードのため「Used MB」は取得できませんが、「Allocated MB」は取得できます。

以下、第 6 引数を指定した場合の実行例です(Used MB ではなく、Allocated MB を取得しています)。

 

 set dir="C:\intersystems\iris\mgr\user" // IRIS.DAT(またはCACHE.DAT)フォルダ
 set rs = ##class(%ResultSet).%New("%SYS.GlobalQuery:Size",,,,,1)
 do rs.Execute(dir) // 第3引数でマスク指定も可
 while (rs.Next()) { 
   set gname= rs.Get("Name") // グローバル名
   set gsize= rs.Get("Allocated MB") // グローバルサイズ(MB)
   write gname," : ",gsize,! 
 }
00
1 0 0 20
Log in or sign up to continue