^$ROUTINE
Synopsis
^$|nspace|ROUTINE(routine_name) ^$|nspace|R(routine_name)
パラメータ
|nspace| または [nspace] |
オプション — 拡張 SSVN 参照。明示的ネームスペース名か、暗黙のネームスペースのいずれかです。角括弧 (["nspace"])、または垂直バー (|"nspace"|) で囲まれた、引用符付きの文字列に評価されなければなりません。ネームスペース名は、大文字と小文字を区別しません。ネームスペース名はすべて大文字で格納および表示されます。 |
routine_name | ルーチン名を含む文字列に評価される式 |
概要
現在のネームスペース (既定)、または指定されたネームスペースからのルーチン情報を返すために、^$ROUTINE 構造化システム変数を $DATA、$ORDER、$QUERY 関数に対する引数として使用できます。
パラメータ
nspace
このオプションのパラメータでは、拡張 SSVN 参照を使用することで他のネームスペースのグローバルを指定できます。ネームスペースは、引用符付きの文字列リテラルまたは変数として、明示的にネームスペース名を指定するか、もしくは暗黙のネームスペースを指定します。ネームスペース名は、大文字と小文字を区別しません。括弧付き構文 ["USER"] か、環境構文 |"USER"| のいずれかを使用します。nspace 区切り文字の前後にスペースを使用することはできません。
以下のメソッドを使用して、ネームスペースが定義されているかどうかをテストすることができます。
WRITE ##class(%SYS.Namespace).Exists("USER"),! ; an existing namespace
WRITE ##class(%SYS.Namespace).Exists("LOSER") ; a non-existent namespace
$NAMESPACE 特殊変数を使用して、現在のネームスペースを決定できます。現在のネームスペースを変更するお勧めの方法は、NEW $NAMESPACE に続けて SET $NAMESPACE="nspacename" を使用することです。
routine_name
ルーチン名を含む文字列に評価される式ルーチン名の最初の 255 文字以内は一意である必要があります。220 文字を超える長さのルーチン名は避けてください。
例
以下の例は $DATA、$ORDER、$QUERY 関数に対して、^$ROUTINE を引数として使用する方法を表しています。
$DATA に対する引数としての ^$ROUTINE
$DATA(^$|nspace|ROUTINE(routine_name))
^$ROUTINE は $DATA に対する引数として、routine_name が ^$ROUTINE 内のノードとして存在するか否かを示す整数値を返します。以下のテーブルは、$DATA が返すことができる整数値を示しています。
値 | 意味 |
---|---|
0 | ルーチン名は存在しない |
1 | ルーチン名が存在する |
以下の例は、既定のネームスペースにルーチンが存在するかどうかを調べています。
XECUTE "ZREMOVE"
XECUTE "ZSAVE ROU"
WRITE !,$DATA(^$ROUTINE("^ROU"))
XECUTE "ZSAVE ROU"
WRITE !,$DATA(^$ROUTINE("^ROU"))
$ORDER に対する引数としての ^$ROUTINE
$ORDER(^$|nspace|ROUTINE( routine_name),direction)
^$ROUTINE は $ORDER に対する引数として、指定したルーチン名に対する照合順序で、次または前のルーチン名を返します。そのようなルーチン名が ^$ROUTINE のノードとして存在しなければ、$ORDER は NULL 文字列を返します。
direction 引数は、次のルーチン名を返すか、前のルーチン名を返すかを指定します。direction 引数を指定しない場合、Caché は、指定したルーチン名に対する照合順序で、次のルーチン名を返します。詳細は、"$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
関連項目
-
$DATA 関数
-
$ORDER 関数
-
$QUERY 関数
-
$NAMESPACE 特殊変数
-
"Caché システム管理ガイド" の "ネームスペースの構成"