#!/usr/bin/perl

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#+++　　[ まね俺や Ver0.52]　…　2002.06.03　Update
#+++
#+++		･････>>> All Created by Tacky				     
#+++		･････>>> Copyright (c) 2002.2 Tacky's Room. All rights reserved....
#+++        Email    >>> tackysrm@lily.freemail.ne.jp
#+++        Homepage >>> http://tackysroom.com/
#+++
#+++ 設置方法構成(具体例)
#+++
#+++ public_html（ホームページディレクトリ）
#+++ |
#+++ |-- cgi-bin（任意のディレクトリ）
#+++   |-- jcode.pl  (755)…(日本語ライブラリ)
#+++   |-- manne.cgi (755)…(スクリプト本体)
#+++   |-- manne.txt (666)…(ゲーム中情報を管理するファイル)…空のままアップロード
#+++   |-- log       (777)…(フォルダ)…サーバー側で新規作成してください。
#+++         |-- Q_xxx.ini(666)…(問題ファイル)…ＣＧＩ側で自動作成します。※「xxx」は問題No.
#+++         |-- R_xxx.ini(666)…(ランキングファイル)…ＣＧＩ側で自動作成します。※「xxx」は問題No.
#+++
#+++ 　　■( )内はパーミッッションの値です。
#+++ 　　■gif以外はアスキーモード、gifはバイナリーモードでアップロードして下さい。
#+++ 　　■manne.lockは自動作成＆削除しますので、各自でご用意する必要はありません。
#+++ 　　■設置時にエラーになる方は、各ファイルの指定をフルパス(http://〜)で指定してみて下さい。
#+++
#+++ >>> Update-History...
#+++
#+++　2002-06-03(Ver0.52)  …　・問題を複数登録した際に、若い番号の問題を削除するとランキングが表示されない、等の不具合対応
#+++　2002-04-26(Ver0.51a) …　・すいません・・・下記の修正が反映されていませんでした・・・・m(_ _)m
#+++　2002-04-26(Ver0.51)　…　・問題を修正後改行だけの行が入ってしまうバグを修正
#+++　2002-02-23(Ver0.5 )　…　・正式版に。
#+++　　　　　　　　　・答えを間違った場合に「GAME OVER」と「正解」が共に表示される場合があるバグを修正
#+++　2002-02-20　…　問題新規登録時、問題Noは必ず指定するようにエラーチェックを追加。
#+++　                プレイヤーの名前にスペースを入力してもゲーム出来ちゃったからそれダメに。(^^ゞ
#+++　2002-02-18　…　β版公開
#+++
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

require './jcode.pl';										#日本語コード変換

$url 				= "http://www.gyuttoweb.com/gyuttogroup/yuppiestation/frameset2.html";				#<<<戻り先のURL
$script 			= "./manne.cgi";						#<<<このスクリプトの名前

#<<< 問題保存用フォルダの設定…指定したフォルダ($logdir)直下に"01.txt".."10.txt"のように作成します
#<<< ※CGIと同じ階層には、設置出来ません。必ずフォルダを作成してください。※最後には必ず「/」で閉じてくださいね
$logdir				= './log/' ;							#フォルダ名を指定。(不要の場合は'')

$logfile 			= "./manne.txt";						#<<<ゲーム中の情報を管理するファイル（修正不要）
$lockfile			= './manne.lock';						#<<<ロックファイルの名前を指定（修正不要）

$titlename 			= "ユピオネア-Yupionaire-";						#<<<タイトルを指定
$titlelogo 			= "";	#<<<上段部にタイトルロゴを指定する場合、<img>タグで指定。指定しない場合は「""」
$bgcolor			= "#000000";							#<<<背景色
$backpicture 		= "";									#<<<背景に画像を表示する場合、フルパスで指定。
$textcolor    		= "#ffffff";							#<<<メッセージ表示部分のテキスト文字色
$linkcolor		    = "#cc6600";							# リンク色（未読リンク）
$vlinkcolor			= "#666666";							# リンク色（既読リンク）
$alinkcolor	 		= "#ff3300";							# リンク色（押した時）

$anscolor			= '#ffffff';							#<<<ゲーム中の「問題＆答え」の文字色

$cellheadbgcolor	= "#0000a0";							#<<<ランキング表示・背景色
$cellheadtxcolor	= "#ffffff";							#<<<ランキング表示・文字色

$ll_gif[0]			= './ll01.gif';							#<<<ライフライン（５０：５０）画像
$ll_gif[1]			= './ll02.gif';							#<<<ライフライン（テレフォン）画像
$ll_gif[2]			= './ll03.gif';							#<<<ライフライン（オーディエンス）画像

$size_w				= 70 ;									#<<<ライフライン画像の横幅
$size_h				= 41 ;									#<<<ライフライン画像の縦幅

$pt					= '9pt';								#<<<全体のフォントサイズ（pt指定以外何があるのか、僕知らない。(^^ゞ）

$password 			= "yupisute1984";								#<<<管理者メンテナンス用パスワード（ログ編集用））
$datamax 			= 50 ;									#<<<ランキングデータ最大保存件数（超えた場合は獲得point!が少ない人のデータから消去されます）

$Qcount				= 50 ;									#１つの問題Noに対しての最大問題数を指定。ex.問題01は15問、問題02は30問の場合は30。

#ＣＳＳ設定　※使用しない場合は、$css_style = "";とし、そこから２行(先頭がEOMの行までを)を削除して下さい。
$css_style = <<"EOM";
body,tr,td { font-size: $pt;}
EOM

#フォームオブジェクト（TEXTBOX,BUTTON等)に対しての指定なので消さないでね。
$css_style2 = <<"EOM";
style="color:#ffffff;border:double 3px #999999 ;background-color:#666666"
EOM

$mid		= '';			#MIDIを鳴らす場合は指定してね。不要の場合は''

#<<<　ここから下はいじらない方が身のためです。(^_^;
###############################################################################
#### Main Process  START  #####################################################
###############################################################################
###<--- システム日時・時刻取得 ------------------------------------
$ENV{'TZ'} = "JST-9";
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year = sprintf("%02d",$year + 1900);	$month = sprintf("%02d",$mon + 1);	$mday = sprintf("%02d",$mday);
$hour = sprintf("%02d",$hour);	$min = sprintf("%02d",$min);	$today = "$year/$month/$mday $hour:$min";

if ($ENV{'HTTP_USER_AGENT'} !~ /MSIE/i) { $css_style2 = "" ; }		#Netscape-CSS対応

&logchk ;

# ホスト名を取得
$host  = $ENV{'REMOTE_HOST'};
$addr  = $ENV{'REMOTE_ADDR'};
if ($host eq "" || $host eq "$addr") {
	($p1,$p2,$p3,$p4) = split(/\./,$addr);
	$temp = pack("C4",$p1,$p2,$p3,$p4);
	$host = gethostbyaddr("$temp", 2);
	if ($host eq "") { $host = $addr; }
}

#<<<フォームデコード＆変数代入
&decode ;

&header ;						   			#<<<htmlヘッダーの出力

$quizfile = $logdir . "Q_" . sprintf("%03d",$FORM{'QNO'}) . ".ini" ;   	#<<<問題ファイル
$logfile2 = $logdir . "R_" . sprintf("%03d",$FORM{'QNO'}) . ".txt" ;   	#<<<ランキングファイル

if ( $FORM{'QNO'} ne '' && $FORM{'action'} ne 'maintenance' && $FORM{'action'} ne 'update')	{
	if ( !(open(IN,"$quizfile")))	{	&fileunlock ;	&error("問題ファイル($quizfile)のオープンに失敗しました");	}
	@QUES = <IN> ;	close(IN);
	$title = $QUES[0] ;	$title =~ s/\n//;
}

if ( $FORM{'action'} eq 'start' )	{
	$nm = $FORM{'name'}; 	$nm =~ s/ //g; 	$nm =~ s/　//g;
	if ( $nm eq '' ) { &error("プレイヤーの名前を入力してください。"); }
	$tm = time;
	$tm2 = time + (60 * 60 * 6) * -1;  #6時間前
	&filelock ;		#ファイルロック
	if ( !(open(IN,"$logfile")))	{	&fileunlock ;	&error("ログファイル($logfile)のオープンに失敗しました");	}
	@LOG = <IN> ;	close(IN);
	$found = 0 ;
	foreach $BUF ( @LOG )	{
		($qno,$name,$t,$hst,$ans,$ll01,$ll02,$ll03) = split(/,/,$BUF);
		if ( $FORM{'QNO'} == $qno && $FORM{'name'} eq $name && $host eq $hst ) {
			$found=1;
			push(@NEW,"$FORM{'QNO'},$FORM{'name'},$tm,$host,1,0,0,0\n");
		}	else	{
			if ( $t >= $tm2 )	{	#6時間以前のデータはここで切り捨て
				push(@NEW,$BUF);
			}
		}
	}
	if ( $found == 0 ) { 
		push(@NEW,"$FORM{'QNO'},$FORM{'name'},$tm,$host,1,0,0,0\n");
	}
	if ( !(open(OUT,">$logfile")))	{	&fileunlock ;	&error("ログファイル($logfile)のオープンに失敗しました");	}
	print OUT @NEW;	close(OUT);
	&fileunlock ;	#ファイルロック解除
	&Qview(2) ;				       			#<<<入力フォームの表示
}	elsif ( $FORM{'action'} eq "ans" ) {		#答え合わせ
 	&Qview(3); 									
}	elsif ( $FORM{'action'} eq "disp" ) {		#ランキング表示
 	&view; 									
}	elsif ( $FORM{'action'} eq "maintenance" ) {		#メンテナンス
 	&mainte; 									
}	elsif ( $FORM{'action'} eq "drop" ) {		#ドロップアウト
 	&comadd(1); 									
}	elsif ( $FORM{'action'} eq "update" ) {		#更新
 	&update; 									#問題更新
}	else	{
	if ( $FORM{'action'} eq "comadd" ) { &regist;	}		#ゲーム終了
	&Qview(1) ;				       				#<<<入力フォームの表示
}
&footer ;							   			#<<< htmlフッターの出力
exit;
###############################################################################
#### Main Process  END  #######################################################
###############################################################################

###<--------------------------------------------------------------
###<---   デコード＆変数代入
###<--------------------------------------------------------------
sub decode{	
	if ($ENV{'REQUEST_METHOD'} eq "POST") {
		read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
	} else { $buffer = $ENV{'QUERY_STRING'}; }
	@pairs = split(/&/,$buffer);
	foreach $pair (@pairs) {
		($name, $value) = split(/=/, $pair);
		$value =~ tr/+/ /;
		$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
		&jcode'convert(*value,'sjis');
		$FORM{$name} = $value;
	}
}
###<--------------------------------------------------------------
###<---   HTMLヘッダー書き出し
###<--------------------------------------------------------------
sub	header	{
	print "Content-type: text/html; charset=Shift_JIS\n\n";
	print "<html>\n<head>\n";
	print "<title>$titlename</title>\n";
	#<<<CSS START>>>
	print "<style type=\"text/css\">\n";
	print "<!--\n";
	print $css_style ;
	print "-->\n";
	print "</style>\n";
	#<<<CSS END>>>
	print "</head>\n";
	if ($backpicture) { $set = "background=\"$backpicture\""; if ( $bgcolor ) { $set .= " bgcolor=\"$bgcolor\"" ; }	}
	elsif ($bgcolor )	{ $set = "bgcolor=\"$bgcolor\""; }
	print "<body $set text=$textcolor link=$linkcolor vlink=$vlinkcolor alink=$alinkcolor>\n";

	#▽MIDI鳴らす？
	if ( $mid )	{
print <<"EOM";
<SCRIPT LANGUAGE="JavaScript">
<!--
IE = (navigator.appVersion.charAt(0)>=4 && (navigator.appVersion).indexOf("MSIE") != -1);
NS = (navigator.appVersion.charAt(0)>=4 && (navigator.appName).indexOf("Netscape") != -1);
if (NS == true) { document.write('<EMBED SRC="$mid" HIDDEN="true" AUTOSTART="true" WIDTH=144 HEIGHT=15>'); }
if (IE == true) {document.write('<bgsound src="$mid" loop="infinite">'); }
// -->
</SCRIPT>
EOM
	}

	print "<center>";

}
###<--------------------------------------------------------------
###<---   HTMLフッダー書き出し
###<--------------------------------------------------------------
sub footer { 
	#<<<　↓消さないでネ♪
	print "<p align=right><font size=2>\n";
	print "<a href=http://tackysroom.com>MANNEOREYA Ver0.52 Created by Tacky's Room</a></font></p>\n";
	print "</body></html>\n";
}
###<--------------------------------------------------------------
###<---   問題表示
###<--------------------------------------------------------------
sub	Qview	{

	print "<br>\n";

	#初期画面
	if ( $_[0] == 1 ) 	{
		print "<form action=$script method=POST>\n";
		print "<table border=0 cellspacing=0 cellpadding=0 width=50%>\n";
		print "<tr><td>\n";
		print "<center><IMG SRC='title.gif' WIDTH='343' HEIGHT='80' ALIGN='BOTTOM' BORDER='0' NATURALSIZEFLAG='3'></center>";
		print "<br>＊ ルールは『みのもんたのクイズミリオネア』と同じです。\n";
		print "<br>＊ 獲得point!はこのゲームの中のみで有効です。特に特典はありません。</li><img src='http://www.gyuttoweb.com/cgi-bin2/yup_counter002/lime.cgi?109' width=1 height=1>\n";
        	print "<hr size=2 noshade color=#ffffff></td></tr>\n";
		print "<tr><td nowrap align=center><br>\n";
		print "<table cellspacing=5><tr>\n";
		print "<td>問　題&nbsp;==></td><td><select name=QNO $css_style2>\n";
		for ( $i = 0 ; $i <= $#LOGCNT ; $i++)	{
			$j=sprintf("%3d",substr($LOGCNT[$i],2,3)) ;
			$quizfile = $logdir . $LOGCNT[$i] ;	#<<<問題用ファイル
			if ( open(IN,"$quizfile") )	{
				while ( <IN> ) {$title = $_ ;	$title =~ s/\n//; last ;}
				close(IN);
				print "<option value=$j>$j : $title</option>\n";
			}
		}
		print "</select></td></tr>\n";
		print "<tr><td>お名前&nbsp;==></td><td><input type=text name=name size=20 maxlength=50 $css_style2></td></tr>\n";
		print "<tr><td>&nbsp;</td><td>\n";
		print "<input type=submit value=\"GAME START\" $css_style2>\n";
		print "<input type=hidden name=action value=start>";
		print "<input type=hidden name=flg value=1>\n";
		print "<input type=hidden name=no value=1>\n";
		print "</td></form></tr></table>\n";
		
		print "</td></tr>\n";
		print "<tr><td><br><hr size=1 noshade color=#ffffff></td></tr>\n";

		if ( $FORM{'action'} ne 'disp' )	{
			print "<tr><td align=center><table><tr>\n";
			print "<form action=$script><td><br>\n";
			print "<input type=hidden name=action value=disp><select name=QNO $css_style2>\n";
			for ( $i = 0 ; $i <= $#LOGCNT ; $i++)	{
				$j=sprintf("%3d",substr($LOGCNT[$i],2,3)) ;
				$quizfile = $logdir . $LOGCNT[$i] ;	#<<<問題用ファイル
				if ( !(open(IN,"$quizfile")))	{	&fileunlock ;	&error("問題ファイル($quizfile)のオープンに失敗しました");	}
				while ( <IN> ) {$title = $_ ;	$title =~ s/\n//; last ;}
				close(IN);
				print "<option value=$j>$j : 「$title」のランキング</option>\n";
			}
			print "</select></td><td><br>&nbsp;<input type=submit value=表\示 $css_style2></td></form></tr></table></td></tr>\n";
		}

        print "</table>\n";
		return;
	}
	
	if ( $FORM{'flg'} == 2 && $FORM{'ans'} eq '')	{
		&error("答えを選択して下さい。");
	}

	if ( !(open(IN,"$logfile")))	{	&fileunlock ;	&error("ログファイル($logfile)のオープンに失敗しました");	}
	@LOG = <IN> ;	close(IN);
	$found = 0 ;
	foreach $BUF ( @LOG )	{
		($qno,$name,$tm,$hst,$ans,$ll01,$ll02,$ll03) = split(/,/,$BUF);
		if ( $FORM{'QNO'} == $qno && $FORM{'name'} eq $name && $host eq $hst ) {
			$ll03 =~ s/\n//;
			if ( $FORM{'no'} != $ans || 
				( $FORM{'flg'} == 3 && $ll01 == 1 ) ||
				( $FORM{'flg'} == 4 && $ll02 == 1 ) ||
				( $FORM{'flg'} == 5 && $ll03 == 1 ) ) { 
				&error("不正が見つかりましたのでゲーム終了です。") ;
			}
			$found=1;	$anssv = $ans ; last ;
		}
	}

	if ( $found == 0 ) { 
		&error("不正が見つかったか、ゲームを開始した情報が見あたりません。再スタートして下さい。") ;
	}

	($qu,$ok,$mo,$ng,$ans1,$ans2,$ans3,$ans4) = split(/,/,$QUES[$ans]);
	print "<table border=0 cellspacing=0 cellpadding=5>\n";
	print "<tr><td align=center valign=top>\n";

	#▼問題テーブル
	print "<table border=0 cellspacing=0 cellpadding=0 width=520>\n";
	print "<tr>\n";
	print "<td bgcolor=#000000 rowspan=3 valign=middle><img src=bd3.gif width=10 height=3></td>\n";
	print "<td bgcolor=#000000 rowspan=3><img src=bd4.gif></td>\n";
	print "<td bgcolor=#000000 valign=top><img src=bd3.gif width=460 height=3></td>\n";
	print "<td bgcolor=#000000 rowspan=3><img src=bd5.gif></td>\n";
	print "<td bgcolor=#000000 rowspan=3 valign=middle><img src=bd3.gif width=10 height=3></td>\n";
	print "</tr>\n";

	print "<tr>\n";
	print "<td bgcolor=#000000>\n";
		print "<table border=0 cellspacing=0 cellpadding=2 width=100%>\n";
		print "<tr>\n";
		print "<td bgcolor=#000000 valign=middle>";
		print "<font color=$anscolor>$qu</font>\n";
		print "</td>\n";
		print "</tr>\n";
		print "</table>\n";
	print "</td></tr>\n";

	print "<tr>\n";
	print "<td bgcolor=#000000 valign=bottom><img src=bd3.gif width=460 height=3></td>\n";
	print "</tr>\n";
	print "</table><br><br>\n";

	print "<form action=$script method=POST>\n";
	print "<input type=hidden name=action value=ans>\n";
	print "<input type=hidden name=QNO value=$FORM{'QNO'}>\n";
	print "<input type=hidden name=name value=\"$FORM{'name'}\">\n";
	if ( $FORM{'flg'} == 1 )	{	#問題表示時
		print "<input type=hidden name=flg value=2>\n";
		print "<input type=hidden name=no value=$FORM{'no'}>\n";
	}	else	{
		if ( $FORM{'flg'} == 2 )	{	#ファイナルアンサー後
			print "<input type=hidden name=flg value=1>\n";
			$i=$ans+1;
			print "<input type=hidden name=no value=$i>\n";
		}	else	{	#ライフライン使用時
			print "<input type=hidden name=flg value=2>\n";
			print "<input type=hidden name=no value=$FORM{'no'}>\n";
		}
	}		

	@AN = (0,0,0,0);
	#ライフライン使用時（５０：５０）
	if ( $FORM{'flg'} == 3 )	{
		srand(time ^ ($$ + ($$ << 15)));
		#正解以外の答えを１個取得
		for (;;)	{
			$r = int(rand(4)) + 1;
			if ( $ok != $r ) {	last ;	}
		}
	}
	#ライフライン使用時（テレフォン・オーディエンス）
	if ( $FORM{'flg'} == 4 || $FORM{'flg'} == 5)	{
		srand(time ^ ($$ + ($$ << 15)));
		if ( $FORM{'flg'} == 4 )	{
			#正解の答えの割合を適当（20〜85%）に決める。テレフォンの方が間違える可能性多し。(^^ゞ
			$r = int(rand(66)) + 20;
		}	else	{
			#正解の答えの割合を適当（45〜84%）に決める。
			$r = int(rand(40)) + 45 ;
		}
		$AN[$ok - 1] = $r ;
		$wari = 100 - $r ;
		for ( 0..3 )	{
			$r2 = int(rand($wari)) ;
			if ( $ok - 1 != $_ )	{
				$AN[$_] = $r2 ;
				if ( $wari - $r2 <= 0 ) { last ; }
				$wari = $wari - $r2 ;
			}
        }
		$AN[$ok - 1] = $AN[$ok - 1] + (100 - ($AN[0] + $AN[1] + $AN[2] + $AN[3])) ;	#端数は正解に充当。
		for ( 0..3 )	{
			if ( $AN[$_] > $max )	{	$max = $AN[$_] ; $r = $_ + 1; }
		}
	}

	#▼答えテーブル
	print "<table border=0 cellspacing=0 cellpadding=0 width=560>\n";

	print "<tr><td>\n";
	if ( $FORM{'ans'} == 1 )	{ $i=1; } else { $i=0; }	#$iが1の場合に答えを表示
	if ( $FORM{'flg'} == 3 )	{
		if ( $ok == 1 || $r == 1 )	{ $i=1; } else { $i=0; }	#$iが1の場合に答えを表示
	}
	if ( $FORM{'flg'} == 4 )	{
		if ( $r == 1 )	{ $i=1; } else { $i=2; }
	}
	if ( $FORM{'flg'} == 5 )	{ $i=1; }						#オーディエンス使用時は全て表示
	&Qview_Sub($ans1,1,$i,$AN[0]) ;
	print "</td><td>\n";
	if ( $FORM{'ans'} == 2 )	{ $i=1; } else { $i=0; }
	if ( $FORM{'flg'} == 3 )	{
		if ( $ok == 2 || $r == 2 )	{ $i=1; } else { $i=0; }	#$iが1の場合に答えを表示
	}
	if ( $FORM{'flg'} == 4 )	{
		if ( $r == 2 )	{ $i=1; } else { $i=2; }
	}
	if ( $FORM{'flg'} == 5 )	{ $i=1; }						#オーディエンス使用時は全て表示
	&Qview_Sub($ans2,2,$i,$AN[1]) ;
	print "</td></tr>\n";

	print "<tr><td bgcolor=#000000 colspan=2>&nbsp;</td></tr>\n";

	print "<tr><td>\n";
	if ( $FORM{'ans'} == 3 )	{ $i=1; } else { $i=0; }
	if ( $FORM{'flg'} == 3 )	{
		if ( $ok == 3 || $r == 3 )	{ $i=1; } else { $i=0; }	#$iが1の場合に答えを表示
	}
	if ( $FORM{'flg'} == 4 )	{
		if ( $r == 3 )	{ $i=1; } else { $i=2; }
	}
	if ( $FORM{'flg'} == 5 )	{ $i=1; }						#オーディエンス使用時は全て表示
	&Qview_Sub($ans3,3,$i,$AN[2]) ;
	print "</td><td>\n";
	if ( $FORM{'ans'} == 4 )	{ $i=1; } else { $i=0; }
	if ( $FORM{'flg'} == 3 )	{
		if ( $ok == 4 || $r == 4 )	{ $i=1; } else { $i=0; }	#$iが1の場合に答えを表示
	}
	if ( $FORM{'flg'} == 4 )	{
		if ( $r == 4 )	{ $i=1; } else { $i=2; }
	}
	if ( $FORM{'flg'} == 5 )	{ $i=1; }						#オーディエンス使用時は全て表示
	&Qview_Sub($ans4,4,$i,$AN[3]) ;
	print "</td></tr>\n";

	print "<tr>\n";
	$sw=0;
	if ( $FORM{'flg'} == 2 )	{
		if ( $FORM{'ans'} == $ok )	{
			print "<td align=right>\n";
			print "<br>";
			if ( $ans != $#QUES ) {	#最終問題以外
				print "<input type=submit value=\"次の問題へ\" $css_style2>\n";
			}	else	{	$sw = 1 ; }
		}	else	{
			print "<td align=center colspan=2>\n";
			print "<br>";
			$sw=1;
			print "<font size=7 color=red>GAME OVER!!</font>\n";
			&comadd(3) ;
		}
	}	else	{
		print "<td align=right>\n";
		print "<br>";
		print "<input type=submit value=\"ファイナルアンサー？\" $css_style2>&nbsp;&nbsp;\n";
	}
	print "</td></form>\n";
	if ( $sw ==0 )	{
		print "<form action=$script method=POST>\n";
		print "<input type=hidden name=QNO value=$FORM{'QNO'}>\n";
		print "<input type=hidden name=name value=\"$FORM{'name'}\">\n";
		print "<input type=hidden name=action value=drop>\n";
		print "<td>\n";
		print "<br>&nbsp;&nbsp;<input type=submit value=\"ドロップアウト\" $css_style2>\n";
		print "</td></form>\n";
	}
	print "</tr></table>\n";

	if ( $FORM{'flg'} == 2 && $FORM{'ans'} == $ok )	{
		print "<br><font size=7 color=red>正解!!</font><br>\n";
		if ( $ans == $#QUES ) {	#全問正解の場合
			print "<br><font size=7 face=\"Copperplate Gothic Bold\" color=#ffffff>YUPIONAIRE!!</font><br>";
			&comadd(2) ;
		}
		$sw=1;
	}

	#ファイナルアンサー後は回答数を＋１してファイルに保存
	if ( $FORM{'flg'} >= 2 )	{
		&filelock ;	#ファイルロック
		if ( !(open(IN,"$logfile")))	{	&fileunlock ;	&error("ログファイル($logfile)のオープンに失敗しました");	}
		@LOG = <IN> ;	close(IN);
		@NEW = ();
		foreach $BUF ( @LOG )	{
			($qno,$name,$dt,$hst,$ans,$ll01,$ll02,$ll03) = split(/,/,$BUF);
			if ( $FORM{'QNO'} == $qno && $FORM{'name'} eq $name && $host eq $hst ) {
				$ll03 =~ s/\n//;
				if ( $FORM{'flg'} == 2 ) { $ans++; }		#回答数＋１
				if ( $FORM{'flg'} == 3 ) { $ll01 = 1 ; }	#ライフライン使用時（５０：５０）
				if ( $FORM{'flg'} == 4 ) { $ll02 = 1 ; }	#ライフライン使用時（テレフォン）
				if ( $FORM{'flg'} == 5 ) { $ll03 = 1 ; }	#ライフライン使用時（オーディエンス）
				push(@NEW,"$qno,$name,$dt,$host,$ans,$ll01,$ll02,$ll03\n");
			}	else	{
				push(@NEW,$BUF);
			}
		}
		if ( !(open(OUT,">$logfile")))	{	&fileunlock ;	&error("ログファイル($logfile)のオープンに失敗しました");	}
		print OUT @NEW;
		close(OUT);
		&fileunlock ;	#ファイルロック解除
	}

	#ライフライン
	if ( $sw == 0 )	{
		print "<br><hr size=1 noshade color=#ffffff width=60%><table border=0 cellspacing=2 cellpadding=2>\n";
		print "<tr><td colspan=3 align=center>▼　命綱(LIFELINE)　▼</td></tr>\n";
		print "<tr>\n";
		if ( $ll01 == 0 ) {
			print "<td align=center><a href=$script?action=ans&flg=3&no=$FORM{'no'}&QNO=$FORM{'QNO'}&name=$FORM{'name'}><img src=$ll_gif[0] width=$size_w height=$size_h border=0></a></td>\n";
		}
		if ( $ll02 == 0 ) {
			print "<td align=center><a href=$script?action=ans&flg=4&no=$FORM{'no'}&QNO=$FORM{'QNO'}&name=$FORM{'name'}><img src=$ll_gif[1] width=$size_w height=$size_h border=0></a></td>\n";
		}
		if ( $ll03 == 0 ) {
			print "<td align=center><a href=$script?action=ans&flg=5&no=$FORM{'no'}&QNO=$FORM{'QNO'}&name=$FORM{'name'}><img src=$ll_gif[2] width=$size_w height=$size_h border=0></a></td>\n";
		}
		print "</tr></table>\n";
	}

	print "</td><td valign=top>\n";

	#獲得point!テーブル
	print "<table border=0 cellspacing=2 cellpadding=2 width=150>\n";
	print "<td bgcolor=#000000 nowrap><b><font size=2>問題</font></b></td>\n";
	print "<td bgcolor=#000000 nowrap align=center><b><font size=2>point!(正解)</font></b></td>\n";
	print "<td bgcolor=#000000 nowrap align=right><b><font size=2>point!(不正解)</font></b></td></tr>\n";
	for ( $i = $#QUES ; $i > 0 ; $i--)	{
		($qu,$ok,$mo,$ng,$ans1,$ans2,$ans3,$ans4) = split(/,/,$QUES[$i]);
		if ( $i == $anssv )	{
			$colb = "#a80000";	$colf = "#ffffff";
		}	else	{
			$colb = "#333333";	$colf = "#999999";
		}
		print "<tr>\n";
		if ( $svng != $ng)	{
			if ( $svng ne '' && $colb ne "#ffffff" )	{ $colf = "#ffff00"; }
			$svng = $ng ;
		}
		print "<td bgcolor=$colb width=50  align=center><b><font color=$colf>$i</font></b></td>\n";
		print "<td bgcolor=$colb width=100 align=right>\n";
		if ( $i == $anssv )	{	print "<b>\n"; }
		1 while $mo =~ s/(.*\d)(\d\d\d)/$1,$2/g; #桁カンマを入れる処理
		print "<font color=$colf>$mo</font>\n";
		if ( $i == $anssv )	{	print "</b>\n"; }
		print "</td><td bgcolor=$colb width=100 align=right>\n";
		if ( $i == $anssv )	{	print "<b>\n"; }
		if ( $ng == 0 ) { $mo = 0 ; }
		else	{	($qu,$ok,$mo,$ng,$ans1,$ans2,$ans3,$ans4) = split(/,/,$QUES[$ng]);	}
		1 while $mo =~ s/(.*\d)(\d\d\d)/$1,$2/g; #桁カンマを入れる処理
		print "<font color=$colf>$mo</font>\n";
		if ( $i == $anssv )	{	print "</b>\n"; }
		print "</td>\n";
		print "</tr>\n";
	}
	print "</table>\n";

	print "</td></tr></table>\n";

}
###<--------------------------------------------------------------
###<---   問題表示サブ
###<--------------------------------------------------------------
sub	Qview_Sub	{
	print "<table border=0 cellspacing=0 cellpadding=0 width=280>\n";
	print "<tr>\n";
	print "<td bgcolor=#000000 rowspan=3 valign=middle><img src=bd3.gif width=10 height=3></td>\n";
	print "<td bgcolor=#000000 rowspan=3><img src=bd1.gif></td>\n";
	print "<td bgcolor=#000000 valign=top><img src=bd3.gif width=220 height=3></td>\n";
	print "<td bgcolor=#000000 rowspan=3><img src=bd2.gif></td>\n";
	print "<td bgcolor=#000000 rowspan=3 valign=middle><img src=bd3.gif width=10 height=3></td>\n";
	print "</tr>\n";

	print "<tr>\n";
	print "<td bgcolor=#000000>\n";
		print "<table border=0 cellspacing=0 cellpadding=0 width=220>\n";
		print "<tr>\n";
		print "<td bgcolor=#000000 valign=middle>\n";
		if ( $FORM{'flg'} == 1 || $_[2] >= 1 )	{
			if ( $FORM{'flg'} != 2 )	{
				print "<input type=radio name=ans value=\"$_[1]\">\n";
			}
			print "<font color=$anscolor>$_[0]\n";
			if ( $FORM{'flg'} == 4 && $_[2] == 1 )	{
				print "&nbsp;(たぶんこれだと･･･)";
			}
			if ( $FORM{'flg'} == 5 )	{
				print "&nbsp;($_[3]%)";
			}
			print "</font>\n";
		}	else	{
			print "&nbsp;";
		}
		print "</td>\n";
		print "</tr>\n";
		print "</table>\n";
	print "</td></tr>\n";
	print "<tr>\n";
	print "<td bgcolor=#000000 valign=bottom><img src=bd3.gif width=220 height=3></td>\n";
	print "</tr>\n";
	print "</table>\n";
}

###<--------------------------------------------------------------
###<---   ゲーム終了時のコメント登録画面表示
###<--------------------------------------------------------------
sub	comadd	{
	if ( !(open(IN,"$logfile")))	{	&fileunlock ;	&error("ログファイル($logfile)のオープンに失敗しました");	}
	@LOG = <IN> ;	close(IN);
	$found = 0 ;
	foreach $BUF ( @LOG )	{
		($qno,$name,$tm,$hst,$ans,$ll01,$ll02,$ll03) = split(/,/,$BUF);
		if ( $FORM{'QNO'} == $qno && $FORM{'name'} eq $name && $host eq $hst ) {
			$found=1;	
			if ( $_[0] == 1 ) { $anssv = $ans - 1 ; } else { $anssv = $ans ; }
		    last ;
		}
	}
	$anssv2 = $anssv;
	if ( $found == 0 ) { 
		&error("不正が見つかったか、ゲームを開始した情報が見あたりません。再スタートして下さい。") ;
	}
	print "<br><font size=5 color=red>\n";
	if ( $_[0] == 1 )	{	print "<br>ドロップアウトしました。\n";	}
	elsif ( $_[0] == 3 ) {	#不正解時のpoint!を決定
		($qu,$ok2,$mo,$ng,$ans1,$ans2,$ans3,$ans4) = split(/,/,$QUES[$anssv]);
		$anssv = $ng ;
	}
	$i=sprintf("%d",$anssv);
	if ( $i != 0 ) { 
		($qu,$ok2,$mo,$ng,$ans1,$ans2,$ans3,$ans4) = split(/,/,$QUES[$anssv]);
		$j = $mo ; 
	} else { $j = 0 ; }
	1 while $j =~ s/(.*\d)(\d\d\d)/$1,$2/g; #桁カンマを入れる処理
	print "<br>あなたの解答数は「$i問」・獲得point!は「$j」です</font>\n";
	print "<form action=$script method=POST>\n";
	print "<input type=hidden name=QNO value=$FORM{'QNO'}>\n";
	print "<input type=hidden name=name value=\"$FORM{'name'}\">\n";
	print "<input type=hidden name=action value=comadd>\n";
	print "<input type=hidden name=result value=$_[0]>\n";
	print "<input type=hidden name=anssv value=$anssv2>\n";
	if ( $_[0] != 3 )	{	print "<input type=hidden name=flg2 value=1>\n";	}
	print "<br>コメントをどうぞ：<input type=text name=comment size=60 maxlength=300 $css_style2>\n";
	print "<br><br><input type=submit value=\"挑戦結果を登録する\" $css_style2>\n";
	print "</form>\n";
}
###<--------------------------------------------------------------
###<---   結果登録
###<--------------------------------------------------------------
sub	regist	{
	&filelock ;		#ファイルロック

	#ゲーム中の利用情報を消去
	if ( !(open(IN,"$logfile")))	{	&fileunlock ;	&error("ログファイル($logfile)のオープンに失敗しました");	}
	@LOG = <IN> ;	close(IN); @NEW = ();
	foreach $BUF ( @LOG )	{
		($qno,$name,$t,$hst,$ans,$ll01,$ll02,$ll03) = split(/,/,$BUF);
		if ( ($FORM{'QNO'} != $qno) || ($FORM{'name'} ne $name) || ($host ne $hst) ) {
			push(@NEW,$BUF);
		}	else	{
			$anssv = $ans - 1 ;
			if ( $FORM{'flg2'} eq '' )	{
				($qu,$ok,$mo,$ng,$ans1,$ans2,$ans3,$ans4) = split(/,/,$QUES[$anssv]);
				$anssv = $ng ;
			}
			$anssv = sprintf("%03d",$anssv);
		}
	}
	if ( !(open(OUT,">$logfile")))	{	&fileunlock ;	&error("ログファイル($logfile)のオープンに失敗しました");	}
	print OUT @NEW;
	close(OUT);

	if ( !(open(IN,"$logfile2")))	{	&fileunlock ;	&error("ログファイル2($logfile2)のオープンに失敗しました");	}
	@LOG = <IN> ;	close(IN);
	@LOG = sort @LOG ; 
	@LOG = reverse @LOG ; 
	@NEW = ();	$found=0;
	foreach $BUF ( @LOG )	{
		($a,$dt,$nm,$com,$result,$anssv2,$hst) = split(/,/,$BUF);
		if ( $a <= $anssv && $found == 0 )	{
			$found=1;
			push(@NEW,"$anssv,$today,$FORM{'name'},$FORM{'comment'},$FORM{'result'},$FORM{'anssv'},$host\n");
		}
		push(@NEW,$BUF);
	}
	if ( $found == 0 ) {
		push(@NEW,"$anssv,$today,$FORM{'name'},$FORM{'comment'},$FORM{'result'},$FORM{'anssv'},$host\n");
	}
	if ( @NEW > $datamax ) { pop(@NEW) ; }
	if ( !(open(OUT,">$logfile2")))	{	&fileunlock ;	&error("ログファイル2($logfile2)のオープンに失敗しました");	}
	print OUT @NEW;
	close(OUT);

	&fileunlock ;	#ファイルロック解除
}
###<--------------------------------------------------------------
###<---   ランキング表示
###<--------------------------------------------------------------
sub	view	{
	if ( !(open(IN,"$logfile2")))	{	&fileunlock ;	&error("ログファイル2($logfile2)のオープンに失敗しました");	}
	@LOG = <IN> ;	close(IN);
	@LOG = sort @LOG ; 
	@LOG = reverse @LOG ; 

	print "<br><br><font size=5>問題：『&nbsp;$title&nbsp;』</font><br><br>獲得point!ランキング<br><br>\n";

	if ( @LOG > 0 ) {
		print "<table border=0 cellspacing=1 cellpadding=0 width=80%><tr><td bgcolor=#ffffff>\n";
		print "<table border=0 cellspacing=1 cellpadding=5 width=100%>\n";
		print "<tr><td bgcolor=$cellheadbgcolor align=right nowrap><font color=$cellheadtxcolor>結果</font></td>\n";
		print "<td bgcolor=$cellheadbgcolor nowrap align=right><font color=$cellheadtxcolor>獲得point!</font></td>\n";
		print "<td bgcolor=$cellheadbgcolor nowrap><font color=$cellheadtxcolor>結果</font></td>\n";
		print "<td bgcolor=$cellheadbgcolor nowrap><font color=$cellheadtxcolor>名前</font></td>\n";
		print "<td bgcolor=$cellheadbgcolor nowrap><font color=$cellheadtxcolor>コメント</font></td>\n";
		print "<td bgcolor=$cellheadbgcolor width=5% nowrap align=right><font color=$cellheadtxcolor>挑戦日</font></td></tr>\n";
	
		foreach $BUF ( @LOG )	{
			($a,$dt,$nm,$com,$result,$anssv2,$hst) = split(/,/,$BUF);
			$i=sprintf("%d",$a);
			print "<tr><td bgcolor=$cellheadbgcolor nowrap align=right><font color=$cellheadtxcolor>$i問</font></td>\n";
			if ( $i != 0 ) { 
				($qu,$ok,$mo,$ng,$ans1,$ans2,$ans3,$ans4) = split(/,/,$QUES[$i]);
				$i = $mo ; 	
				1 while $i =~ s/(.*\d)(\d\d\d)/$1,$2/g; #桁カンマを入れる処理
			}
			print "<td bgcolor=$cellheadbgcolor nowrap align=right><font color=$cellheadtxcolor>$i</font></td>\n";
			if ( $result == 1 ) { 
				$i = "ドロップアウト";
			}	elsif ( $result == 2 ) {
				$i = "全問正解!!!";
			}	else	{
				$i = "$anssv2問目で不正解";
			}
			print "<td bgcolor=$cellheadbgcolor nowrap><font color=$cellheadtxcolor>$i</font></td>\n";
			print "<td bgcolor=$cellheadbgcolor width=100><font color=$cellheadtxcolor>$nm</font></td>\n";
			print "<td bgcolor=$cellheadbgcolor><font color=$cellheadtxcolor>$com</font></td>\n";
			print "<td bgcolor=$cellheadbgcolor nowrap align=right><font color=$cellheadtxcolor>$dt</font></td></tr>\n";
		}
		print "</table></td></tr></table><br><br>\n";
	}
}
###<--------------------------------------------------------------
###<---   メンテナンス画面
###<--------------------------------------------------------------
sub	mainte	{

	if ( $FORM{'pass'} eq '' ) { &error("パスワードを入力してください。") }
	if ( $FORM{'pass'} ne $password ) { &error("管理者以外は処理出来ません。") }
	if ( $FORM{'QNO'} eq '' ) { &error("問題Noを入力してください。") }

	print "<br><br>\n";
	if ( $FORM{'proc'} ne 'add' ) {
		if ( !(open(IN,"$quizfile")))	{	&fileunlock ;	&error("問題ファイル($quizfile)が見つかりません");	}
		@QUES = <IN> ;	close(IN);
		if ( $FORM{'proc'} eq 'edit' )	{
			print "<font size=5 color=red><b>問題の修正を行います</b></font>";
		}	else	{
			print "<font size=5 color=red><b>問題の削除を行います</b></font>";
		}
	}	else	{
		if ( open(IN,"$quizfile"))	{	&fileunlock ;	&error("指定No.の問題ファイル($quizfile)は既に存在しています");	}
		print "<font size=5 color=red><b>問題の新規登録を行います</b></font>";
	}

	print "<form action=$script method=POST>\n";
	print "<input type=hidden name=action value=update>\n";
	print "<input type=hidden name=QNO value=$FORM{'QNO'}>\n";
	print "<input type=hidden name=proc value=$FORM{'proc'}>\n";
	print "<table border=0 cellspacing=0 cellpadding=3>\n";
	print "<tr><td>・最大$Qcount問の問題を登録出来ます。</td></tr>\n";
	print "<tr><td>・問題は４択です。各Ａ〜Ｄ欄に答えを入力し、<br>正解となる部分の○をチェックして下さい。</td></tr>\n";
	print "<tr><td>・問題数と同じ数だけ獲得point!の入力を行ってください。</td></tr>\n";
	print "<tr><td>・途中で間違った場合の獲得point!は何問目の獲得point!とするかの入力を行ってください。（省略可）</td></tr>\n";
	print "</table><br><hr size=1 noshade width=70%>\n";

	$title = $QUES[0] ;	$title =~ s/\n//;
	print "問題のタイトル：<input type=text name=title size=70 maxlength=200 value=\"$title\" $css_style2><br><br>\n";

	for ( $i = 1 ; $i <= $Qcount ; $i++ )	{
		if ( @QUES > 0 && $i <= $#QUES ) {
			($qu,$ok,$mo,$ng,$ans1,$ans2,$ans3,$ans4) = split(/,/,$QUES[$i]);
			$ans4 =~ s/\n//;	#u020427
		}	else	{
			$qu = ""; $ok = ""; $mo = ""; $ng = ""; $ans1 = ""; $ans2 = ""; $ans3 = ""; $ans4 = "";
		}
		$i = sprintf("%03d",$i);
		print "<table border=0 cellspacing=0 cellpadding=3>\n";
		print "<tr><td nowrap>$i問：</td><td colspan=5><input type=text name=Q$i size=80 maxlength=200 value=\"$qu\" $css_style2></td></tr>\n";
		print "<tr><td>&nbsp;</td><td>◆point! =></td><td><input type=text name=M$i size=13 maxlength=20 value=\"$mo\" $css_style2></td>\n";
		print "<td align=right>◆不正解時 =></td><td align=right><input type=text name=NG$i size=5 maxlength=10 value=\"$ng\" $css_style2></td><td>問目のpoint!とする</td></tr>\n";
		print "<tr>\n";
		if ( $ok == 1 ) { $dmy = "checked" ; } else { $dmy = ""; }
		print "<td align=right><input type=radio name=AC$i value=1 $dmy></td>\n";
		$j = "A$i" . "_01" ;
		print "<td>Ａ：</td><td><input type=text name=$j size=15 maxlength=50 value=\"$ans1\" $css_style2></td>\n";
		if ( $ok == 2 ) { $dmy = "checked" ; } else { $dmy = ""; }
		print "<td align=right><input type=radio name=AC$i value=2 $dmy></td>\n";
		$j = "A$i" . "_02" ;
		print "<td>Ｂ：</td><td><input type=text name=$j size=15 maxlength=50 value=\"$ans2\" $css_style2></td>\n";
		print "</tr>\n";
		print "<tr>\n";
		if ( $ok == 3 ) { $dmy = "checked" ; } else { $dmy = ""; }
		print "<td align=right><input type=radio name=AC$i value=3 $dmy></td>\n";
		$j = "A$i" . "_03" ;
		print "<td>Ｃ：</td><td><input type=text name=$j size=15 maxlength=50 value=\"$ans3\" $css_style2></td>\n";
		if ( $ok == 4 ) { $dmy = "checked" ; } else { $dmy = ""; }
		print "<td align=right><input type=radio name=AC$i value=4 $dmy></td>\n";
		$j = "A$i" . "_04" ;
		print "<td>Ｄ：</td><td><input type=text name=$j size=15 maxlength=50 value=\"$ans4\" $css_style2></td>\n";
		print "</tr>\n";
		print "</table>\n";
	}
	print "<br><br>\n";
	if ( $FORM{'proc'} eq 'add' )	{
		print "<input type=submit value=\"問題を登録します\"  $css_style2>\n";
	} elsif ( $FORM{'proc'} eq 'edit' )	{
		print "<input type=submit value=\"問題を更新します\"  $css_style2>\n";
	}	else	{
		print "<input type=submit value=\"問題を削除します\"  $css_style2>\n";
	}
	print "</form>\n";
}
###<--------------------------------------------------------------
###<---   問題更新
###<--------------------------------------------------------------
sub	update	{
	&filelock ;		#ファイルロック
	if ( $FORM{'proc'} ne 'delete' )	{
		push(@QZ,"$FORM{'title'}\n") ;
		for ( $i = 1 ; $i <= $Qcount ; $i++ )	{
			$B1 = "Q" . sprintf("%03d",$i);
			if ( $FORM{$B1} ne '' ) {	#問題が設定されている部分のみ
				$B2 = "AC" . sprintf("%03d",$i);
				$B3 = "M" . sprintf("%03d",$i);
				$B4 = "NG" . sprintf("%03d",$i);
				$B5 = "A" . sprintf("%03d",$i) . "_01" ;
				$B6 = "A" . sprintf("%03d",$i) . "_02" ;
				$B7 = "A" . sprintf("%03d",$i) . "_03" ;
				$B8 = "A" . sprintf("%03d",$i) . "_04" ;
				if ( $FORM{$B3} eq '' || $FORM{$B4} eq '' || $FORM{$B5} eq '' || $FORM{$B6} eq '' || $FORM{$B7} eq '' || $FORM{$B8} eq '' ) {
					&fileunlock ;	#ファイルロック解除
					&error("$i問目に未入力の項目があります。正しい値を入力してください");
				}
				push(@QZ,"$FORM{$B1},$FORM{$B2},$FORM{$B3},$FORM{$B4},$FORM{$B5},$FORM{$B6},$FORM{$B7},$FORM{$B8}\n") ;
			}
		}

		if ( !(open(OUT,">$quizfile")))	{	&fileunlock ;	&error("クイズファイル($quizfile)のオープンに失敗しました");	}
		print OUT @QZ;
		close(OUT);

		if ( $FORM{'proc'} eq 'add' )	{
			#パーミッション変更
			chmod(0666,"$quizfile");
			#ランキング用ファイル作成
			if ( !(open(OUT,">$logfile2")))	{	&fileunlock ;	&error("ランキング用ファイル($logfile2)のオープンに失敗しました");	}
			close(OUT);
			# パーミッション変更
			chmod(0666,"$logfile2");
		}
	}	else	{
		if (-e $quizfile) { unlink($quizfile); }	#問題ファイル削除
		if (-e $logfile2) { unlink($logfile2); }	#ランキングファイル削除
	}	
	&fileunlock ;	#ファイルロック解除

	print "<br><br><br><br><br><br><br>\n";
	if ( $FORM{'proc'} eq 'add' )	{
		print "問題を登録しました。\n";
	} elsif ( $FORM{'proc'} eq 'edit' )	{
		print "問題を修正しました。\n";
	}	else	{
		print "問題を削除しました。\n";
	}
	print "<br><br><br><br><br>\n";
	
}
###<--------------------------------------------------------------
###<---   エラー処理
###<--------------------------------------------------------------
sub error {	print "<br><br><br><br><br>$_[0]<br><br><br><br><br>";	&footer;	exit;	}
###<--------------------------------------------------------------
###<---   ファイルロック設定
###<--------------------------------------------------------------
sub filelock {
	foreach (1 .. 5) {
		if (-e $lockfile) { sleep(1); }
		else {	open(LOCK,">$lockfile");	close(LOCK);	return;		}
	}
	&error("只今他の方が書き込み中です。ブラウザの「戻る」で戻って再度登録を行って下さい。"); 
}
###<--------------------------------------------------------------
###<---   ファイルロック解除
###<--------------------------------------------------------------
sub fileunlock {	if (-e $lockfile) { unlink($lockfile); }	}
###<-------------------------------------------------------------
###<---   ログファイルチェック
###<--------------------------------------------------------------
sub logchk {
	if ( !(opendir(DIR,"$logdir")))	{	&error("ログ保存用フォルダ($logdir)が見つからないか又は開けません");	}
	@LOGCNT	= grep(/\.ini/,readdir(DIR));
	closedir(DIR) ;
}
