$CASE(target,case:value,case2:value2,...,:default)
例
以下の例では、曜日番号を指定し、対応する曜日名を返します。既定値 “entry error” は提供されません。
SET daynum=$ZDATE($HOROLOG,10)
WRITE $CASE(daynum,
1:"Monday",2:"Tuesday",3:"Wednesday",
4:"Thursday",5:"Friday",
6:"Saturday",0:"Sunday",:"entry error")
以下の例では、野球のバッターの出塁記録を入力として指定し、適切な野球用語を書き出します。
SET hit=$RANDOM(5)
SET atbat=$CASE(hit,1:"single",2:"double",3:"triple",4:"home run",:"strike out")
WRITE hit," = ",atbat
以下の例では、$CASE を DO コマンド引数として使用します。これは exp 指数値に適したルーチンを呼び出します。
Start ; Raise an integer to a randomly-selected power.
SET exp=$RANDOM(6)
SET num=4
DO $CASE(exp,0:NoMul(),2:Square(num),3:Cube(num),:Exponent(num,exp))
WRITE !,num," ",result,!
RETURN
Square(n)
SET result=n*n
SET result="Squared = "_result
RETURN
Cube(n)
SET result=n*n*n
SET result="Cubed = "_result
RETURN
Exponent(n,x)
SET result=n
FOR i=1:1:x-1 { SET result=result*n }
SET result="exponent "_x_" = "_result
RETURN
NoMul()
SET result="multiply by zero"
RETURN
以下は、入力された文字が英字かそれ以外の文字であるかをテストする例です。
READ "Input a letter: ",x
SET chartype=$CASE(x?1A,1:"letter",:"other")
WRITE chartype
以下の例では、$CASE を使用して、どの添え字付き変数を返すかを判断しています。
SET dabbrv="W"
SET wday(1)="Sunday",wday(2)="Monday",wday(3)="Tuesday",
wday(4)="Wednesday",wday(5)="Thursday",wday(6)="Friday",wday(7)="Saturday"
WRITE wday($CASE(dabbrv,"Su":1,"M":2,"Tu":3,"W":4,"Th":5,"F":6,"Sa":7))
次の例は、case:value ペアを指定しません。これは、定義されていない default 文字列を返します。
SET dummy=3
WRITE $CASE(dummy,:"not defined")