第六十三章 Caché 函数大全 $SORTEND 函数
结束由$SORTBEGIN
启动的排序模式。
大纲
$SORTEND(set_global,dosort)
参数
- set_global 可选-在相应的
$SORTBEGIN
中指定的全局变量。如果省略,$SORTEND
将结束当前进程的所有$SORTBEGIN
操作。 - dosort 可选-标志参数。如果为1,则Caché执行由
$SORTBEGIN
启动的排序操作,并将已排序的数据复制到set_global中。如果为0,则Caché终止排序操作,而不复制任何数据。预设值为1。
描述
$SORTEND
指定由$SORTBEGIN
对特定目标全局对象发起的特殊排序模式的结尾。 $SORTEND set_global
的值必须与相应的$SORTBEGIN set_global
相匹配。
如果省略set_global,则$SORTEND
会终止由当前进程的所有活动$SORTBEGIN
函数启动的所有当前排序模式。因此,$SORTEND(
)或$SORTEND(,1)
结束并提交该过程的所有当前排序模式; $SORTEND(,0)
中止该过程的所有当前排序模式。
- 如果成功,
$SORTEND
将返回设置的全局节点总数的正整数。指定set_global
时,这是应用于指定set_global
变量的集合数。省略set_global
时,这是应用于所有当前$SORTBEGIN set_global
变量的集合数。无论dosort标志设置如何,都会返回此整数计数。 - 如果失败,则
$SORTEND
返回-1。例如,如果$SORTEND
指定的set_global
没有相应的活动$SORTBEGIN
。 - 如果没有操作,则
$SORTEND
返回0。如果没有对指定的set_global
变量应用任何集,或者在发出未指定set_global
的$SORTEND
时没有活动的$SORTBEGIN
,则会发生这种情况。
如果在$SORTBEGIN
和$SORTEND
之间更改了set_global
命名空间的映射,则在调用$SORTEND
时会发生<NAMESPACE>
错误。但是,如果$SORTBEGIN
使用隐式名称空间指定set_global
,则后续名称空间映射更改对$SORTEND
无效。具有隐式名称空间的全局引用和具有显式名称空间的全局引用不应在同一排序操作中混合使用。
示例
以下示例将三组应用于全局^myyestest
。 $SORTEND
返回3。由于dosort为1,因此应用了这些集合,如$DATA
函数返回值所示:
/// d ##class(PHA.TEST.Function).SORTBEGIN()
ClassMethod SORTBEGIN()
{
WRITE $SORTBEGIN(^myyestest),!
SET ^myyestest(1)="apple"
SET ^myyestest(2)="orange"
SET ^myyestest(3)="banana"
WRITE $SORTEND(^myyestest,1),!
WRITE $DATA(^myyestest(1)),!
WRITE $DATA(^myyestest(2)),!
WRITE $DATA(^myyestest(3))
KILL ^myyestest
}
DHC-APP>d ##class(PHA.TEST.Function).SORTBEGIN()
1
3
1
1
1
以下示例将三组应用于全局^mynotest
。 $SORTEND
返回3。由于dosort为0,因此不应用这些集合,如$DATA
函数返回值所示:
/// d ##class(PHA.TEST.Function).SORTBEGIN1()
ClassMethod SORTBEGIN1()
{
WRITE $SORTBEGIN(^mynotest),!
SET ^mynotest(1)="apple"
SET ^mynotest(2)="orange"
SET ^mynotest(3)="banana"
WRITE $SORTEND(^mynotest,0),!
WRITE $DATA(^mynotest(1)),!
WRITE $DATA(^mynotest(2)),!
WRITE $DATA(^mynotest(3))
KILL ^mynotest
}
DHC-APP>d ##class(PHA.TEST.Function).SORTBEGIN1()
1
3
0
0
0
下面的两个示例指定了两个$SORTBEGIN
运算,并且在其中将三组应用于全局^mytesta
,并将两组应用于全局^mytestb
。 $SORTEND
未指定set_global
,因此结束所有当前的$SORTBEGIN
操作并返回5。请注意,在两个示例中,$SORTEND
返回5,尽管第一个示例提交了这些集合,而第二个示例中止了这些集合。
/// d ##class(PHA.TEST.Function).SORTBEGIN2()
ClassMethod SORTBEGIN2()
{
WRITE $SORTBEGIN(^mytesta),!
SET ^mytesta(1)="apple"
SET ^mytesta(2)="orange"
SET ^mytesta(3)="banana"
WRITE $SORTBEGIN(^mytestb),!
SET ^mytestb(1)="corn"
SET ^mytestb(2)="carrot"
WRITE "$SORTEND returns: ",$SORTEND(,1),!
WRITE "global sets committed?: ",$DATA(^mytesta(2))
KILL ^mytesta,^mytestb
}
DHC-APP>d ##class(PHA.TEST.Function).SORTBEGIN2()
1
2
$SORTEND returns: 5
global sets committed?: 1
/// d ##class(PHA.TEST.Function).SORTBEGIN3()
ClassMethod SORTBEGIN3()
{
WRITE $SORTBEGIN(^mytesta),!
SET ^mytesta(1)="apple"
SET ^mytesta(2)="orange"
SET ^mytesta(3)="banana"
WRITE $SORTBEGIN(^mytestb),!
SET ^mytestb(1)="corn"
SET ^mytestb(2)="carrot"
WRITE "$SORTEND returns: ",$SORTEND(,0),!
WRITE "global sets committed?: ",$DATA(^mytesta(2))
KILL ^mytesta,^mytestb
}
DHC-APP>d ##class(PHA.TEST.Function).SORTBEGIN3()
1
2
$SORTEND returns: 5
global sets committed?: 0
网友评论