書式:s2n(), n2s(
), n2b(
), s2n(
), s2d(
), s2t(
) s2b(
), d2s(
), d2t(
), t2s(
), t2d(
), b2n(
), b2s(
)
型変換を行う関数群。 mcalでは型の自動変換は行わないため、必要なときはユーザが明示的に型変換を指定しなければならない。
n2b(s2b)関数は、1("1")を真に0("0")を偽に、それ以外をNULL値に変換する。 b2n(b2s)関数は、真は1("1")に偽は0("0")に変換する。
d2t関数は、日付型を時刻型に変換するが、そのとき時刻として12:00:00を自動的に補完する。 d2s関数は、8文字固定長文字列("yyyymmdd")に変換し、t2s関数は14文字固定長文字列("yyyymmddHHMMSS")に変換する。 日付/時刻についての詳細は「4.13日付型と時刻型」を参照のこと。
1から9999の整数乱数を発生させ、4桁固定長で出力する。 fixlen関数は整数型のデータ(ここではrandiの結果)には対応していないので、 n2s関数で文字列型に変換する必要がある。
$ more dat1.csv id 1 2 3 4 $ mcal c='fixlen(n2s(randi(1,9999,11)),4,"R","0")' a=rsl i=dat1.csv o=rsl1.csv #END# kgcal a=rsl c=fixlen(n2s(randi(1,9999,11)),4,"R","0") i=dat1.csv o=rsl1.csv $ more rsl1.csv id,rsl 1,1803 2,0684 3,0195 4,6647
項目v1,v2,v3が10異常かどうかを判定し、01のパターンを出力する。
$ more dat2.csv id,v1,v2,v3 1,10,5,7 2,5,12,11 3,3,6,2 4,14,16,11 $ mcal c='cat("",b2s(${v1}>=10),b2s(${v2}>=10),b2s(${v3}>=10))' a=rsl i=dat2.csv o=rsl2.csv #END# kgcal a=rsl c=cat("",b2s(${v1}>=10),b2s(${v2}>=10),b2s(${v3}>=10)) i=dat2.csv o=rsl2.csv $ more rsl2.csv id,v1,v2,v3,rsl 1,10,5,7,100 2,5,12,11,011 3,3,6,2,000 4,14,16,11,111