例
以下の例は $DATA、$ORDER、$QUERY 関数に対して、^$ROUTINE を引数として使用する方法を表しています。
$DATA に対する引数としての ^$ROUTINE
$DATA(^$|nspace|ROUTINE(routine_name))
^$ROUTINE は $DATA に対する引数として、routine_name の OBJ コード・バージョンが ^$ROUTINE 内のノードとして存在するか否かを示す整数値を返します。以下のテーブルは、$DATA が返すことができる整数値を示しています。
値 |
意味 |
0 |
ルーチン名は存在しない |
1 |
ルーチン名が存在する |
以下のターミナルの例では、myrou ルーチンの OBJ コード・バージョンが存在するかどうかをテストしています。この例では、myrou という名前のコンパイル済みの MAC ルーチンが USER ネームスペースに存在することを想定しています。
USER>WRITE ^ROUTINE("myrou",0,"GENERATED") // INT code version exists
1
USER>WRITE $DATA(^$ROUTINE("myrou")) // OBJ code version exists
1
USER>KILL ^rOBJ("myrou") // Kills the OBJ code version
USER>DO ^myrou
DO ^myrou
^
<NOROUTINE> *myrou
USER>WRITE ^ROUTINE("myrou",0,"GENERATED") // INT code version exists
1
USER>WRITE $DATA(^$ROUTINE("myrou")) // OBJ code version does not exist
0
USER>
$ORDER に対する引数としての ^$ROUTINE
$ORDER(^$|nspace|ROUTINE( routine_name),direction)
^$ROUTINE は $ORDER に対する引数として、指定したルーチン名に対する照合順序で、次または前のルーチン名を返します。そのようなルーチン名が ^$ROUTINE のノードとして存在しなければ、$ORDER は NULL 文字列を返します。
direction 引数は、次のルーチン名を返すか、前のルーチン名を返すかを指定します。1 = 次、-1 = 前です。direction 引数を指定しない場合、InterSystems IRIS は、指定したルーチン名に対する照合順序で、次のルーチン名を返します。詳細は、"$ORDER" 関数を参照してください。
以下のサブルーチンは、USER ネームスペースを検索し、ROUTINE というローカル配列にあるルーチン名を格納します。
SET rname=""
FOR I=1:1 {
SET rname=$ORDER(^$|"USER"|ROUTINE(rname))
QUIT:rname=""
SET ROUTINE(I)=rname
WRITE !,"Routine name: ",rname
}
WRITE !,"All routines stored"
QUIT
$QUERY に対する引数としての ^$ROUTINE
$QUERY(^$|nspace|ROUTINE(routine_name))
^$ROUTINE は $QUERY に対する引数として、指定したルーチン名に対する照合順序で、次のルーチン名を返します。指定したルーチン名は、存在していなくてもかまいません。照合順序内でそれ以降にルーチン名がない場合は、$QUERY(^$ROUTINE) は NULL 文字列を返します。
次の例では、2 つの $QUERY 関数が、USER ネームスペース内で、指定したルーチン名の次のルーチンを返します。
SET rname=""
WRITE !,"1st routine: ",$QUERY(^$|"USER"|ROUTINE(rname))
SET rname="%m"
WRITE !,"1st ",rname, " routine: ",$QUERY(^$|"USER"|ROUTINE(rname))
QUIT