過去の桐井戸端BBS (桐ver.8)
3580 条件選択による計算ではなく、別表定義から計算させる 川上 1999/12/3-00:00
#条件選択の数字が変わるため、別の表から数字をもってきて計算を行いたい。
3582 Re:別表の値を使って計算させる 悲しげ 1999/12/3-00:38
記事番号3580へのコメント
どもっ、川上さん、

>#条件選択の数字が変わるため、別の表から数字を
>もってきて計算を行いたい。

これだけでは何のこっちゃか雲をつかむような話ですが、
想像をたくましくして(^^;)コメントしてみます。

タイトルでは「表定義」とおっしゃっていますが、これ
は表の「項目値」のことだと思います。
同じくタイトルでは「条件選択を使わずに」とありまし
たが、やはり条件選択を使うことになると思います。

例えば、
a.tblの項目[あ]の値が1ならば、b.tblの項目[か]の値
にa.tblの[い]の値を乗じ、a.tblの項目[あ]の値が2な
らば、c.tblの項目[さ]の値にa.tblの[い]の値を乗じる
ような場合で考えますと、
#条件選択([あ]=1,#表引き([某],=,"b.tbl",[某],[か])\
     ,[あ]=2,#表引き([某],=,"c.tbl",[某],[さ])
     ,・・・・・・・・・・・・・・・・・・・\
     )*[い]
とか。

あるいは、もし一括処理でやるならば

ケース開始
ケース([あ]=1)
 編集表 "b.tbl"
 検索 [某]=某
 &変数=[か]
ケース([あ]=2)
 編集表 "c.tbl"
 検索 [某]=某2
 &変数=[さ]
・・・・・
ケース終了
編集表 "a.tbl"
行訂正 [某3]=[い]*&変数

とか

3584 Re:別表の値を使って計算させる 宮城 1999/12/3-10:51
記事番号3582へのコメント
混乱させるだけかも、といいながら余計なことを。

この手の処理の場合、やり方は二通り。一つは絞り込み(選択)、置換、
絞り込み解除か補集合。必要なだけ繰り返してください。

もう一つは、レコード1件ずつ処理。私の場合の雛形。

ジャンプ 行番号=先頭
繰り返し(.not #終端行)
 ・・・お望みのケース制御などなど・・・
 ジャンプ 行番号=次行
 (もしカウンタ用変数があったらこの前後でカウントアップしておく)
繰り返し終了

よくこれを忘れて先頭レコードしか処理されず泣きます。それから、繰り
返し・繰り返し終了、ケース開始・ケース終了のような対のコマンドは、
生産性は若干落ちますが、とにかく続けて記述し、適当にインデントをと
り、中身を記述という習慣をつけたほうが精神衛生上よろしいようです。
3598 Re:条件選択による計算ではなく、別表定義から計算させる 佐田 守弘 1999/12/4-02:10
記事番号3580へのコメント
川上さん
質問の題意が把握できないのですが、以下の様に勝手解釈をしてコメントします

●数字を参照する表
参照値.tblがあって、次の様になっているとします。
 番号  値
  1  100
  2  150
  3  300

別の表や一括処理などである値(仮に変数&nの値とします。)によって値を使い分
けたい時に、&nの値と等しい番号の参照値.tblの値を参照するとします。

●項目計算式などで使う時
この場合には表引き関数を使うのが便利ですね。
#表引き(&n,=,参照値.tbl,[番号],[値])
で、参照値の値を参照できます。

●一括処理の中で
一括処理の中でしたら、次の様にします。
 表 参照値
 検索 [番号]{=&n}
 代入 &数字=[値]

佐田守弘(KS-00119)

追伸
題意が明確でない質問の題意を推定するのも、クイズ的で面白いのですが、的を
外す可能性が高くなります。
できましたら、「どの様な目的でどの様なことをしたい」「この様にしたいが、
ここが分からない」といった事を、具体的に書いて質問される方が、的確なコメ
ントがつくと思います。

3618 ありがとうございます 川上 1999/12/5-22:26
具体的な質問の仕方が、最初なのでうまく伝わらなかったようですが、お蔭様で参考にすることができました。これか
らも宜しくお願いします。
3623 ありがとうございます 川上 1999/12/5-23:40
桐を初めて、奥深さを改めて知りました。これからも宜しくお願いします。とても参考になりました。

戻る