我想知道是否可以在没有用户交互的情况下使用“^%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)
唯一的缺点是,如果您的命名空间的全局变量连接超过全局条目允许的最大值,则程序会崩溃。然后,您应该拆分全局列表。