第三十四章 Caché 命令大全 ZKILL 命令
删除节点,同时保留该节点的子代。
大纲
ZKILL:pc array-node,...
ZK:pc array-node,...
参数
- pc - 可选-后置条件表达式。
- array-node 局部变量、进程私有全局变量或作为数组节点的全局变量,或局部、进程私有全局变量或全局数组节点的逗号分隔列表。
描述
ZKILL
命令删除指定数组节点的值,而不会杀死该节点的后代。相反,kill
命令删除指定数组节点的值以及该节点的所有子代。数组节点可以是局部变量、进程私有变量或全局变量。
默认情况下,任何后续对此已终止数组节点的引用都会生成一个<unfined>
错误。通过设置%SYSTEM.Process.Unfined()
方法,可以更改Caché 行为,使其在引用未定义的下标变量时不生成<unfined>
错误。
参数
pc
可选的后置条件表达式。如果后置条件表达式为TRUE(计算结果为非零数值),则Caché执行该命令。如果后置条件表达式为假(计算结果为零),则Caché不执行该命令。
array-node
本地、进程专用全局变量或全局数组节点。可以指定单个数组节点,也可以指定逗号分隔的数组节点列表。尝试对结构化系统变量(SSVN)(例如^$GLOBAL)
使用ZKILL
会导致<command>
错误。
示例
在本例中,ZKILL
命令删除节点a(1)
,但不删除节点a(1,1)
。
/// d ##class(PHA.TEST.Command).TestZKill()
ClassMethod TestZKill()
{
SET a(1)=1,a(1,1)=11
SET x=a(1)
SET y=a(1,1)
ZKILL a(1)
SET z=a(1,1)
WRITE "x=",x," y=",y," z=",z
}
返回x=1 y=11 z=11
DHC-APP>d ##class(PHA.TEST.Command).TestZKill()
x=1 y=11 z=11
。但是,然后发出:
WRITE a(1)
DHC-APP 2d1> d ##class(PHA.TEST.Command).TestZKill()
x=1 y=11 z=11
WRITE a(1) }
^
<UNDEFINED>zTestZKill+7^PHA.TEST.Command.1 *a(1)
生成<UNDEFINED>
错误。
对比KILL
/// d ##class(PHA.TEST.Command).TestZKillK()
ClassMethod TestZKillK()
{
SET a(1)=1,a(1,1)=11
SET x=a(1)
SET y=a(1,1)
KILL a(1)
SET z=a(1,1)
WRITE "x=",x," y=",y," z=",z
}
DHC-APP>d ##class(PHA.TEST.Command).TestZKillK()
SET z=a(1,1)
^
<UNDEFINED>zTestZKillK+5^PHA.TEST.Command.1 *a(1,1)
网友评论