| 2020/07/11(Sat) 09:34:12 編集(投稿者) 2020/07/10(Fri) 15:07:49 編集(投稿者)
> #cond(#文字位置([],"(株)" .or #文字位置([],"(有)"),[],[],#u,1,"1") > (数値系項目なら末尾の「"1"」は「1」)
昔のDOS桐では、
比較式では、左辺右辺のどちらか一方に項目名そのものを書かなければならなかったのです。
すなわち、<項目名> <比較演算子> <値>
<項目名> ・・・ [会社名] ← 明示されていませんが、暗黙に内に指定しています。 条件が新ならば <比較演算子> ・・・ = ← これも明示されていませんが、暗黙に内に指定しています。 ↓ ↓恒真式( 1 )で、偽の場合には[会社名] + "蛇足"を返す <値> ・・・ #cond( #文字位置([会社名], "(株)" ) .or #文字位置([会社名], "(有)" ) , [会社名], 1, [会社名] + "蛇足" ) ※この式は、真の場合に[会社名]を、偽の場合に[会社名] + "蛇足" を返します。 ↑これが肝です。"蛇足" は、文字列ならば、なんでもOK。つまり、"1"でもOK、未定義値以外ならばなんでもよし。 だから数値の場合には、"蛇足" の代わりに 1 を加算しています。ゼロ以外ならばどんな値を加算しても減算してもOK。
と、実に窮屈な方法をとらないとイケなかったのです。
◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇
しかし、Win桐では、左辺右辺のどちらにも式が書けるように拡張されていて、窮屈でない自然な式が書けますよ。
すなわち、<式1> <比較演算子> <式2>
くおんたむさんの例示では
#Cond( #文字位置( [], "(株)" ), [], #文字位置( [], "(有)" ),[], 1, "" ) <> ""
<式1> ・・・ #Cond( #文字位置( [], "(株)" ), [], #文字位置( [], "(有)" ),[], 1, "" ) <比較演算子> ・・・ <> <式2> ・・・ ""
私ならば、( 条件式 ) = 1 の形を好むので次のように
( #文字位置([会社名],"(株)" ) <> 0 .or #文字位置([会社名],"(有)") <> 0 ) = 1
<式1> ・・・ ( #文字位置([会社名],"(株)" ) <> 0 .or #文字位置([会社名],"(有)") <> 0 ) <比較演算子> ・・・ = <式2> ・・・ 1
拡張辞書順がよろしければ、
( #部分一致([会社名],"(株)", 3 ) <> 0 .or #部分一致([会社名],"(有)", 3 ) <> 0 ) = 1
<式1> ・・・ ( #部分一致([会社名],"(株)", 3 ) <> 0 .or #部分一致([会社名],"(有)", 3 ) <> 0 ) <比較演算子> ・・・ = <式2> ・・・ 1
<参考> 「フォームアプリケーション教書 第2部 21.6 比較式の左辺と右辺の両方に計算式を指定する」より
桐のヘルプに非常に重要なことが[ノート]として書かれているが、それに気が付いた人は非常に少ないと思います。 以下の引用します。
【引用】「桐のヘルプ」の「データと式」→「比較式」→「仕様(比較式)」 ノート ・ワイルドカード(*、×)を使うときは、左辺か右辺の一方が項目名でなければいけません。 ・ワイルドカードを含む文字列を検索するときは、かならず検索する文字列を二重引用符でくくってください。 たとえば文字列中の「×」を検索する場合は「"×"」としなければいけません。 ・旧バージョンでは、左辺か右辺のいずれかが項目名でなければいけませんでしたが、本バージョンからは、左辺と右辺の両方に計算式を指定できます。 ・つぎの関数を使うときは、左辺か右辺の一方が項目名でなければいけません。 #未定義 #定義 #削除
さて、この[ノート]で、最も重要なのは次の文言です。
・旧バージョンでは、左辺か右辺のいずれかが項目名でなければいけませんでしたが、本バージョンからは、左辺と右辺の両方に計算式を指定できます。
実は、この文言の[旧バージョン]とはDOS桐のことです。そして[本バージョン]とはWin桐のことです。 つまり、「Win桐からは、比較式の左辺と右辺の両方に計算式を指定できます」という意味です。
|