文字列操作関数中のIF文について
MTA
投稿数: 16
質問ばかりで、申し訳ありません。
"v9Plus"から"uniPaaS v1 plus"のマイグレーションのですが、困った問題があります。
ヘルプの「Unicodeを利用する場合の注意事項」の存在は知っていましたが、今回unicode変数を使わないし関係ないやと思っていましたが、動作確認中に不思議な動きをするので、再確認しました。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ただし、IF関数およびCASE関数では、以下の扱いになります。
・文字定数は、Unicode型と扱われます。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
文字列操作関数のパラメータに、if文で文字定数をセットするのは、比較的特殊な作りでもないと思いますが、byte単位での処理を期待していた物が、文字単位で処理されてしまいます。
たとえば
・v9,uniPaaS 同じ
len('奇数') → 戻値:4
・v9 と uniPaaS で違う
len(if((X mod 2)=0,'偶数','奇数')) → 戻値:v9は4、uniPaaSは2
見つけ次第UnicodeToANSIをif文にかぶせていますが、問題箇所の対象を絞り込むのが大変なので、この現象を回避できる方法がありましたらと思い投稿しました。
"v9Plus"から"uniPaaS v1 plus"のマイグレーションのですが、困った問題があります。
ヘルプの「Unicodeを利用する場合の注意事項」の存在は知っていましたが、今回unicode変数を使わないし関係ないやと思っていましたが、動作確認中に不思議な動きをするので、再確認しました。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ただし、IF関数およびCASE関数では、以下の扱いになります。
・文字定数は、Unicode型と扱われます。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
文字列操作関数のパラメータに、if文で文字定数をセットするのは、比較的特殊な作りでもないと思いますが、byte単位での処理を期待していた物が、文字単位で処理されてしまいます。
たとえば
・v9,uniPaaS 同じ
len('奇数') → 戻値:4
・v9 と uniPaaS で違う
len(if((X mod 2)=0,'偶数','奇数')) → 戻値:v9は4、uniPaaSは2
見つけ次第UnicodeToANSIをif文にかぶせていますが、問題箇所の対象を絞り込むのが大変なので、この現象を回避できる方法がありましたらと思い投稿しました。
投票数:0
平均点:0.00
投稿ツリー
-
文字列操作関数中のIF文について
(MTA, 2011-11-24 23:33)
- Re: 文字列操作関数中のIF文について (Tanda, 2011-11-25 11:43)
- Re: 文字列操作関数中のIF文について (mtakata, 2011-11-25 14:41)
- Re: 文字列操作関数中のIF文について (Jiro123, 2011-11-25 15:01)
-
Re: 文字列操作関数中のIF文について
(MTA, 2011-11-25 16:54)
-
Re: 文字列操作関数中のIF文について
(Jiro123, 2011-11-25 17:17)
- Re: Re: 文字列操作関数中のIF文について (MTA, 2011-11-26 18:47)
-
Re: 文字列操作関数中のIF文について
(Jiro123, 2011-11-25 17:17)