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?

$SELECT

最初の True の式に関連した値を返します。

Synopsis

$SELECT(expression:value,...)
$S(expression:value,...)

パラメータ

expression 関連付けられた value パラメータに対する選択テストです。
value 関連付けられた expression が True と評価された場合に返される値です。

概要

$SELECT 関数は、True (1) に評価される、最初の expression に関連付けられた値を返します。各 $SELECT 引数は、コロンで区切られた組み合わせの式です。左側は 真偽値式です。右側は、どのような式でもかまいません。

expression:value の組み合わせの指定されたリストは、任意の長さにできます。$SELECT は、左から右へパラメータを評価します。$SELECT が True の値 (1) の 真偽値式を見つけると、コロンの右側に対応した式を返します。$SELECT は、最左端の True の 真偽値式を見つけると、評価を停止します。パラメータ・リストの後の対を評価することはありません。

パラメータ

expression

関連付けられた value パラメータに対する選択テストです。有効な Caché の関係式、あるいは論理式です。True と評価される expression がないときは、システムは <SELECT> エラーを生成します。実行中のルーチンがエラーによって中断されることを防止するために、最後の expression を、常に true に評価される値 1 にできます。

expression が文字列または数値の場合、0 以外の数値はすべて true に評価されます。数値 0 や非数値文字列は false に評価されます。

value

関連付けられた expression が True と評価された場合に返される値です。数値、文字列リテラル、変数名、その他有効な ObjectScript 式を使用できます。value に式を指定すると、関連付けられた expression が True に評価された後にのみ評価されます。value が添え字付きグローバル参照を含む場合は、評価されるときにネイキッド・インジケータを変更します。このため、$SELECT 関数内、あるいは直後にネイキッド・グローバル参照を使用するときは注意してください。ネイキッド・インジケータに関する詳細は、"Caché グローバルの使用法" の "ネイキッド・グローバル参照" を参照してください。

<SELECT> エラーの発生を防止するためにも、適切な既定値を持つ最後の式として、常に値 1 を含める必要があります。詳細は、以下の例を参照してください。

Start
   READ !,"Which level?: ",a 
   QUIT:a=""
   SET x=$SELECT(a=1:"Level1",a=2:"Level2",a=3:"Level3",1:"Start")
   DO @x
Level1()
   WRITE !,"This is Level 1"
Level2()
   WRITE !,"This is Level 2"
Level3()
   WRITE !,"This is Level 3"

ユーザが 1、2、3、または NULL 文字列以外の値を入力すると、制御はルーチンの先頭に渡されます。

$SELECT を使用して、複数の IF 節を置き換えることができます。以下の例は、IFELSEIF、そして ELSE 節を使用して、数字が偶数か奇数かの判断をします。

OddEven()
   READ !,"Enter an Integer: ",x
   QUIT:x=""
   WRITE !,"The input value is "
   IF 0=$ISVALIDNUM(x) { WRITE "not a number" }
   ELSEIF x=0 { WRITE "zero" }
   ELSEIF ""=$NUMBER(x,"I") { WRITE "not an integer" }
   ELSEIF x#2=1 { WRITE "odd" }
   ELSE  { WRITE "even" }
   DO OddEven

また、以下の例は数字を受け入れ、その数字が偶数か奇数かの判断をします。$SELECT を使用して、前述の例にある IF コマンドを置き換えます。

OddEven()
   READ !,"Enter an Integer: ",x
   QUIT:x=""
   WRITE !,"The input value is "
   WRITE $SELECT(0=$ISVALIDNUM(x):"not a number",x=0:"zero",
                 ""=$NUMBER(x,"I"):"not an integer",x#2=1:"odd",1:"even")
   DO OddEven

関連項目

FeedbackOpens in a new tab