Rubrica de FAQ da InterSystems
Se você tentar eliminar uma global que está mapeada no nível de subscrito a partir do nó raiz, você receberá um erro e ela não será excluída. Isso ocorre porque o comando kill para globais mapeadas no nível de subscrito não pode ser usado atravessando mapeamentos.
^TEST(A*~K*) -> database A
^TEST(L*~Z*) -> database B
NAMESPACE>Kill ^TEST
<SLMSPAN> <- This error is output.
Para excluir apenas a global no namespace (banco de dados) atual, use o seguinte:
NAMESPACE>Kill ^["^^."]TEST
Globais mapeadas no nível de subscrito devem ser movidas para o banco de dados e eliminadas diretamente.
Para alternar para o banco de dados, use o seguinte:
zn "^^c:\intersystems\iris\mgr\user"
or
set $namespace="^^c:\intersystems\iris\mgr\user"
Ao importar globais com $System.OBJ.Load, o comportamento padrão é eliminar as globais antes de importá-las.
Como resultado, se as globais de destino estiverem mapeadas no nível de subscrito, ocorre um erro <SLMSPAN>. Nesse caso, especifique o parâmetro /mergeglobal como segundo argumento de $System.OBJ.Load, conforme abaixo, para evitar a eliminação prévia:
Set sc = $System.OBJ.Load(path," /mergeglobal",.errors)
[Referências]
Mapped globals cannot be exported.
How do I compile mapped classes and routines?