我想知道在沒有用戶交互的情況下是否可以使用「^%GOF」。我正在使用Caché2008. ^%GO不是一個選項,因爲它會變慢。我使用來自臨時文件的輸入來自動回答問題,但可能會失敗(很少發生)。在Caché中使用%GOF無聲導出全局變量
我在%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)
唯一的缺點是,如果你有全局超過允許全局進入,程序崩潰的最大的concatination命名空間。然後你應該拆分全局列表。
我知道這個類,但我們不能使用正則表達式(「*」),你必須給所有的全局作爲一個列表。 – user74952 2012-04-16 13:43:06
我將嘗試找出一種方法來獲取全局變量的備份列表。 – user74952 2012-04-16 14:08:45
@ user74952 - 要列出全局變量,請參閱http://stackoverflow.com/questions/9793241/what-is-the-current-preferred-method-for-enumerating-the-globals-in-a-namespace – psr 2012-04-27 17:27:31