C系列ならSwitch、VBならSelect Case文に相当するもの。PowerBuilderではCHOOSE CASE文を使う。
HELPには下記のような例文があるが、
CHOOSE CASE Weight
CASE IS<16
Postage=Weight*0.30
Method="USPS"
CASE 16 to 48
Postage=4.50
Method="UPS"
END CHOOSE
ここに
CASE IS NULL
とか
CASE NULL
と書いてもコンパイルエラーになる。どうやらこの書き方ではNull判定できない様子。
CHOOSE CASE文でNull判定したい場合
どうしてもCHOOSE CASE文でNULL判定したい場合は、下記の記法がおすすめ。
CHOOSE CASE True
CASE IsNull(x)
CASE x = 2
CASE x = 1
END CHOOSE
CHOOSE CASEの後にTrueを持ってきて、後のCASEには好きな条件式を書く。
IsNullでも演算子を使った式でも条件式なら何でもいい、ということだ。
なかなか思いつかないトリッキーな書き方だが役に立つ機会は意外に多い。
IF文っぽく書くことも
NULL判定に関係なくても、この書き方ならIF文っぽく条件を書けて読みやすい。
ORで大量に条件が必要なIF文は、CHOOSE CASE文の方が条件をカンマ区切りで書けて見やすいかも。
IF IsNull(ls_string) OR ls_string = "" OR Left(ls_string,2) = " " THEN
~~
ELSEIF x = 2 THEN
~~
ELSEIF x = 1 THEN
~~
END IF
↑こんな感じでIF A OR B OR C ELSEIFと読みにくい条件式も
CHOOSE CASE True
CASE IsNull(ls_string), ls_string = "", Left(ls_string,2) = " "
~~
CASE x = 2
~~
CASE x = 1
~~
END CHOOSE
↑こうすれば・・・あんまり変わらないかな?
そもそもこんなスパゲティ条件になっている時点で作り直した方がいいというツッコミはなしで...
コメントする