ユーザーの操作なしで「^%GOF」を使用できるかどうか知りたいのですが。私はCaché2008を使用しています。^%GOは遅くなるため、オプションではありません。一時ファイルからの入力を使用して質問に自動的に回答していますが、失敗する可能性があります(まれに発生します)。
このユーティリティのルーチンが%SYSで見つかりませんでした。それはどこにありますか?
ありがとう、
回答:「%SYS.GlobalQuery:NameSpaceList」を使用して、グローバル(システムグローバルを除く)のリストを取得します。
Set Rset = ##class(%ResultSet).%New("%SYS.GlobalQuery:NameSpaceList")
d Rset.Execute(namespace, "*", 0)
s globals=""
while (Rset.Next()){
s globalName=Rset.Data("Name")_".gbl"
if (globals=""){
s globals = globalName
}else{
s globals = globals_","_globalName
}
d ##class(%Library.Global).Export(namespace, globals, "/tmp/export.gof", 7)
唯一の欠点は、グローバルエントリに許可されている最大値を超えるグローバルの連結を持つ名前空間がある場合、プログラムがクラッシュすることです。次に、グローバルリストを分割する必要があります。