Published on InterSystems Developer Community (https://community.intersystems.com)

ホーム > サイズの大きいグローバルに格納された文字列を検索する方法

記事
Megumi Kakechi · 2021年9月12日 2m read

サイズの大きいグローバルに格納された文字列を検索する方法

特定文字列が含まれるグローバルを検索する時、どのように行われているでしょうか?

管理ポータルでグローバルを表示して Ctrl+F で検索することもできますが、サイズが大きなグローバルでは表示に時間がかかり難しい場合もあります。

もちろん、$ORDER  や $QUERY 関数でループして含まれる文字列を検索することは可能です。

しかし、もっと簡単で便利な方法があります。

管理ポータルで行える、グローバル文字列検索機能 を使う方法です。

こちら、管理ポータルの [システムエクスプローラ] > [グローバル] :検索 から簡単に行えます

例えば、^%ISCLOGグローバルの中から「CSP error cleaning up after page」というエラーが含まれるグローバルを検索するときは以下のようになります。

 ↓

 
どうしても  $ORDER や $QUERY 関数を使用してプログラムで行いたい、という場合は以下のようになります。

※サブスクリプトが複数あるときは、 $QUERY  関数で複数階層ループします。

set glb="^%ISCLOG"             
set glb=$query(@glb@(""))
for {
  if glb="" quit
  
  if @glb [ "CSP error cleaning up after page" {
     write glb,"=",@glb,! ;; <= you can take values with @glb
  }
  set glb=$query(@glb)
}


実行結果は以下のようになります(上記ルーチンを test.mac で保存して実行しています)。

%SYS>Do ^test
^%ISCLOG("Data",5960)=
                        CSPServerUError cleaning up after page, HALTing ...
^%ISCLOG("Data",5960,0,"$ZE")=CSP error cleaning up after page, HALTing
^%ISCLOG("Data",10046)=
                         CSPServerUError cleaning up after page, HALTing...
^%ISCLOG("Data",10046,0,"$ZE")=CSP error cleaning up after page, HALTing
^%ISCLOG("Data",13398)=
                         CSPServerUError cleaning up after page, HALTing ...
^%ISCLOG("Data",13398,0,"$ZE")=CSP error cleaning up after page, HALTing
 
%SYS>
#ヒントとコツ #管理ポータル #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health

ソースURL:https://jp.community.intersystems.com/post/%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%AE%E5%A4%A7%E3%81%8D%E3%81%84%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%AB%E3%81%AB%E6%A0%BC%E7%B4%8D%E3%81%95%E3%82%8C%E3%81%9F%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E6%A4%9C%E7%B4%A2%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95