home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 2001 December (DVD)
/
VPR0112A.ISO
/
OLS
/
FSTAT
/
fstat.lzh
/
lib
/
main.pl
< prev
next >
Wrap
Text File
|
2001-08-29
|
35KB
|
1,117 lines
;#+------------------------------------------------------------------------
;#|efStat
;#|・愠ーイマ・。シ・チ・
;#+------------------------------------------------------------------------
if (($P{PASS} ne $Pass) && ($DoPass)) {
print "<CENTER><P><B>[・ィ・鬘シ]</B>・ム・ケ・。シ・ノ、ャーテラ、キ、゙、サ、ヌ、キ、ソ。」</P></CENTER>\n";
&html_tail;
exit(1);
}
;### キラサササエヨツャトウォサマ
$CPU_start = (times)[0] if ($DoPutBenchmark);
### ・ウ。シ・ノハムエケヘム・ニ。シ・ヨ・、ノ、゚ケ、
$TABLE{'agent'} = &func::LoadTable('./lib/table/agent.tbl');
$TABLE{'cctld'} = &func::LoadTable('./lib/table/cctld.tbl');
$TABLE{'gtld'} = &func::LoadTable('./lib/table/gtld.tbl');
$TABLE{'jpdomain'} = &func::LoadTable('./lib/table/jpdomain.tbl');
$TABLE{'tinami'} = &func::LoadTable('./lib/table/tinami.tbl');
foreach $filename (@filename) {
if ($filename eq '') { next; } # ".log"・ユ・。・、・ツミコ
### ・ユ・。・、・、ェ。シ・ラ・
unless (open(LOG,"<${Dir_Log}${filename}.log")) {
print "<CENTER><P><B>[・ィ・鬘シ]</B>・「・ッ・サ・ケ・愠ー ( ${Dir_Log}${filename}.log ) 、ォ、ッ、ウ、ネ、ャ、ヌ、ュ、゙、サ、」<BR>、ス、ホ・ユ・。・、・、マヒワナヒツクコ゚、キ、ニ、、、、ォ。「・ム。シ・゚・テ・キ・逾マタオ、キ、、、ォ (606ヒマ666) 、ハ、ノ、ホヌァイシ、オ、、。」</P></CENTER>\n";
&html_tail;
exit(1);
}
flock(LOG,2);
### ・ラ・愠ー・鬣狆ツケヤサケ、霹タ
($SEC,$MIN,$HOUR,$DAY,$MON,$YEAR,$YOUBI,$TOTAL) = localtime(time);
### ・リ・テ・タノノ、゚ケ、爍チ・ァ・テ・ッ
chop($HEAD = <LOG>);
($LOG_ID, $LOG_SINCE{$filename}) = split(/\t/, $HEAD);
$LOG_SINCE{$filename} = &func::C62_Decode($LOG_SINCE{$filename});
if ($LOG_ID ne 'FC2') { next; }
### ウニシセ
chomp($INFO{$filename} = <LOG>);
$RANK_ALL{$filename} = &func::C62_Decode((split(/\t/, $INFO{$filename}))[1]);
### ニハフスクキラ
chomp($DAY{$filename} = <LOG>);
$RANK_DAY{$filename} = &func::C62_Decode((split(/\t/, $DAY{$filename}))[0]);
### サエヨハフスクキラ
chomp($HOUR{$filename} = <LOG>);
### ヘヒニハフスクキラ
chomp($WEEK{$filename} = <LOG>);
### スオハフスクキラ
chomp($WEEKLY{$filename} = <LOG>);
$RANK_WEEKLY{$filename} = &func::C62_Decode((split(/\t/, $WEEKLY{$filename}))[0]);
### キ鑅フスクキラ
chomp($MONTH{$filename} = <LOG>);
$RANK_MONTH{$filename} = &func::C62_Decode((split(/\t/, $MONTH{$filename}))[$MON]);
### ヌッナルハフスクキラ
chomp($YEAR{$filename} = <LOG>);
# $RANK_YEAR{$filename} = &func::C62_Decode((split(/\t/, $YEAR{$filename}))[0]);
### ・「・ッ・サ・ケ・愠ースクキラ
# イマネマーマ、ャサリト熙オ、、ニ、、、セケ
if ((defined($P{'d'})) && ($P{'d'} ne 'a')) {
if ($P{'d'} eq 'y') { $TOTAL = --$TOTAL; }
@HOUR = ('0') x 24;
while (chomp($LINE = <LOG>)) {
&Macro_Split;
($sec,$min,$hour,$day,$mon,$year,$youbi,$total) = localtime($date);
if ($TOTAL eq $total) {
++$HOUR[ $hour ];
&Macro_ProcessLine;
}
}
foreach (@HOUR) { $_ = &func::C62_Encode($_); }
$HOUR{$filename} = join("\t", @HOUR);
}
# チエ、ニノスシィ
else {
while (chop($LINE = <LOG>)) {
&Macro_Split;
&Macro_ProcessLine;
}
}
flock(LOG,8);
close(LOG);
### タク・愠ーヘム・ォ・ヲ・ソ、魘イス、キ、ニ、ェ、ッ
$COUNT_RAWLOG = 0;
### ヒスチノサ゚ヘム・・゚・テ・ソ
if ($SAMPLES == $Limit_Analyzer) {
print "<CENTER><P><B>[・ィ・鬘シ]</B>ハンク鋙。ヌス\、ャニッ、ュ。「・ラ・愠ー・鬣爨ッタゥスェホサ、キ、゙、キ、ソ。」<BR>$Limit_Analyzerキ、゙、ヌ、ホ・愠ー、キ、ォス靉、ヌ、ュ、ハ、、、隍ヲ、ヒ、ハ、テ、ニ、、、゙、ケ。」<BR>ヒマ。「・ラ・愠ー・鬣爨ャヒス\チキ、゙、キ、ソ。」ソシケ、ハフ萃熙ヌ、ケ、ホ、ヌ。「、シ、メコ錡ヤ、ヒ、エマ「ヘ昀シ、オ、、。」</P></CENTER>\n";
&html_tail;
exit(1);
}
}
sub Macro_Split {
($num, $date, $host, $agent, $ref, $screen) = split(/\t/, $LINE);
$num = &func::C62_Decode($num);
$date = &func::C62_Decode($date);
$host =~ tr/A-Z/a-z/;
$ref = &func::URLdecode($ref);
&jcode::convert(\$ref, 'euc', '', 'z');
&jcode::tr(\$ref, '」ー-」ケ」チ-」レ」-」奛。', '0-9a-za-z ');
$ref = &func::URLencode($ref);
}
sub Macro_ProcessLine {
### ーネヨソキ、キ、、・愠ー、ホオュマソニサ
$now = $date if ($SAMPLES == 0);
### タク・愠ー、霹タ
if (($P{MODE} eq 'rawlog') || ($P{MODE} eq 'all') || ($P{MODE} eq 'solo_rawlog') || ($P{MODE} eq 'solo_all')) {
&Macro_CountRawlog() if ($COUNT_RAWLOG < $Limit_Log);
}
### サイセネクオナキラ, TINAMI・ォ・ニ・エ・ハャタマ, Surfers Paradiceハャタマ
&Macro_CountRef() if (($P{MODE} eq 'ref') || ($P{MODE} eq 'all') || ($P{MODE} eq 'solo_analyze') || ($P{MODE} eq 'solo_all'));
### ・ロ・ケ・ネフセナキラ, ケメハャタマ, ケ筵ノ・皈、・ャタマ
&Macro_CountHost() if (($P{MODE} eq 'host') || ($P{MODE} eq 'all') || ($P{MODE} eq 'solo_analyze') || ($P{MODE} eq 'solo_all'));
### ・ヨ・鬣ヲ・カナキラ, ・ヨ・鬣ヲ・カハャタマ, ・ケ・ッ・遙シ・
&Macro_CountAgent() if (($P{MODE} eq 'ua') || ($P{MODE} eq 'all') || ($P{MODE} eq 'solo_analyze') || ($P{MODE} eq 'solo_all'));
### ・ケ・ッ・遙シ・
&Macro_CountScreen() if (($P{MODE} eq 'screen') || ($P{MODE} eq 'all') || ($P{MODE} eq 'solo_analyze') || ($P{MODE} eq 'solo_all'));
### ・オ・ラ・・ー、キ、ソ・「・ッ・サ・ケ・愠ー、ホチ暠
$SAMPLES++;
### ーネヨクナ、、・愠ー、ホオュマソニサ
$old = $date;
}
### スクキラキイフ、ス。シ・ネ
### マ「チロヌロホス、ケ、チー、ヒノャヘラ、ハセヤネキ、ニ、ェ、ッ
### ノヤヘラ、ヒ、ハ、テ、ソマ「チロヌロホス、ケ、
if (($P{MODE} eq 'count') || ($P{MODE} eq 'all')) {
#チ晥逾鬣ュ・ー
@rank_all = &func::MakeList(\%RANK_ALL, \0);
$COUNT_ALL = &func::CalcSum(values(%RANK_ALL));
undef %RANK_ALL;
#キ鋗ヨ・鬣ュ・ー
@rank_month = &func::MakeList(\%RANK_MONTH, \0);
$COUNT_MONTH = &func::CalcSum(values(%RANK_MONTH));
undef %RANK_MONTH;
#スオエヨ・鬣ュ・ー
@rank_weekly = &func::MakeList(\%RANK_WEEKLY, \0);
$COUNT_WEEKLY = &func::CalcSum(values(%RANK_WEEKLY));
undef %RANK_WEEKLY;
#ヒワニ・鬣ュ・ー
@rank_day = &func::MakeList(\%RANK_DAY, \0);
$COUNT_DAY = &func::CalcSum(values(%RANK_DAY));
undef %RANK_DAY;
}
if (($P{MODE} eq 'ref') || ($P{MODE} eq 'all') || ($P{MODE} eq 'solo_analyze') || ($P{MODE} eq 'solo_all')) {
while (($key, $value) = each(%REF)) {
foreach (@Complete_URL) {
if ($key =~ /$$_[0]/) {
$REF{"<B>[User]</B> $$_[1]"} += $value;
delete $REF{$key};
last;
}
}
}
@ref = &func::MakeList(\%REF, \$Limit_Ref);
$COUNT_REF = &func::CalcSum(values(%REF)); #シォ・オ・、・ネニ篏イセネソ
undef %REF;
@ref_own = &func::MakeList(\%REF_OWN, \0);
$COUNT_OWN = &func::CalcSum(values(%REF_OWN)); #シォ・オ・、・ネニ篏イセネソ
undef %REF_OWN;
@ref_search = &func::MakeList(\%REF_SEARCH, \$Limit_Search);
$COUNT_SEARCH = &func::CalcSum(values(%REF_SEARCH)); #・オ。シ・チ・ィ・ク・ホ・ュ。シ・。シ・ノチ暠
undef %REF_SEARCH;
#・オ。シ・チ・ィ・ク・ォ、鯱隍ソソ
@ref_search_share = &func::MakeList(\%REF_SEARCH_SHARE, \0);
$COUNT_SEARCH_SHARE = &func::CalcSum(values(%REF_SEARCH_SHARE));
$COUNT_TN_ = $REF_SEARCH_SHARE{'TINAMI'}; #TINAMI、ォ、鯱隍ソソ
$COUNT_SP_ = $REF_SEARCH_SHARE{'Surfers Paradice'}; #SP、ォ、鯱隍ソソ
undef %REF_SEARCH_SHARE;
@ref_tinami = &func::MakeList(\%REF_TINAMI, \$Limit_Tinami);
$COUNT_TN = &func::CalcSum(values(%REF_TINAMI)); #TINAMI、ホ・ュ。シ・。シ・ノチ暠
undef %REF_TINAMI;
@ref_sp = &func::MakeList(\%REF_SP, \$Limit_Sp);
$COUNT_SP = &func::CalcSum(values(%REF_SP)); #SP、ホ・ュ。シ・。シ・ノチ暠
undef %REF_SP;
}
if (($P{MODE} eq 'host') || ($P{MODE} eq 'all') || ($P{MODE} eq 'solo_analyze') || ($P{MODE} eq 'solo_all')) {
@host = &func::MakeList(\%HOST, \$Limit_Host);
undef %HOST;
@host_dm = &func::MakeList(\%HOST_DM, \$Limit_Domain);
$COUNT_JP = $HOST_DM{'jp'};
$COUNT_US = $HOST_DM{'us'};
undef %HOST_DM;
@host_dm_jp = &func::MakeList(\%HOST_DM_JP, \$Limit_Jp);
undef %HOST_DM_JP;
@host_dm_us = &func::MakeList(\%HOST_DM_US, \$Limit_Us);
undef %HOST_DM_US;
}
if (($P{MODE} eq 'ua') || ($P{MODE} eq 'all') || ($P{MODE} eq 'solo_analyze') || ($P{MODE} eq 'solo_all')) {
@agent = &func::MakeList(\%AGENT, \$Limit_Agent);
undef %AGENT;
@agent_ie = &func::MakeList(\%AGENT_IE, \0);
$COUNT_IE = &func::CalcSum(values(%AGENT_IE)); #IE、ホ・キ・ァ・「
undef %AGENT_IE;
@agent_nn = &func::MakeList(\%AGENT_NN, \0);
$COUNT_NN = &func::CalcSum(values(%AGENT_NN)); #NN、ホ・キ・ァ・「
undef %AGENT_NN;
@agent_os = &func::MakeList(\%AGENT_OS, \0);
$COUNT_OS = &func::CalcSum(values(%AGENT_OS)); #OS、ホ・キ・ァ・「
undef %AGENT_OS;
}
if (($P{MODE} eq 'screen') || ($P{MODE} eq 'all') || ($P{MODE} eq 'solo_analyze') || ($P{MODE} eq 'solo_all')) {
@screen = &func::MakeList(\%SCREEN, \0);
$COUNT_SCREEN = &func::CalcSum(values(%SCREEN)); #ヘューユ、ハイ靂フセォ・ヲ・ネソ
undef %SCREEN;
@screen_size = &func::MakeList(\%SCREEN_SIZE, \0);
$COUNT_SCREEN_SIZE = &func::CalcSum(values(%SCREEN_SIZE)); #ヘューユ、ハイ靂フセォ・ヲ・ネソ
undef %SCREEN_SIZE;
@screen_color = &func::MakeList(\%SCREEN_COLOR, \0);
$COUNT_SCREEN_COLOR = &func::CalcSum(values(%SCREEN_COLOR)); #ヘューユ、ハイ靂フセォ・ヲ・ネソ
undef %SCREEN_COLOR;
}
### ・ウ。シ・ノ、莊ュケ讀ユフ」、「、ハクサ昀ヒハムエケ、ケ、
&Macro_ChangeList;
### ウニシセ
if (($P{MODE} eq 'solo_rawlog') || ($P{MODE} eq 'solo_analyze') || ($P{MODE} eq 'solo_all')) {
$days = ($now-$old)/86400; #・愠ー、隍テ、ソエエヨ(ニソ)
$now = &func::MakeDate($now);
$old = &func::MakeDate($old);
print "<CENTER><TABLE BORDER=2 CELLSPACING=0 CELLPADDING=2>\n";
print "\t<TR><TH COLSPAN=4${tbc[0]}>ツミセン・愠ー・ユ・。・、・ : ${filename[0]}.log</TH></TR>\n";
print "\t<TR><TH${tbc[1]}>トエココエエヨ</TH><TD${tbc[5]}>$old 。チ $now</TD><TH${tbc[2]}>チ愠メ・テ・ネソ</TH><TD${tbc[6]}>$RANK_ALL{ $filename[0] }</TD></TR>\n";
if ($days > 0) {
$ave = sprintf("%0.2f", $SAMPLES/$days);
$days = sprintf("%0.2f", $days);
print "\t<TR><TH COLSPAN=4${tbc[8]}>$SAMPLES・「・ッ・サ・ケテ」タョ、ヒ$daysニヘラ、キ、゙、ケ。。(1ニハソカム $ave ・「・ッ・サ・ケ)</TH></TR>\n";
}
print "</TABLE></CENTER><HR>\n\n";
}
### セョ・皈ヒ・蝪シ
unless ($P{MODE} eq 'solo_rawlog') {
### ・皈ヒ・蝪シ
$colspan = 6; # ホホソ
print "<!-- セョ・皈ヒ・蝪シ -->\n<A name=menu></A>\n<CENTER><TABLE border=1 cellspacing=0 cellpadding=1${tbc[0]}>\n\t<TR><TH colspan=${colspan}><FONT size=+1>。 セョ・皈ヒ・蝪シ 。</FONT></TH></TR>\n";
if ($P{MODE} eq 'rawlog') {
&menu_rawlog;
} elsif ($P{MODE} eq 'count') {
&menu_count;
&menu_rank;
} elsif ($P{MODE} eq 'ref') {
&menu_ref;
} elsif ($P{MODE} eq 'host') {
&menu_host;
} elsif ($P{MODE} eq 'ua') {
&menu_ua;
} elsif ($P{MODE} eq 'screen') {
&menu_screen;
} elsif ($P{MODE} eq 'all') {
print "\t<TR><TH colspan=${colspan}${tbc[0]}>「」タク・愠ー「」</TH></TR>\n";
&menu_rawlog;
print "\t<TR><TH colspan=${colspan}${tbc[0]}>「」、ス、ホツセスクキラ「」</TH></TR>\n";
&menu_count;
&menu_rank;
&menu_ref;
&menu_host;
&menu_ua;
&menu_screen;
} elsif (($P{MODE} eq 'solo_analyze') || ($P{MODE} eq 'solo_all')) {
&menu_count;
&menu_ref;
&menu_host;
&menu_ua;
&menu_screen;
}
print "<TR><TD colspan=${colspan}><DIV ALIGN=right><A HREF=\"$self\">[「・ ・皈ヒ・蝪シ、ヒフ皃]</A></DIV></TD></TR></TABLE></CENTER><HR>\n\n";
}
### タク・愠ー
if (($P{MODE} eq 'rawlog') || ($P{MODE} eq 'all') || ($P{MODE} eq 'solo_rawlog') || ($P{MODE} eq 'solo_all')) {
### タク・愠ー、ホ・ニ。シ・ヨ・
print "<CENTER>\n";
foreach $filename (@filename) {
if (defined($RAWLOG{$filename})) {
print "<A NAME=rawlog_${filename}></A>\n<TABLE border=1 cellspacing=0 cellpadding=1${tbc[0]}><TR><TD><A HREF=\"#menu\"><B><FONT size=+1>タク・愠ー ($filename.log)</FONT> / コヌソキ$Limit_Logキ</B></A></TD></TR><TR><TD><PRE>\n";
print $RAWLOG{$filename};
print "</PRE></TD></TR></TABLE><BR>\n";
}
}
print "</CENTER>\n";
}
### ・ォ・ヲ・ネスクキラ
if (($P{MODE} eq 'count') || ($P{MODE} eq 'all') || ($P{MODE} eq 'solo_analyze') || ($P{MODE} eq 'solo_all')) {
print "<!-- ・ォ・ヲ・ネソクキラ -->\n<CENTER>\n";
print "<!-- ニハフスクキラ -->\n<A name=day></A>\n";
&Macro_PutTable_b(0, $koumoku{'day'}, \%DAY);
undef %DAY;
print "\n\n<BR>\n\n";
print "<!-- スオハフスクキラ -->\n<A name=weekly></A>\n";
&Macro_PutTable_b(0, $koumoku{'weekly'}, \%WEEKLY);
undef %WEEKLY;
print "\n\n<BR>\n\n";
print "<!-- キ鑅フスクキラ -->\n<A name=month></A>\n";
&Macro_PutTable_b(0, $koumoku{'month'}, \%MONTH);
undef %MONTH;
print "\n\n<BR>\n\n";
print "<!-- サエヨツモハフスクキラ -->\n<A name=hour></A>\n";
&Macro_PutTable_b(2, $koumoku{'hour'}, \%HOUR);
undef %HOUR;
print "\n\n<BR>\n\n";
print "<!-- ヘヒニハフスクキラ -->\n<A name=week></A>\n";
&Macro_PutTable_b(2, $koumoku{'week'}, \%WEEK);
undef %WEEK;
print "\n\n<BR>\n\n";
print "<!-- ヌッナルハフスクキラ -->\n<A name=year></A>\n";
&Macro_PutTable_b(0, $koumoku{'year'}, \%YEAR);
undef %YEAR;
print "\n</CENTER><BR>\n\n";
unless (($P{MODE} eq 'solo_analyze') || ($P{MODE} eq 'solo_all')) {
print "<!-- ・オ・、・ネニ筵鬣ュ・ー -->\n<A name=rank></A>\n<CENTER><TABLE border=0 cellpadding=4><TR><TD valign=top>\n";
&Macro_PutTable_a(0, 'チ晥逾鬣ュ・ー', '・レ。シ・クフセ', $COUNT_ALL, '', 0, 0, \@rank_all);
undef @rank_all;
print "</TD><TD valign=top>\n";
&Macro_PutTable_a(0, 'キ鋗ヨ・鬣ュ・ー', '・レ。シ・クフセ', $COUNT_MONTH, '', 0, 0, \@rank_month);
undef @rank_month;
print "</TD></TR><TR><TD valign=top>\n";
&Macro_PutTable_a(0, 'スオエヨ・鬣ュ・ー', '・レ。シ・クフセ', $COUNT_WEEKLY, '', 0, 0, \@rank_weekly);
undef @rank_weekly;
print "</TD><TD valign=top>\n";
&Macro_PutTable_a(0, 'ヒワニ・鬣ュ・ー', '・レ。シ・クフセ', $COUNT_DAY, '', 0, 0, \@rank_day);
undef @rank_day;
print "</TD></TR></TABLE></CENTER><BR>\n\n";
}
}
### サイセネクオキマ
if (($P{MODE} eq 'ref') || ($P{MODE} eq 'all') || ($P{MODE} eq 'solo_analyze') || ($P{MODE} eq 'solo_all')) {
print "<!-- サイセネクオ -->\n<A name=ref></A>\n<CENTER>\n";
&Macro_PutTable_a(0, 'サイセネクオナキラ', 'サイセネクオURL', $COUNT_REF, '', 0, $Limit_Ref, \@ref);
undef @ref;
print "</CENTER><BR>\n\n";
print "<!-- ・オ・、・ネニ箍ワニーハャタマ -->\n<A name=ref_own></A><CENTER>\n";
&Macro_PutTable_a(2, '・オ・、・ネニ箍ワニーハャタマ', 'ーワニー、ホニ篶', $COUNT_OWN, 'シォ・オ・、・ネニ笋ェシォ・オ・、・ネニ', $COUNT_OWN, 0, \@ref_own);
undef @ref_own;
print "</CENTER><BR>\n\n";
print "<!-- ・オ。シ・チ・ィ・ク・キラ -->\n<CENTER><TABLE border=0 cellpadding=8><TR><TD valign=top>\n<A name=search_share></A>\n";
&Macro_PutTable_a(2, '・オ。シ・チ・ィ・ク・キ・ァ・「', 'フセチー', $COUNT_SEARCH_SHARE, '・オ。シ・チ・ィ・ク・ォ、', $COUNT_SEARCH_SHARE, 0, \@ref_search_share);
undef @ref_search_share;
print "\n</TD><TD valign=top>\n<A name=search_key></A>\n";
&Macro_PutTable_a(0, '・オ。シ・チ・ィ・ク・ャタマ', 'ク。コ。シ・ノ(ウオササ)', $COUNT_SEARCH, '', 0, $Limit_Search, \@ref_search);
undef @ref_search;
print "\n</TD></TR></TABLE></CENTER>\n\n";
print "<CENTER><TABLE border=0 cellpadding=8><TR><TD valign=top>\n<A name=tinami></A>\n";
&Macro_PutTable_a(1, 'TINAMIハャタマ', 'ク。コ。シ・ノ', $COUNT_TN, 'TINAMI、ォ、', $COUNT_TN_, $Limit_Tinami, \@ref_tinami);
undef @ref_tinami;
print "\n</TD><TD valign=top>\n<A name=sp></A>\n";
&Macro_PutTable_a(1, 'Surfers Paradiceハャタマ', 'ク。コ。シ・ノ', $COUNT_SP, 'SP、ォ、', $COUNT_SP_, $Limit_Sp, \@ref_sp);
undef @ref_sp;
print "\n</TD></TR></TABLE></CENTER><BR>\n\n";
}
### ・ロ・ケ・ネキマ
if (($P{MODE} eq 'host') || ($P{MODE} eq 'all') || ($P{MODE} eq 'solo_analyze') || ($P{MODE} eq 'solo_all')) {
print "<!-- ・ノ・皈、・キラ -->\n<CENTER><TABLE border=0 cellpadding=8><TR><TD valign=top>\n<A name=host></A>\n";
&Macro_PutTable_a(0, '・ノ・皈、・フナキラ', '・ノ・皈、・', $SAMPLES, '', 0, $Limit_Host, \@host);
undef @host;
print "\n</TD><TD valign=top>\n<A name=domain></A>\n";
&Macro_PutTable_a(0, 'ケメハフナキラ', 'ケメ (ccTLD)', $SAMPLES, '', 0, $Limit_Domain, \@host_dm);
undef @host_dm;
print "\n\n<BR>\n\n<A name=jp></A>\n";
&Macro_PutTable_a(2, 'ケ筵ノ・皈、・キラ', 'ツ2・・ル・・ノ・皈、・', $COUNT_JP, 'ニヒワ、ォ、', $COUNT_JP, 0, \@host_dm_jp);
undef @host_dm_jp;
print "\n\n<BR>\n\n<A name=us></A>\n";
&Macro_PutTable_a(2, 'ハニケノ・皈、・キラ', 'スツーチネソ・ (gTLD)', $COUNT_US, 'ハニケォ、', $COUNT_US, 0, \@host_dm_us);
undef @host_dm_us;
print "\n</TD></TR></TABLE></CENTER><BR>\n\n";
}
### ・ヨ・鬣ヲ・カキマ
if (($P{MODE} eq 'ua') || ($P{MODE} eq 'all') || ($P{MODE} eq 'solo_analyze') || ($P{MODE} eq 'solo_all')) {
print "<!-- ・ヨ・鬣ヲ・カナキラ -->\n<CENTER><TABLE border=0 cellpadding=8><TR><TD valign=top>\n<A name=ua></A>\n";
&Macro_PutTable_a(0, '・ヨ・鬣ヲ・カナキラ', '・ィ。シ・ク・ァ・ネフセセホ', $SAMPLES, '', 0, $Limit_Agent, \@agent);
undef @agent;
print "\n</TD><TD valign=top>\n<A name=share_ie></A>\n";
&Macro_PutTable_a(2, 'IEニアサホ、ホ・キ・ァ・「', 'IE・ミ。シ・ク・逾', $COUNT_IE, 'IEチ暠', $COUNT_IE, 0, \@agent_ie);
undef @agent_ie;
print "\n\n<BR>\n\n<A name=share_nn></A>\n";
&Macro_PutTable_a(2, 'NNニアサホ、ホ・キ・ァ・「', 'NN・ミ。シ・ク・逾', $COUNT_NN, 'NNチ暠', $COUNT_NN, 0, \@agent_nn);
undef @agent_nn;
print "\n\n<BR>\n\n<A name=share_os></A>\n";
&Macro_PutTable_a(0, 'ヘムOSナキラ', 'OSシハフ(ウオササ)', $COUNT_OS, '', 0, 0, \@agent_os);
undef @agent_os;
print "\n</TD></TR></TABLE></CENTER><BR>\n\n";
}
if (($P{MODE} eq 'screen') || ($P{MODE} eq 'all') || ($P{MODE} eq 'solo_analyze') || ($P{MODE} eq 'solo_all')) {
print "<!-- イ靂フセマ -->\n<CENTER><TABLE border=0 cellpadding=8><TR><TD valign=top>\n<A name=screen></A>\n";
&Macro_PutTable_a(0, 'イ靂フセキラ', 'イ靂フセ', $COUNT_SCREEN, '', 0, 0, \@screen);
undef @screen;
print "\n</TD><TD valign=top>\n<A name=screen_size></A>\n";
&Macro_PutTable_a(0, '・オ・、・コハフナキラ', 'イ」 x スト', $COUNT_SCREEN_SIZE, '', 0, 0, \@screen_size);
undef @screen_size;
print "\n</TD><TD valign=top>\n<A name=screen_color></A>\n";
&Macro_PutTable_a(0, 'ソァソシナルハフナキラ', 'ソァソ', $COUNT_SCREEN_COLOR, '', 0, 0, \@screen_color);
undef @screen_color;
print "\n</TD></TR></TABLE></CENTER><BR>\n\n";
}
### キラサササエヨツャトスェホサ
if ($DoPutBenchmark) {
$CPU_end = (times)[0];
printf("<DIV align=right>セテネエヨ。ァ %.3f CPUノテ</DIV>\n",$CPU_end-$CPU_start);
}
;#--------------------------------------------------------------------
;#・゙・ッ・
;#--------------------------------------------------------------------
;### タク・愠ー、ホ・・ケ・ネ、釥・゙・ッ・
sub Macro_CountRawlog {
$work{'agent'} = $agent;
$work{'agent'} =~ s'^!'Mozilla/';
$work{'agent'} =~ s"\(!(.+)\)"\(compatible; MSIE $1\)";
$work{'ref'} = $ref;
$work{'ref'} =~ s'^!'http://';
$work{'date'} = &func::MakeDate($date);
if (($DoLink) && ($work{'ref'} =~ /^http/)) {
$work{'ref'} = &func::MakeLink($work{'ref'}, 2)
} else {
$work{'ref'} = &func::URLdecode($work{'ref'})
}
if ($screen eq '-') {
$work{'screen'} = '-';
} else {
split(/,/, $screen);
$_[0] = &func::C62_Decode($_[0]);
$_[1] = &func::C62_Decode($_[1]);
$_[2] = &func::C62_Decode($_[2]);
$work{'screen'} = "$_[0]x$_[1]x$_[2]";
}
$RAWLOG{$filename} .= "[$num] $work{'date'} $host $work{'screen'}\n\t$work{'agent'}\n\t$work{'ref'}\n\n";
++$COUNT_RAWLOG;
}
;### サイセネクオ、ォ・ヲ・ネ、ケ、・゙・ッ・
sub Macro_CountRef {
# ・オ。シ・チ・ィ・ク・ォ、
if ($ref =~ '^!\w+\.tinami\.com/')
{ $flag = 1; ++$REF_SEARCH_SHARE{'TINAMI'}; }
elsif ($ref =~ '\.surpara\.')
{ $flag = 2; ++$REF_SEARCH_SHARE{'Surfers Paradice'}; }
elsif ($ref =~ '^!dir\.yahoo\.')
{ $flag = 3; ++$REF_SEARCH_SHARE{'Yahoo!(Directory)'}; }
elsif (($ref =~ '^!\w+\.goo\.ne\.jp/'))
{ $flag = 4; ++$REF_SEARCH_SHARE{'goo'}; }
elsif ($ref =~ '^!\w+\.infoseek\.')
{ $flag = 5; ++$REF_SEARCH_SHARE{'Infoseek'}; }
elsif ($ref =~ '^!\w+\.msn\.')
{ $flag = 6; ++$REF_SEARCH_SHARE{'MSN'}; }
elsif ($ref =~ '^!\w+\.google\.')
{ $flag = 7; ++$REF_SEARCH_SHARE{'Google'}; }
elsif ($ref =~ '^!infonavi\.infoweb\.ne\.jp/')
{ $flag = 8; $REF_SEARCH_SHARE{'InfoNavigator'}; }
elsif ($ref =~ '^!\w+\.lycos\.')
{ $flag = 9; ++$REF_SEARCH_SHARE{'Lycos'}; }
elsif (($ref =~ '^!\w+\.fresheye\.') || ($ref =~ '^!\w+\.jplaza\.'))
{ $flag = 10; ++$REF_SEARCH_SHARE{'Fresheye'}; }
elsif ($ref =~ '^!kensaku\.org')
{ $flag = 11; ++$REF_SEARCH_SHARE{'RingRing'}; }
elsif ($ref =~ '^!\w+\.excite\.')
{ $flag = 12; ++$REF_SEARCH_SHARE{'excite'}; }
elsif ($ref =~ '^!\w+\.altavista\.')
{ $flag = 13; ++$REF_SEARCH_SHARE{'altavista'}; }
elsif ($ref =~ '^!search\.odn\.ne\.jp/')
{ $flag = 14; ++$REF_SEARCH_SHARE{'ODN'}; }
elsif ($ref =~ '^!\w+\.search\.biglobe\.ne\.jp/')
{ $flag = 15; ++$REF_SEARCH_SHARE{'Biglobe'}; }
elsif ($ref =~ '^!search\.yahoo\.')
{ $flag = 16; ++$REF_SEARCH_SHARE{'Yahoo!(Keyword)'}; }
elsif ($ref =~ '^!google\.yahoo\.')
{ $flag = 17; ++$REF_SEARCH_SHARE{'Yahoo!(Google)'}; }
# トフセ、ホURL
else {
$flag = 0;
$flg = 0;
# シォ・オ・、・ネ、ォ・チ・ァ・テ・ッ
foreach (@MySite) {
if ($ref =~ /^$_/) {
$ref =~ s/^$_//;
$ref = '/' if ($ref eq '');
++$REF_OWN{"$ref <B>>> $filename</B>"};
++$REF{'-own-'};
$flg = 1;
last;
}
}
++$REF{$ref} if ($flg == 0);
}
# ・オ。シ・チ・ィ・ク・ュ。シ・。シ・ノソカ、ハャ、ア
if ($flag > 0) {
++$REF{'-search-'};
split(/&/, $ref);
foreach $_ (@_) {
s/%20|\+|\|/ /gi; # ス靉ツョナル、ホエリキク、ヌ、ォ、ハ、ロ」ヒ
# s/%81@|%81b|\+|\|/ /gi; # ス靉ツョナル、ホエリキク、ヌ、ォ、ハ、ロ」ヒ
# TINAMI
if ($flag == 1) {
++$REF_TINAMI{$1} if (/(\w\w)=yes/ || /word=(.+)/);
++$REF_TINAMI{"[Charlotte] $1"} if (/key=(.+)/);
}
# Surfers Paradice
elsif ($flag == 2) {
++$REF_SP{$1} if ((/J=(.+)/) || (/search=(.+)/));
}
# Yahoo!
elsif ($flag == 3) {
++$REF_SEARCH{$1} if (/p=(.+)/);
++$REF_SEARCH{"<I>[Yahoo C]</I> $1"} if (/r=(.+)/);
}
# goo
elsif ($flag == 4) {
++$REF_SEARCH{$1} if (/MT=(.+)/ || /AW\w=(.+)/);
}
# infoseek
elsif ($flag == 5) {
++$REF_SEARCH{$1} if (/qt=(.+)/ || /oq=(.+)/);
}
# MSN, Biglobe
elsif (($flag == 6) || ($flag == 15)) {
++$REF_SEARCH{$1} if (/q=(.+)/ || /aq=(.+)/ || /MT=(.+)/);
}
# Google, excite, altavista
elsif (($flag == 7) || ($flag == 12) || ($flag == 13)) {
++$REF_SEARCH{$1} if (/q=(.+)/);
}
# infoweb, ODN
elsif (($flag == 8) || ($flag == 14)) {
++$REF_SEARCH{$1} if (/QueryString=(.+)/ || /OLDQUERYDISPLAY=(.+)/);
}
# lycos
elsif ($flag == 9) {
++$REF_SEARCH{$1} if (/query=(.+)/);
}
# fresheye
elsif ($flag == 10) {
++$REF_SEARCH{$1} if (/kw=(.+)/);
}
# RingRing
elsif ($flag == 11) {
++$REF_SEARCH{$1} if (/key=(.+)/);
}
# Yahoo! (search, google)
elsif (($flag == 16) || ($flag == 17)) {
++$REF_SEARCH{$1} if (/p=(.+)/);
}
}
}
# ++$REF{$ref};
}
;### ・ロ・ケ・ネフセ、ホキチシー、ェハフ、キ・ォ・ヲ・ネ、ケ、・゙・ッ・
sub Macro_CountHost {
split(/\./, $host);
if (($host eq '') || ($host eq '-')) { #'-'、キ、ォ、ハ、ォ、テ、ソ、
++$HOST_DM{'-'};
}
### FQDN
elsif ($_[$#_] =~ /[a-z]$/) {
## ccTLD
if (length($_[$#_]) == 2) {
++$HOST_DM{ $_[$#_] };
$host = "*.$_[$#_-2].$_[$#_-1].$_[$#_]";
# ニヒワ、マヌーニ、
if ($_[$#_] eq 'jp') { ++$HOST_DM_JP{$_[$#_-1]}; }
}
## gTLD
else {
++$HOST_DM{'us'};
++$HOST_DM_US{ $_[$#_] };
$host = "*.$_[$#_-1].$_[$#_]";
}
}
### IP
else {
++$HOST_DM{'ipaddr'};
$host = "$_[$#_-3].$_[$#_-2].$_[$#_-1].*";
}
++$HOST{$host};
}
;### ・ィ。シ・ク・ァ・ネフセ、ェハフ、キ・ォ・ヲ・ネ、ケ、・゙・ッ・
sub Macro_CountAgent {
### Mozzilaキマ
if ($agent =~ /^!/) {
$agent =~ '^!([\w.-]+)\s'; # NN、ホ・皈ク・罍シ・ミ。シ・ク・逾ヌナキラ
$nnver = $1;
$agent =~ /\((.*)\)/; # テ晴眄ハフゥ、ヒトエ、ル、ス猜
split(/; /, $1);
# IEキマ
if ($_[0] =~ /^!([\w.-]+)/) {
# NetCaptor
if ($_[2] =~ /^NetCaptor/) {
++$AGENT{'NetCaptor'};
}
# ス紵E
else {
++$AGENT{'Internet Explorer'}; # IEチエツホ、ホ・キ・ァ・「
++$AGENT_IE{$1}; # IE、ホ・皈ク・罍シ・ミ。シ・ク・逾
### IE、ホセケ遉ホOSナキラ
if ($_[1] eq 'Windows 98') { ++$AGENT_OS{'Windows 98'}; }
elsif ($_[1] eq 'Windows NT 5.0') { ++$AGENT_OS{'Windows 2000'}; }
elsif ($_[1] eq 'Windows 95') { ++$AGENT_OS{'Windows 95'}; }
elsif ($_[1] eq 'Windows NT 4.0') { ++$AGENT_OS{'Windows NT'}; } # ツソハャ
elsif ($_[1] eq 'Windows NT') { ++$AGENT_OS{'Windows NT'}; }
elsif ($_[1] =~ /^MSN|^AOL/) { ++$AGENT_OS{$_[2]}; }
elsif ($_[1] eq 'Mac_PowerPC') { ++$AGENT_OS{'Macintosh'}; }
elsif ($_[1] eq 'Win32') { ++$AGENT_OS{'Windows 95'}; } # ツソハャ
elsif ($_[1] eq 'Windows 3.1') { ++$AGENT_OS{'Windows 3.1'}; }
# else { ++$AGENT_OS{'-etc-'}; print "$agent<BR>\n"; }
}
}
# NNキマ
elsif (($_[1] =~ /\bI\b/) || ($_[1] =~ /\bU\b/) || ($_[1] =~ /\bN\b/)) {
++$AGENT{'Netscape Navigator'}; # NNチエツホ、ホ・キ・ァ・「
++$AGENT_NN{$nnver};
### OSナキラ
if (($_[0] eq 'Win98') || ($_[2] eq 'Win98'))
{ ++$AGENT_OS{'Windows 98'}; }
elsif (($_[0] eq 'Windows NT 5.0') || ($_[2] eq 'Windows NT 5.0'))
{ ++$AGENT_OS{'Windows 2000'}; }
elsif (($_[0] eq 'Win95') || ($_[2] eq 'Win95'))
{ ++$AGENT_OS{'Windows 95'}; }
elsif (($_[0] eq 'WinNT') || ($_[2] eq 'WinNT'))
{ ++$AGENT_OS{'Windows NT'}; }
elsif (($_[0] eq 'WinNT4.0') || ($_[2] eq 'WinNT4.0'))
{ ++$AGENT_OS{'Windows NT'}; }
elsif (($_[0] eq 'Macintosh') || ($_[2] eq 'Macintosh'))
{ ++$AGENT_OS{'Macintosh'}; }
elsif (($_[0] eq 'Win16') || ($_[2] eq 'Win16'))
{ ++$AGENT_OS{'Windows 3.1'}; }
elsif ($_[0] eq 'OS/2')
{ ++$AGENT_OS{'OS/2'}; }
# Xテシヒホセケ遉マ、筅ヲセッ、キサナハャ、ア、
elsif ($_[0] eq 'X11')
{ $_[2] =~ /^([^\s]+)/; ++$AGENT_OS{$1}; }
# else { ++$AGENT_OS{'-etc-'}; print "$agent<BR>\n"; }
}
# 、ス、ホツセ・ウ・ム・チ
elsif ($_[0] eq 'compatible') {
if ($_[1] =~ '^([^/]*)/.*') { # ver.ノスオュ、ャ、「、、テ、ン、、
++$AGENT{$1}; # ver.ノスオュ、、
} else {
++$AGENT{$_[1]}; # 、ス、ホ、゙、゙コホヘム
}
}
# 、ス、ヲ、、、ヲ、、ア、ヌ、筅ハ、、ネッ、ハホゥセ、ホ、荀ト
else {
if ($_[0] =~ "^DreamPassport/") {
++$AGENT{'DreamPassport'};
} elsif ($_[0] =~ "^PNWalker/") {
++$AGENT{'PNWalker'};
} elsif (($nnver == 3.01) && (!$_[1])) { # CacheFlow
++$AGENT{'CacheFlow'};
} else { # ヒワナヒ・゙・、・ハ。シ。ゥ
++$AGENT{'-etc-'};
}
}
}
### Mozilla、セセ隍鬢ハ、、ニネホゥキマ
else {
if ($agent =~ '^([^/]*)/.*') { # ver.ノスオュ、ャ、「、、テ、ン、、
++$AGENT{$1}; # ver.ノスオュ、、
} else {
++$AGENT{$agent}; # 、ス、ホ、゙、゙コホヘム
}
}
}
;### イ靂フセォ・ヲ・ネ、ケ、・゙・ッ・
sub Macro_CountScreen {
unless (($screen eq '') || ($screen eq '-')) {
split(/,/, $screen);
$_[0] = &func::C62_Decode($_[0]);
$_[1] = &func::C62_Decode($_[1]);
$_[2] = &func::C62_Decode($_[2]);
++$SCREEN{"$_[0]x$_[1]x$_[2]"};
++$SCREEN_SIZE{"$_[0]x$_[1]"};
++$SCREEN_COLOR{"$_[2]"};
}
}
;### ・ウ。シ・ノ、莊ュケ讀ユフ」、「、ハクサ昀ヒハムエケ、ケ、
sub Macro_ChangeList {
### サイセネクオ
foreach (@ref) {
($n, $data) = split(/\t/);
if ($data eq '-') {
$data = '・ヨ・テ・ッ・゙。シ・ッ。ヲ、ェオ、、ヒニ、熙ォ、 / ・愠ワ・テ・ネ。ヲス茣ス・ユ・ネ / URLトセツヌ、チ / サイセネクオ、」ハテ、キ、ニ、ホ・「・ッ・サ・ケ';
} elsif ($data eq 'noscript') {
$data = 'JavaScript、リサ゚。「ヒマサネヘムスミヘ隍ハ、、・ヨ・鬣ヲ・カ、ヒ、隍サイセネクオシ霹タシコヌヤ';
} elsif ($data eq '-own-') {
$data = 'シォ・オ・、・ネニ筅ヌ、ホーワニー';
} elsif ($data eq '-search-') {
$data = '(efStat、ヒナミマソ、オ、、ニ、、、)・オ。シ・チ・ィ・ク・ォ、';
} else {
$data =~ s"^!"http://";
if (($DoLink) && ($data =~ /^http/)) {
$data = &func::MakeLink($data, 1);
} else {
$data = &func::URLdecode($data);
}
}
$_ = "$n\t$data";
}
### ・オ・、・ネニ箍ワニーハャタマ
&change_a(\@ref_own);
### ・オ。シ・チ・ィ・ク・
&change_a(\@ref_search);
### TINAMI・ォ・ニ・エ・
foreach (@ref_tinami) {
($n, $data) = split(/\t/);
if ($TABLE{'tinami'}{$data}) {
$data = "[C] $TABLE{'tinami'}{$data}";
} else {
$data = &func::URLdecode($data);
}
$_ = "$n\t$data";
}
## Surfers Paradice
&change_a(\@ref_sp);
### ・ォ・ネ・遙シ・ウ。シ・ノ
foreach (@host_dm) {
($n, $data) = split(/\t/);
if ($data eq 'ipaddr') {
$data = "・ノ・皈、・スハフ、ヌ、ュ、コ (<B>IP・「・ノ・・ケ</B>)";
} elsif ($data eq '-') {
$data = "<B><FONT SIZE=+1>[キルケ IPオュマソフオ、キ</FONT><BR>(・ォ・ヲ・ソ、ELNET、ォ、鯑セタワシツケヤ?)</B>";
} elsif ($TABLE{'cctld'}{$data}) {
$data = "$TABLE{'cctld'}{$data} (\*.<B>${data}<\/B>)";
} else {
$data = "フ、トオチ、ホケメ・ウ。シ・ノ (*.<B>${data}<\/B>)";
}
$_ = "$n\t$data";
}
## ニヒワツ2・・ル・・ノ・皈、・
foreach (@host_dm_jp) {
($n, $data) = split(/\t/);
if ($TABLE{'jpdomain'}{$data}) {
$data = "$TABLE{'jpdomain'}{$data} (\*.<B>${data}<\/B>.jp)";
$_ = "$n\t$data";
}
}
## ハニケ2・・ル・・ノ・皈、・
foreach (@host_dm_us) {
($n, $data) = split;
if ($TABLE{'gtld'}{$data}) {
$data = "$TABLE{'gtld'}{$data} (\*.<B>${data}<\/B>)";
$_ = "$n\t$data";
}
}
### User Agent
foreach (@agent) {
($n, $data) = split(/\t/);
if ($data eq '-etc-') {
$data = "、ス、ホツセ";
} elsif ($data eq '-') {
$data = "フセセホノヤフタ";
} elsif ($TABLE{'agent'}{$data}) {
$data = "${data}<BR>$TABLE{'agent'}{$data}";
}
$_ = "$n\t$data";
}
foreach (@screen_color) {
($n, $data) = split;
$data = "${data}bit";
$_ = "$n\t$data";
}
sub change_a {
my($array) = @_;
my($line, $n, $data);
foreach $line (@$array) {
($n, $data) = split(/\t/, $line);
$data = &func::URLdecode($data);
$line = "$n\t$data";
}
}
}
;### スミホマヘム、ホ・ニ。シ・ヨ・、釥
;### ノスシィ・筍シ・ノ, ノスツ, ケ猯ワ, ウ荀ソ, ノ鄧猯ワ1, ノ鄧猯ワ2(ウ荀ソ), ノスシィイシクツ, ノスシィ、オ、サ、ヌロホ
sub Macro_PutTable_a {
my($mode, $title, $item, $div, $sub1, $sub2, $limit, $array) = @_;
my($buf, $n, $data, $line, $ave, $width);
unless (@$array == ()) {
if (($sub2==0) || ($SAMPLES==0)) { $ave = 0; } #0スササツミコ
else { $ave = sprintf("%2.1f", ($sub2*100)/$SAMPLES); }
### ノスツ
print "<TABLE border=1 cellspacing=0 cellpadding=1${tbc[5]}>\n";
print "\t<TR><TH nowrap colspan=2${tbc[0]}><A HREF=\"#menu\"><FONT size=+1>「」 $title 「」</FONT></A><BR>";
if ($mode == 0) { print "<FONT size=-1>(・オ・ラ・チ暠 : $div)</FONT>"; } #トフセノスシィ
elsif ($mode == 1) { print "(<SUP>$sub1 : $sub2 ($ave%)</SUP> / <SUB>チエツホ : $SAMPLES</SUB>)<BR><FONT size=-1>(ヘュク妺オ・ラ・チ暠 : $div)</FONT>"; } #TINAMI,SPハャタマヘム
elsif ($mode == 2) { print "(<SUP>$sub1 : $sub2 ($ave%)</SUP> / <SUB>チエツホ : $SAMPLES</SUB>)"; } #ケ筵ノ・皈、・,IE・キ・ァ・「,NN・キ・ァ・「ヘム
print "</TH></TR>\n";
### ノス、ホケ猯ワ
print "\t<TR><TH nowrap${tbc[1]}>キソ</TH>";
print "<TH${tbc[2]}>$item</TH></TR>\n";
### ノス、ホテ豼ネ
foreach $line (@$array) {
($n, $data) = split(/\t/, $line);
$n = int($n);
if (($n==0) || ($div==0)) { $ave = 0; }
else {
$ave_old = $ave;
$ave = sprintf("%2.1f",($n*100)/$div);
$width = int($ave);
$width = 1 if ($width < 1);
}
print "\t<TR><TD>";
print "<IMG src=\"lib/b.gif\" height=10 width=${width}>" if ($DoPutGraph);
print " $n";
if ($ave_old != $ave) { print " ($ave%)"; }
print "</TD>";
print "<TD${tbc[6]}>${data}</TD></TR>\n";
}
### ノスシィイシクツ、ャサリト熙オ、、ニ、、、セケ遑「テ晴皃スシィ
print "\t<TR><TD colspan=2 align=right${tbc[0]}><FONT size=-1><B>$limitキーハイシセハホャ</B></FONT></TD></TR>\n" unless ($limit == 0);
print "</TABLE>\n";
}
}
;### ・ォ・ヲ・ソスクキラノス - イ」テヨ、ュ
;### ノスシィ・ソ・、・ラ, ケ猯ワシハフ, マ「チロヌロホ
;### ・ソ・、・ラ: 0=トフセ, 1=[・オ・、・ネチエツホ]、ャ、ハ、、, 2=[キラ]、ャ、ハ、、, 3=ホセハフオ、、
sub Macro_PutTable_b {
my($type, $ptr, $hash) = @_;
my($colspan, @sum);
if (($type==2) || ($type==3)) { #[・レ。シ・クキラ]、スシィ、キ、ハ、、
$colspan = @$ptr;
} else { $colspan = @$ptr+1; }
### ケ猯ワ(ノスツ)
print "<TABLE border=1 cellspacing=0 cellpadding=1${tbc[6]}>\n";
print "\t<TR><TH colspan=${colspan}${tbc[0]}><A href=\"#menu\"><FONT size=+1>「」 $ptr->[0] 「」</FONT></A></TH></TR>\n";
### ケヤ : ケ猯ワ
print "\t<TR${tbc[5]}><TH nowrap${tbc[1]}>。。</TH>";
for ($i=1 ; $i < @$ptr ; $i++) { print "<TH>$ptr->[$i]</TH>"; }
### ホ : ・レ。シ・クキラ
print "<TH${tbc[4]}>・レ。シ・クキラ</TH>" unless (($type==2) || ($type==3));
print "</TR>\n";
### ケヤ : ニ簣ニ
foreach (@filename) {
print "\t<TR align=right><TH${tbc[2]}>$_</TH>";
split(/\t/, $$hash{ $_ });
foreach (@_) {
$_ = &func::C62_Decode($_);
}
$all = &func::CalcSum(@_);
for ($i=0 ; $i < @$ptr-1 ; $i++) {
if (($_[$i]==0) || ($all==0)) { $ave = 0; }
else {
$ave = sprintf("%2.1f",($_[$i]*100)/$all);
}
$height = int($ave);
$height = 1 if ($height < 1);
print "<TD valign=\"bottom\">";
print "<IMG src=\"lib/b.gif\" height=${height} width=10 alt=\"$ave%\"><BR>" if ($DoPutGraph);
print "$_[$i]";
print "</TD>";
$sum[$i] += $_[$i];
}
### ホ : [・レ。シ・クキラ]
unless (($type==2) || ($type==3)) {
print "<TH${tbc[8]}>$all</TH>";
}
print "</TR>\n";
}
### ケヤ : ・オ・、・ネチエツホ
unless (($type==1) || ($type==3)) {
print "\t<TR align=right${tbc[7]}><TH nowrap${tbc[3]}>・オ・、・ネキラ</TH>";
$all = &func::CalcSum(@sum);
foreach (@sum) {
if (($_==0) || ($all==0)) { $ave = 0; }
else {
$ave = sprintf("%2.1f",($_*100)/$all);
}
$height = int($ave);
$height = 1 if ($height < 1);
print "<TH valign=\"bottom\">";
print "<IMG src=\"lib/b.gif\" height=${height} width=10 alt=\"$ave%\"><BR>" if ($DoPutGraph);
print "$_";
print "</TH>";
}
### ホ : ク。ササノ ([・レ。シ・クキラ] = [・オ・、・ネキラ])
printf("<TH%s>%d</TH>",${tbc[9]}, $all) unless ($type==2);
print "<TR>\n";
}
print "</TABLE>\n";
}
;### ・ォ・ヲ・ソスクキラノス - イ」テヨ、ュ
;### ノスシィ・ソ・、・ラ, ケ猯ワシハフ, ノスツ, テアーフ, ケ猯ワソ, マ「チロヌロホ
;### ・ソ・、・ラ: 0=トフセ, 1=[・オ・、・ネチエツホ]、ャ、ハ、、, 2=[キラ]、ャ、ハ、、, 3=ホセハフオ、、
;### クトハフ・筍シ・ノ: 0=トフセ, 1=ヘヒニハフスクキラ, 2=キ鑅フスクキラ
sub Macro_PutTable_c {
my($type, $mode, $title, $sub, $max, $assoc_array) = @_;
my($colspan, @sum, @d, @w);
@w=('ニ','キ','イミ','ソ','フレ','カ','ナレ');
if (($type==2) || ($type==3)) { #[・レ。シ・クキラ]、スシィ、キ、ハ、、
$colspan = $max+1; # -> ホコ、鬢ケ
} else { $colspan = $max+2; }
### ケ猯ワ(ノスツ)
print "<TABLE border=1 cellspacing=0 cellpadding=1${tbc[6]}>\n";
print "\t<TR><TH colspan=${colspan}${tbc[0]}><A href=\"#menu\"><FONT size=+1>「」 $title 「」</FONT></A></TH></TR>\n";
### ケヤ : ケ猯ワ
print "\t<TR${tbc[5]}><TH nowrap${tbc[1]}>。。</TH>";
for ($i=0 ; $i < $max ; $i++) {
print "<TH>";
if ($mode == 0) { print "$i$sub"; } #トフセ
elsif ($mode == 1) { print "$w[$i]$sub"; } #ヘヒニハフスクキラ
elsif ($mode == 2) { printf("%d$sub", $i+1); } #キ鑅フスクキラ
print "</TH>";
}
### ホ : ・レ。シ・クキラ
unless (($type==2) || ($type==3)) { print "<TH${tbc[4]}>・レ。シ・クキラ</TH>"; }
print "</TR>\n";
### ケヤ : ニ簣ニ
foreach $line (@filename) {
print "\t<TR align=right><TH${tbc[2]}>$line</TH>";
split(/\t/, $$assoc_array{ $line });
for ($i=0 ; $i < $max ; $i++) {
$_[$i] = &func::C62_Decode($_[$i]);
print "<TD>$_[$i]</TD>";
$sum[$i] += $_[$i];
}
### ホ : [・レ。シ・クキラ]
unless (($type==2) || ($type==3)) {
printf("<TH%s>%d</TH>",${tbc[8]}, &func::CalcSum(@_));
}
print "</TR>\n";
}
### ケヤ : ・オ・、・ネチエツホ
unless (($type==1) || ($type==3)) {
print "\t<TR align=right${tbc[7]}><TH nowrap${tbc[3]}>・オ・、・ネキラ</TH>";
for ($i=0 ; $i < $#sum+1 ; $i++) { print "<TH>$sum[$i]</TH>"; }
### ホ : ク。ササノ ([・レ。シ・クキラ] = [・オ・、・ネキラ])
unless ($type==2) { printf("<TH%s>%d</TH>",${tbc[9]}, &func::CalcSum(@sum)); }
print "<TR>\n";
}
print "</TABLE>\n";
}
1;