美文网首页
第六十三章 Caché 函数大全 $SORTEND 函数

第六十三章 Caché 函数大全 $SORTEND 函数

作者: Cache技术分享 | 来源:发表于2020-10-23 08:18 被阅读0次

第六十三章 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

相关文章

网友评论

      本文标题:第六十三章 Caché 函数大全 $SORTEND 函数

      本文链接:https://www.haomeiwen.com/subject/weimmktx.html