[Powerbuilder] Tips: CHOOSE CASEでNullを判定したい

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

↑こうすれば・・・あんまり変わらないかな?

そもそもこんなスパゲティ条件になっている時点で作り直した方がいいというツッコミはなしで...

コメントする