#☆コントロールブレイク処理
#--------------------------------------------------------
#===入力ファイルフォーマット
#
# 区切り文字:^
# 0 1 2 3 4 5 6 7 8 9 10
# 購入金額^予算区分^予算単位^利用者ID^書名^購入書店^資料ID^受入日^発注日^著者名^出版者
#
# 集計条件・・・予算単位ごとに、購入金額を集計
#
# 抽出条件・・・受入日が、当年度(例 2001/04/01 〜 2002/03/31)のレコードを対象
#
#===出力ファイル(図書購入データ)フォーマット [CSVファイル形式]
#
# 予算単位,購入金額
#
#*************************************************************
# (0.0) Program
#*************************************************************
&s1_init;
until ( $eofflg == 1 ) {&s2_main;}
&s3_end;
#*************************************************************
# (1.0) イニシャル処理
#*************************************************************
sub s1_init
{
$time = localtime();
print "Program Start $time¥n";
$ka_gokei = 0;
###$ysn_gokei = 0;
$eofflg = 0;
open(IN,$ARGV[0]) || die "in.dat can't open $ARGV[0] ¥n";
open(OUT,">$ARGV[1]") || die "OUT.dat can't open $ARGV[1] ¥n";
&scmn_read;
$sv_ysn_code = $ysn_code;
###$sv_ka_code = $ka_code;
}
#*************************************************************
# (2.0) メイン処理
#*************************************************************
sub s2_main
{
&s21_ysn_header; #-- 予算単位見出し
until ( ($ysn_code ne $sv_ysn_code) ||
($eofflg == 1 ) )
### {
### &s22_ka_header; #-- 課見出し
### until ( ($ka_code ne $sv_ka_code) ||
### ($eofflg == 1 ) )
{&s23_body;} #-- 明細
### &s24_ka_tail; #-- 課合計
### }
&s25_ysn_tail; #-- 予算単位合計
}
#*************************************************************
# (2.1) 予算単位見出し
#*************************************************************
sub s21_ysn_header
{
$sv_ysn_code = $ysn_code;
$sv_ka_code = $ka_code;
print "¥予¥算単位=$ysn_code¥n";
}
#*************************************************************
# (2.2) 課見出し
#*************************************************************
###sub s22_ka_header
###{
###$sv_ka_code = $ka_code;
###print ": 課=$ka_code¥n";
###}
#*************************************************************
# (2.3) 明細出力
#*************************************************************
sub s23_body
{
print " 受入日=$ur_date 金額=$ur_kin¥n";
###$ka_gokei += $ur_kin;
$ysn_gokei += $ur_kin;
&scmn_read;
}
#*************************************************************
# (2.4) 課合計
#*************************************************************
###sub s24_ka_tail
###{
###print "-------------------------------------¥n";
###print ": 課 $sv_ka_code 合計=$ka_gokei¥n";
###$ka_gokei = 0;
###}
#*************************************************************
# (2.5) 予算単位合計
#*************************************************************
sub s25_ysn_tail
{
print " ¥予¥算単位 $sv_ysn_code 合計=$ysn_gokei¥n";
$ysn_gokei = 0;
}
#*************************************************************
# (3.0) END 処理
#*************************************************************
sub s3_end
{
close(IN);
close(FOUT);
}
#*************************************************************
# (common) 共通 入力処理
#*************************************************************
sub scmn_read
{
$n = 0;
until ($n == 11) {
unless ($temp1 = <IN>) {$eofflg = 1; return;}
chomp($temp1);
$temp1 =‾ s/#.*//;
@rec = split(/¥^/,$temp1);
$n = split(/¥^/,$temp1); # リストの要素数
### print " N=$n¥n";
$ysn_code = @rec[2];
### $ka_code = @rec[1];
$ur_date = @rec[7];
$ur_kin = @rec[0];
}
### print $temp1;
}