過去の桐井戸端BBS (桐ver.5)
9987 通貨項目の値を文字列変数に代入するときに、未定義なら""、ゼロなら0を代入したい chisok 2001/02/28-17:56
はじめまして

DOS/VのDOS窓で、桐ver.5を使用しています。

表定義で [/] H:表題等で未定義項目値処理を
1:ゼロ と指定してある表の通貨項目 [A]の値を
文字列変数 &money に代入させたいのですが

  [A]項目の値が未定義の場合

    &money = #str(#項目属性(&対象Fl,0)) だと結果、値は "0"

  [A]項目の値が 0(ゼロ)の場合

    &money = #str(#項目属性(&対象Fl,0)) だと結果、値は "0"

また

  [A]項目の値が未定義の場合

&money = #cond(#項目属性(&対象Fl,0),#str(#項目属性(&対象Fl,0)),1,"")

だと結果値は ""

  [A]項目の値が 0(ゼロ)の場合は

&money = #cond(#項目属性(&対象Fl,0),#str(#項目属性(&対象Fl,0)),1,"")

だと結果値は ""

になりますが


  [A] → 0(ゼロ)であれば &money → 0(ゼロ)

  [A] → 未定義値であれば &money → ""

と取得したいのですが、何か良い方法があるでしょうか?

どなたか教えてください。

9988 Re:通貨項目の値を文字列変数に代入 宮城 2001/02/28-18:57
記事番号9987へのコメント
未定義項目処理が「ゼロ」では、未定義項目が存在しないことになります。

まず、「未定義」にしたうえで、

#条件選択([A]="","",1,#文字列([A])


9989 項目値のゼロ・未定義の判別 悲しげ 2001/02/28-21:19
記事番号9987へのコメント
どもっ、chisokさん

この件は過去何度か出ておりますが、その所在を探すのが面倒なので(^^;)
また書きます。

#cond(#横件数([A],[A]),…… で判断します。

この返り値が>0ならばゼロ有りで、そうでなければ未定義と見なせます。
ちなみに、この方法は(C)Ogoだったと思います。
9993 Re:通貨項目の値を文字列変数に代入 chisok 2001/03/01-09:11
記事番号9988へのコメント

>未定義項目処理が「ゼロ」では、未定義項目が存在しないことに
>なります。

早速のお答えありがとうございます。

>まず、「未定義」にしたうえで、
>#条件選択([A]="","",1,#文字列([A])

未定義項目処理を「未定義」にすると、[A]項目を利用した他の計算項目に影響するので避けたかったのですが、
やはり他の計算項目の書き方を

#cond([A],[A],1,0) + [B]

というように、すべて書き直すしかないのでしょうか
なにはともあれ有り難うございます。

9994 Re:項目値のゼロ・未定義の判別 chisok 2001/03/01-09:31
記事番号9989へのコメント
>どもっ、chisokさん

有り難うございます。

>この件は過去何度か出ておりますが、その所在を探すのが面倒なので(^^;)
>また書きます。

探し方が的はずれだったのか、性格が適当なせいなのか見つけることができず先に質問を投げてしまいました。
すいません。

>#cond(#横件数([A],[A]),…… で判断します。
>
>この返り値が>0ならばゼロ有りで、そうでなければ未定義と見なせます。
>ちなみに、この方法は(C)Ogoだったと思います。

大切なことを書くの忘れましたが、一括処理での質問です
(大変失礼しました)

#横件数って一括処理で使えるんですか?
(いま手元にリファレンスがないので確認できません & 勉強不足)

いずれにしても有り難うございます。

9997 Re:項目値のゼロ・未定義の判別 悲しげ 2001/03/01-11:02
記事番号9994へのコメント
どもっ、chisokさん

>大切なことを書くの忘れましたが、一括処理での質問です
>(大変失礼しました)
>#横件数って一括処理で使えるんですか?

ここの記述の意図が(?_?)ですが、一般論として云うと、#横件数と云うのは「関数」でして、
当然ながら、一括処理の「コマンド」ではありません。
ただし、関数を一括処理コマンドの中で使うことはできます。(^^;)

「一括処理」の中で変数&moneyに代入したいとのことであれば、

&money=#cond(#横件数([a],[a]),[a])

ではどうでしょう?
※ &money=#cond(#横件数([a],[a])>0,[a],1,"")
  &money=#cond(#横件数([a],[a])=0,"",1,[a]) と書いても結果は同じ。


もし、ゼロ値に限らず値が入っていさえすれば&moneyにゼロを代入したいのであれば
(そんなことは無いと思うが)次のようにするとか。

&money=#cond(#横件数([a],[a]),0)
10002 Re:項目値のゼロ・未定義の判別 chisok 2001/03/01-11:50
記事番号9997へのコメント
>どもっ、chisokさん

かさねがさね、有り難うございます。

>>大切なことを書くの忘れましたが、一括処理での質問です
>>(大変失礼しました)
>>#横件数って一括処理で使えるんですか?
>
>ここの記述の意図が(?_?)ですが、一般論として云うと、#横件数と云うの
>は「関数」でして、当然ながら、一括処理の「コマンド」ではありません。
>ただし、関数を一括処理コマンドの中で使うことはできます。(^^;)
>

とんちんかんな記述でした、失礼しました。
#表引き関数のようにどこそこでは使えるが、一括処理では使えないという類のニオイを
#横件数関数に感じ取ってしまったのです。

>「一括処理」の中で変数&moneyに代入したいとのことであれば、
>
>&money=#cond(#横件数([a],[a]),[a])
>
>ではどうでしょう?
>※ &money=#cond(#横件数([a],[a])>0,[a],1,"")
>  &money=#cond(#横件数([a],[a])=0,"",1,[a]) と書いても結果は同じ。
>
>
>もし、ゼロ値に限らず値が入っていさえすれば&moneyにゼロを代入したいの
>であれば(そんなことは無いと思うが)次のようにするとか。
>
>&money=#cond(#横件数([a],[a]),0)

有り難うございます、早速試したら上記のような形でできました。

が、

&money = #str(#cond(#横件数(&対象Fl,&対象Fl) > 0, #項目属性(&対象Fl,0),1,""))
                ↑   ↑
は、やっぱりだめでした。    ↑   ↑
(ここら辺が自分のとんちんかんなところかもしれません。)

未定義値項目処理を「未定義」にして関連する計算項目を書き直す方法で解決しました。

本当に、有り難うございます。

10009 Re:項目値のゼロ・未定義の判別 悲しげ 2001/03/01-17:02
記事番号10002へのコメント
なるほど、判定の対象とする項目が可変であって、項目名の指定を項目番号変数によって取り扱いたいってことが
前提だった訳ですね。
確かに、#横件数のパラメータは項目名でなければならないようですから、この方法では困難でしょうね。
ってことはやはり、表定義で未定義の扱いを指定するしかないのかもしれませんね。残念でした。

ps:試してないけど
#横件数(#項目属性(&変数,1),#項目属性(&変数,1))
なんてのはどうかな? 多分駄目でしょうけど。(^^;)
10017 Re:項目値のゼロ・未定義の判別 chisok 2001/03/02-12:43
記事番号10009へのコメント
未定義値項目処理を「未定義」に設定して解決しました。

有り難うございました。
またよろしくお願いします。

戻る