Previous: year 西暦年 Up: mcal Next: Index MCMD2
MCMD2 : mcal : 型変換

4.107 型変換

書式:s2n($str$), n2s($num$), n2b($num$), s2n($str$), s2d($str$), s2t($str$) s2b($str$), d2s($date$), d2t($date$), t2s($time$), t2d($time$), b2n($bool$), b2s($bool$)

型変換を行う関数群。 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: 乱数の固定長化

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

例2: 真偽パターン

項目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
Previous: year 西暦年 Up: mcal Next: Index MCMD2