サイズの大きいグローバルに格納された文字列を検索する方法
特定文字列が含まれるグローバルを検索する時、どのように行われているでしょうか?
管理ポータルでグローバルを表示して 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>
^%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>