もとcobol屋の小山と申します。
こんな感じのデータを集計する。
9999,1,1,1,101,4,1,1;1;01;00,5555,0
9999,1,1,1,101,9,1,1;1;01;00,3255,0
9999,1,1,1,101,4,1,1;1;02;00,200,0
9999,1,1,1,101,9,1,1;1;02;00,200,0
9999,1,1,1,101,4,1,1;1;03;00,504,0
9999,1,1,1,101,9,1,1;1;03;00,504,0
9999,1,1,1,101,4,1,1;1;04;00,630,0
下記のような簡単な集計プログラムをつくってみたのですが
hinname=Hash.new()
hin_cnt=Hash.new()
# 品名テーブル読み込み
hin=open("hin.txt","r")
hin.each_line do |line|
f = line.chomp.split(/,/)
hinname[f[0]]=f[3] # 品名格納
hin_cnt[f[0]]=0 # 件数初期化
end
hin.close
# データ読み込み
inf=open("kd2.txt","r")
inf.each_line do |line|
f = line.chomp.split(/,/)
if f[5]= "9" # ある項目が '9'のとき
hin_cnt[f[7]]+=1 # カウント
end
end
inf.close
# 結果出力
$,=","
hinname.each_key do | hinno |
print hinno,hinname[hinno],hin_cnt[hinno],"\n"
end
出力結果
1;2;06;01,みかん,371,
1;2;09;00,りんご,257,
2;1;18;00,ほうれんそう,436,
.
.
結果を出力するときに hinnoでソートする方法が
ちょっと分からなかったのですがどなたかに御教示いただけると
助かります。
また、rubyの世界の模範的なプログラムをお示しいただけると
嬉しいと思います。
小山英夫 : fa8h-kym / asahi-net.or.jp