過去の桐井戸端BBS (桐ver.9)
23303 コマンド「if」の条件の書き方がよくわからない ステラ 2003/11/12-15:17
お久しぶりです。

if... else if...else endを使って、数値型[コード]から種類ごとに分類し、
それぞれに処理をしたいのですが、ifの条件の書き方がおかしいのかうまくいきません。

=============
イベントメインで行っている変数宣言は省略してあります。
  &確認----文字列

if (1100000<[コード]<1110000)
  &確認="分類1"
else if (1110000<[コード]<1120000)
  &確認="分類2"
else if (2100000<[コード]<2200000)
  &確認="分類3"
else
  &確認="その他"
end
==============
動作確認のために変数を作り動かしてみましたが、&確認はすべて分類1になって返ってきます。

項目名[コード]をそのまま使ったのがいけないのかと思い、
数値,&CD を宣言し、ソース値取得で[コード]の値を&CDにとりだし、ifの条件のなかの[コード]を&CDに置き換えてやってみましたが
結果は同じでした。

途中のelse if(分類2、3の分)をなしにして、elseのみで動かしても、
最初の条件に当てはまらなくてもすべて分類1で返ってきます。
この時、&CDは確かにelseに分類される数値になっています。

どなたか、間違いを教えてください。
23305 Re:コマンド if の条件の書き方 うにん 2003/11/12-15:33
記事番号23303へのコメント

> if (1100000<[コード]<1110000)

こういう書き方は「比較式」でしかできません。
ifの中は「条件式」なので
1100000<[コード] .and [コード]<1110000
になります。

>どなたか、間違いを教えてください。

1100000<[コード]<1110000
だと左から順に計算されて
1100000<[コード]
が必ず1か0になるので
(1か0)<1110000
は常に真になってしまいます。

23306 Re:納得しました。 ステラ 2003/11/12-15:51
記事番号23305へのコメント
うにんさん、いつもありがとうございます。

>1100000<[コード]<1110000
>だと左から順に計算されて
>1100000<[コード]
>が必ず1か0になるので
>(1か0)<1110000
>は常に真になってしまいます。

とっても納得しました。ありがとうございます。

戻る