Previous: バージョン1.0からの変更点 Up: バージョン1.0からの変更点 Next: 仕様が変更されたコマンド MCMD2
MCMD2 : バージョン1.0からの変更点 : 自動並べ替え機能の追加

1.1 自動並べ替え機能の追加

MCMD Ver. 1.0 では、たとえばmsumコマンドでキー項目を指定して集計する場合や、mjoinコマンドで 複数のファイルをキー項目で結合する場合、事前にmsortfコマンドを使用してキー項目を並べ替えておく 必要があった。

多くのコマンドで事前の並べ替えが必要であり、また並べ替えを忘れてもエラーになることなく 誤った結果を出力して処理を終えるため、スクリプトにバグを生みやすいという難点があった。 そこで、k=オプションでキー項目を指定するすべてのコマンドで、項目の並べ替えを自動的に行う 機能を追加したのがVer. 2.0の最大の変更点である。 どの項目で並べ替えられたのかがCSVヘッダの項目名にも追加されるため (詳細は項目の並べ替え情報参照) 、各コマンドは並べ替えが必要であるときのみ並べ替えを行う。

実行例

Ver. 1.0 での実行例

msum k=顧客 コマンドを実行する前に、msortfコマンドで顧客項目を 並べ替えておく必要があった。

$ more dat1.csv
顧客,金額
A,10
B,10
A,20
B,15
B,20
$ msortf i=dat1.csv f=顧客 | msum k=顧客 f=金額:金額合計 o=rsl1.csv
#END# kgsortf f=顧客 i=dat1.csv
#END# kgsum f=金額:金額合計 k=顧客 o=rsl1.csv
$ more rsl1.csv
顧客,金額合計
A,30
B,45

Ver. 2.0 での実行例

msumコマンドが並べ替えの要否を判断し、必要であれば自身で並べ替えるため、 msortfコマンドを省略しても正しい結果が得られる。 msumコマンドが顧客項目で並べ替えた証左として、 項目名に%0が付加されている。

$ more dat1.csv
顧客,金額
A,10
B,10
A,20
B,15
B,20
$ msum i=dat1.csv k=顧客 f=金額:金額合計 o=rsl1.csv
#END# kgsum f=金額:金額合計 k=顧客 i=dat1.csv o=rsl1.csv
$ more rsl1.csv
顧客%0,金額合計
A,30
B,45
Previous: バージョン1.0からの変更点 Up: バージョン1.0からの変更点 Next: 仕様が変更されたコマンド MCMD2