Previous: mcal Up: mcal Next: 式の構成要素 MCMD2
MCMD2 : mcal : mcal 項目間演算

4.1 mcal 項目間演算

c=パラメータで指定した計算式で計算をおこない、a=パラメータで指定した項目名に出力する。 mcalが出力する項目は、プログラムの単純化のため、例外なく1つに限定している。 計算式の詳細は後述の「式の構成要素」を参照のこと。

書式

mcal a= c= [i=] [o=] [-assert_diffSize] [-assert_nullkey] [-assert_nullin] [-assert_nullout] [-nfn] [-nfno] [-x] [-q] [tmpPath=] [precision=] [--help] [--helpl] [--version]

パラメータ

a=

新たに計算結果の出力として追加される項目の名前を指定する。

c=

用意された関数を組み合わせて計算する式を指定する。

利用例

以下にmcalを使った簡単な例を示す。 個々の関数や演算子についての詳細は、それぞれ個別に解説を用意しているので、そちらを参照されたい。

# 入力ファイル(dat1.csv)
顧客,数量,単価
A,3,10
B,1,15
C,2,20

$ mcal c='${数量}*${単価}' a=金額 i=dat1.csv
顧客,数量,単価,金額
A,3,10,30
B,1,15,15
C,2,20,40

$ mcal c='${数量}*${単価}<=30' a=金額30以下 i=dat1.csv
顧客,数量,単価,金額30以下
A,3,10,1
B,1,15,1
C,2,20,0

$ mcal c='if(top(),${単価},#{}+${単価})' a=単価累計 i=dat1.csv
顧客,数量,単価,単価累計
A,3,10,10
B,1,15,25
C,2,20,45

シェルでの利用時の注意事項

UNIX系のOSでbashなどのシェルを利用する場合、演算子などの記号はシェルにとっても特殊な意味を持つことが多い。 例えば$記号に続く単語列はシェル変数を意味する。 一方でmcmdでは項目値を参照するために$を使っている。 そこでシェルにそれらの記号を解釈させないために、以下のようにシングルクオーツで囲む必要がある。

$ mcal c='${date}-10'

エラーメッセージ

#ERROR# unknown function or operator

このエラーメッセージが出るということは、関数もしくは演算子の指定に誤りがある。 例えば、以下のような文字列の結合関数catについてのエラーメッセージについて考える。

 $ mcal c='cat("-",1,2)'
 ERROR : unknown function or operator: cat_SNN(cat_SN) (kgcal)

「cat_SNN」のアンダーバーの前のcatは関数名を示し、その後のSNNは引数の型を示している。 Sは文字列型、Nは数字型、Dは日付型、Tは時刻型、Bは真偽型である。 3つの引数を指定しているので3文字(SNN)となっている。 すなわち、このエラーメッセージは「引数としてSNNをとるcatという名前の関数」 は登録されていないということを意味する。 以下のように2,3番目の引数を文字列型にすればよい。

 $ mcal c='cat("-","1","2")'

ここで、エラーメッセージの括弧の中は2文字(SN)となっているが、それは2番目以降のパラメータが可変個指定可能であるため、 それらの代表として1つだけ表記しているためである。

%$ mcal c='cat(${商品ID},${単価},"-")' a=商品ID-単価 i=dat1.csv o=rsl1.csv

関連コマンド

msel : 演算の結果を用いて行選択するのであればこのコマンドを使う。

Previous: mcal Up: mcal Next: 式の構成要素 MCMD2