Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

$SORTEND

$SORTBEGIN で開始されたソート・モードを終了します。

Synopsis

$SORTEND(set_global,dosort)

パラメータ

set_global オプション — 対応する $SORTBEGIN 内で指定されたグローバル変数。省略した場合、$SORTEND は、現在のプロセスの $SORTBEGIN 操作をすべて終了します。
dosort オプション — フラグ・パラメータ。1 の場合、$SORTBEGIN で開始されたソートを実行し、ソートされたデータを set_global 内にコピーします。0 の場合、データをコピーせずにソートを終了します。既定は 1 です。

概要

$SORTEND は、特定のターゲット・グローバルに関して $SORTBEGIN で開始した特別なソート・モードの終了を指定します。$SORTENDset_global の値は、対応する $SORTBEGINset_global と一致する必要があります。

set_global を省略した場合、$SORTEND は、現在のプロセスの、すべてのアクティブな $SORTBEGIN 関数によって開始された現在のソート・モードをすべて終了します。したがって、$SORTEND() または $SORTEND(,1) は、プロセスの現在のソート・モードをすべて終了してコミットします。$SORTEND(,0) は、プロセスの現在のソート・モードをすべて中止します。

  • 成功した場合、$SORTEND はグローバル・ノード・セットの総数を示す正の整数を返します。set_global が指定された場合、これは、指定の set_global 変数に適用されるセットの数です。set_global が省略された場合、これは、現在のすべての $SORTBEGINset_global 変数に適用されるセットの数です。dosort フラグの設定に関係なく、整数が返されます。

  • 成功しなかった場合、$SORTEND は -1 を返します。例えば、$SORTEND で、対応するアクティブな $SORTBEGIN を持たない set_global が指定された場合などです。

  • 空命令の場合、$SORTEND は 0 を返します。例えば、指定された set_global 変数に適用されるセットがない場合、または set_global を指定しないで $SORTEND を発行したときに、アクティブな $SORTBEGIN がない場合です。

set_global のネームスペースのマッピングが $SORTBEGIN$SORTEND で異なる場合、$SORTEND を呼び出した際に <NAMESPACE> エラーが発生します。ただし、$SORTBEGIN暗黙的なネームスペースを使用して set_global を指定した場合は、それ以降にネームスペースのマッピングが変更されても $SORTEND には影響がありません。暗黙的なネームスペースのグローバル参照と明示的なネームスペースのグローバル参照を同じソート操作に混在させないでください。ネームスペース名の変更については、"Caché システム管理ガイド" の "ネームスペースの構成" を参照してください。

以下の例は、グローバル ^myyestest に 3 つのセットを適用します。$SORTEND は 3 を返します。dosort は 1 であるため、$DATA 関数の返り値で示されているとおり、これらのセットが適用されます。

  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

以下の例は、グローバル ^mynotest に 3 つのセットを適用します。$SORTEND は 3 を返します。dosort は 0 であるため、$DATA 関数の返り値で示されているとおり、これらのセットは適用されません

  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

以下の 2 つの例では、2 つの $SORTBEGIN 操作を指定し、それらの操作でグローバル ^mytesta に 3 つの セットを適用して、グローバル ^mytestb に 2 つのセットを適用します。$SORTEND は、set_global が指定されていないため、現在の $SORTBEGIN 操作をすべて終了して 5 を返します。最初の例ではこれらのセットがコミットされ、次の例では中止されていますが、どちらの例でも $SORTEND は 5 を返します。

  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
  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

関連項目

FeedbackOpens in a new tab