Я хотел бы знать, можно ли использовать «^% 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)
Единственным недостатком является то, что если у вас есть пространство имен с конкатенацией глобалов, превышающее максимально допустимое для глобальной записи, программа вылетает. Затем вы должны разделить список глобальных переменных.