過去の桐井戸端BBS (桐ver.8)
17439 一括処理の中で項目属性変更を使って計算式を設定したい katsuyoshi 2002/10/03-22:09
一括で自動作成される.Tblの行毎の合計を出したいのですが
月計の項目に入れる計算方法を教えてください。
毎月作成するたびに項目数の増減や項目名の変更があります。
また対象.Tblは.cmdファイルを開くたびに新規作成され上書きになりますので.Tblに計算式設定はできません。
一括処理記述の中で項目属性変更2の項目属性定義2あたりで設定できないでしょうか。
ちなみに項目属性変更2を使ってデフォルトの列幅を
次のようにして変更しています。ご指導ください。

&実行リターン=1
項目属性変更2 変更,&実行リターン,{,,c400}
17441 Re:項目置換を使うのが順当では? Ogo 2002/10/03-22:23
記事番号17439へのコメント

毎回変わる内容ならば、常識的に言えば、
項目置換を使うのが順当だと思うのですが...

17442 Re:一括で項目属性変更で計算式を使いたい natsu 2002/10/03-23:57
記事番号17439へのコメント
一覧表印刷の方は解決されたとのことですので、横合計の方を・・・
3行の一括処理です

さて、月集計表に横合計用の項目はすでに一括処理中で
追加済みの前提でいきます
新しく追加した項目を[配達先合計]としておきます
(これを最終項目にしてください)

月集計表.tblで実際の配達本数データは、4番目の項目以降に入力されているはずです
以前書き込んだ一括処理を使用して月集計表.tblであれば、未定義値は0で
定義されているはずですから特に問題はないと思います

*******************************
繰り返し &実行リターン=4,#項目数-1
置換 [配達先合計]=[配達先合計]+#項目属性( &実行リターン , 0 )
繰り返し終了
*******************************


17443 一括で生成する表の横合計の計算 佐田 守弘 2002/10/04-00:00
記事番号17439へのコメント
katsuyoshiさん
質問文章だけでは、意味が分かりにくい部分がありますが、
#17436、#17437の内容から、質問の主旨は次の通りに理解させて頂きました。これで宜しいか御確認下さい。
1)ある元の表から一括処理で集計表の様なものを自動出力している
2)自動出力する表は、項目名と項目数がその度に異なる
3)項目名と項目数が不定の表に対して、横合計を計算したい

以上の中で、項目名と項目数が不定である表に対して、どの様に
横合計を計算する計算式を記述するか、が質問の主旨と受け止めます。

●項目名の指定
通常、項目名は[<項目名>]の様に記述しますが、いくつかのコマンドでは
項目名の項目番号で指定できる場合があります。
また、計算式の中に項目番号を指定して項目値を参照する場合には、
#項目属性(<項目番号>,0) が使えます。

●「#横合計(<項目名1>,<項目名2>)」関数の場合には
横合計は、この関数を使って求めるのですが、項目名は直接記述する必要があり、上記の方法が使えません。

●行訂正コマンドで1行ずつ計算して書き込んで行く
そこで、一括処理を使い、次の様な方法で1行ずつ書き込んで行く方法で行います。
前提として、[合計]の項目が最終項目で、ここに1番目から直前までの項目の合計を書き込むものとします。
また各項目は未定義値がないものとします(ある場合には0扱いとしておく)。

変数宣言 整数{&最終項目,&i}
表 <表名称>
代入 &最終項目=#項目数
繰り返し (.not #終端行)
 行訂正 [合計]=0
 繰り返し &i=1,&最終項目-1
  行訂正 [合計]=[合計]+#項目属性(&i,0)
 繰り返し終了
 ジャンプ 行番号=+1
繰り返し終了
終了 表

佐田守弘(KS-00119)
17445 バッチリでした。感謝!感謝!です katsuyoshi 2002/10/04-02:12
記事番号17442へのコメント
natsuさん

>一覧表印刷の方は解決されたとのことですので、横合計の方を・・・
>3行の一括処理です
>
>さて、月集計表に横合計用の項目はすでに一括処理中で
>追加済みの前提でいきます
>新しく追加した項目を[配達先合計]としておきます
>(これを最終項目にしてください)
>
>月集計表.tblで実際の配達本数データは、4番目の項目以降に
>入力されているはずです
>以前書き込んだ一括処理を使用して月集計表.tblであれば、未定義値は0で定
>義されているはずですから特に問題はないと思います
>
>*******************************
>繰り返し &実行リターン=4,#項目数-1
>置換 [配達先合計]=[配達先合計]+#項目属性( &実行リターン , 0 )
>繰り返し終了
>*******************************
>
natsuさん ありがとうございました。
感謝!感謝!です。
うたた寝をしてしまい目が覚めて気になり覗いてみたらもう回答が入っており興奮しながら修正をしました。
感激でした。
尚、配達先合計の項目はは配達本数データ項目のの前に作りましたので
繰り返し &実行リターン=4,#項目数-1の-1は削除しました。
バッチリでした。
今回の件で初めて一括処理のすばらしさと難しさをよーく教えて頂きました。
またいろんなことを学ばせて頂きました。
これを糧とさせて頂きこれから自分なりにがんばりますのでこれからも
いろいろとお世話になりますがよろしくお願い致します。
ありがとうございました。

17456 ありがとうございました katsuyoshi 2002/10/07-13:32
記事番号17443へのコメント
佐田さん ありがとうございました。

>変数宣言 整数{&最終項目,&i}
>表 <表名称>
>代入 &最終項目=#項目数
>繰り返し (.not #終端行)
> 行訂正 [合計]=0
> 繰り返し &i=1,&最終項目-1
>  行訂正 [合計]=[合計]+#項目属性(&i,0)
> 繰り返し終了
> ジャンプ 行番号=+1
>繰り返し終了
>終了 表
>
集計の方法は行集計しか頭に浮かばなかったのですが
一括で一行づつけ違算してゆく方法があるとは知りませんでした。
今回は集計結果を代入する項目が集計される項目の先頭に
作りましたのでnatsuさんの方法でやらせて頂きました。
いろんな表を作成するに一番最後に合計行を作ることの方が
多くありますのでその節は利用させていただきます。
きっとその時また質問することになると思いますが宜しくお願いいたします。
ありがとうございました。

戻る