);
############################################################
# 年月の前後を取得
$preyear = $query_year;$nextyear = $query_year;
$premon = $query_mon - 1;
if($premon <= 0){$premon = 12; $preyear--;}
$nextmon = $query_mon + 1;
if($nextmon >= 13){$nextmon = 1; $nextyear++;}
if(@nen[0] > $preyear){
print "←前の月・";
}else{
print "←前の月・";
}
if(@nen[$nensize] < $nextyear){
print "次の月→/";
}else{
print "次の月→/";
}
if("$query_year/$query_mon" ne "$year/$mon"){
print "今月へ";
}else{
print "今月へ";
}
$datafiledir = "$datadir/$query_year.$query_mon";
@filelist = ();
#http://www.fin.ne.jp/webcal/schedule.cgi?year=1998&mon=12&day=11
#関だ様のご助言により
#while(<$datafiledir/*>){push(@filelist, $_);}
opendir(DIR,"$datafiledir") && (@filelist = readdir(DIR), closedir(DIR));
# もしスケジュールがなければリンクはしない
## if($#filelist >= 0){
## print "$query_year年$query_mon月の\予\約状況一覧 ";
## }else{
## print "$query_year年$query_mon月の\予\約状況一覧 ";
## }
##########################################################
# カレンダー本体の作成
print qq(
);
for($i = 0; $i < 7; $i++){
$youbi = $weekstart+$i;
if($youbi > 6){$youbi = 0;}
$weekday = @wdays[$youbi];
if($i == (6 - $weekstart)){
print "| ";
}elsif($i == (6 * $weekstart)){
print " | ";
}else{
print " | ";
}
print " $weekday";
print " | "
}
#月の第1週めの始めの曜日を求める
# if ($query_year eq 2005){
#$startday = &lib'getyoubi($query_year,$query_mon,2);
# } else {
# if ($query_year eq 2009){
#$startday = &lib'getyoubi($query_year,$query_mon,2);
# } else {
#$startday = &lib'getyoubi($query_year,$query_mon,1);
# }
# }
#月の第1週めの始めの曜日を求める
$startday = &lib'getyoubi($wyear,$wmon,1);
#第1日
$tama = 1;
#最終日
$tamaend = &lib'getgetumatu($wyear,$wmon);
# 繰返し処理
@yearly = &lib'kurikaeshi_yearly($wyear,$yearlydata,$yearlydata2);
@monthly = &lib'kurikaeshi_monthly($monthlydata);
@weekly = &lib'kurikaeshi_weekly($weeklydata);
##########################################################
# http://www.fin.ne.jp/webcal/schedule.cgi?year=1999&mon=2&day=17
# 小林様のご助言により、春分の日、秋分の日、振替休日をサポート
# すごいっす(^_^)
# 2000年1月6日
# 2000年ハッピーマンデー対応(クソ!勝手に休みを変えるな!)
#
if(open(DATA,"<$yearlydata")){
while () {
if($_ !~ /^#/){
chop;
push(@yearly, $_);
}
}
close(DATA);
}
# 成人の日の割出し(2000年以降に適用)
if($query_year >= 2000){
if(($seijin = &lib'getyoubi($query_year,1,1)) <= 1){
$seijin = 9 - $seijin;
push(@yearly,"1\t$seijin\t成人の日\t1");
}else{
$seijin = 16 - $seijin;
push(@yearly,"1\t$seijin\t成人の日\t1");
}
}else{
push(@yearly,"1\t15\t成人の日\t1");
}
# 体育の日の割出し(2000年以降に適用)
if($query_year >= 2000){
if(($taiiku = &lib'getyoubi($query_year,10,1)) <= 1){
$taiiku = 9 - $taiiku;
push(@yearly,"10\t$taiiku\t体育の日\t1");
}else{
$taiiku = 16 - $taiiku;
push(@yearly,"10\t$taiiku\t体育の日\t1");
}
}else{
push(@yearly,"10\t10\t体育の日\t1");
}
# 海の日の割出し(2000年以降に適用)
if($query_year >= 2000){
if(($uminohi = &lib'getyoubi($query_year,7,1)) <= 1){
$uminohi = 16 - $uminohi;
push(@yearly,"7\t$uminohi\t海の日\t1");
}else{
$uminohi = 23 - $uminohi;
push(@yearly,"7\t$uminohi\t海の日\t1");
}
}else{
push(@yearly,"7\t20\t海の日\t1");
}
# 敬老の日の割出し(2000年以降に適用)
if($query_year >= 2000){
if(($keirou = &lib'getyoubi($query_year,9,1)) <= 1){
$keirou = 16 - $keirou;
push(@yearly,"9\t$keirou\t敬老の日\t1");
}else{
$keirou = 23 - $keirou;
push(@yearly,"9\t$keirou\t敬老の日\t1");
}
}else{
push(@yearly,"9\t15\t敬老の日\t1");
}
# 春分の日の割出し(1980年以降に適用)
$shun = int(20.8431+0.242194*($query_year-1980)-int(($query_year-1980)/4));
push(@yearly,"3\t$shun\t春分の日\t1");
# 秋分の日の割出し(1980年以降に適用)
$shuu = int(23.2488+0.242194*($query_year-1980)-int(($query_year-1980)/4));
push(@yearly,"9\t$shuu\t秋分の日\t1");
# 振替休日のチェック
@furikae = ();
$yearlysize = $#yearly;
for($i = 0; $i <= $yearlysize; $i++){
($yearly_mon,$yearly_day,$yearly_dat,$yearly_flag) = split(/\t/,@yearly[$i]);
$weekday = &lib'getyoubi($query_year,$yearly_mon,$yearly_day);
if ($weekday == 0 && $yearly_dat ne "憲法記念日" && $yearly_dat ne "国民の休日"){
$yearly_day_tmp = $yearly_day + 1;
push(@furikae,"$yearly_mon\t$yearly_day_tmp\t振替休日\t1");
}
}
$furikaesize = $#furikae;
if ($furikaesize >= 1){push(@yearly,@furikae);}
$yearlysize = $#yearly;
##########################################################
if(open(DATA,"<$monthlydata")){
while () { if($_ !~ /^#/){chop; push(@monthly, $_);}}
close(DATA);
}
$monthlysize = $#monthly;
if(open(DATA,"<$weeklydata")){
while () { if($_ !~ /^#/){chop; push(@weekly, $_);}}
close(DATA);
}
$weeklysize = $#weekly;
$startweek = 1;
while($tama <= $tamaend){
print "\n";
for($i = 0; $i < 7; $i++){
#もし第1週目ならば
if($startweek == 1){
if($i >= $startday){
($yearly_dat,$yearly_flag) = &getyearly;
($monthly_dat,$monthly_flag,$monthly_hour,$monthly_minits) = &getmonthly;
($weekly_dat,$weekly_flag,$weekly_hour,$weekly_minits) = &getweekly;
$flag = $yearly_flag+$monthly_flag+$weekly_flag;
#もし土曜日ならば
if($i == (6 - $weekstart)){
&Is_Sat;
#もし日曜日ならば
}elsif($i == (6 * $weekstart)){
&Is_Sun;
#もし平日ならば
}else{
&Is_Day;
}
&maketama;
$tama++;
}else{
print "| \n";
print " ";
print " | \n";
}
#もし第1週目でなければ
}else{
if($tama <= $tamaend){
($yearly_dat,$yearly_flag) = &getyearly;
($monthly_dat,$monthly_flag,$monthly_hour,$monthly_minits) = &getmonthly;
($weekly_dat,$weekly_flag,$weekly_hour,$weekly_minits) = &getweekly;
$flag = $yearly_flag+$monthly_flag+$weekly_flag;
#もし土曜日ならば
if($i == (6 - $weekstart)){
&Is_Sat;
#もし日曜日ならば
}elsif($i == (6 * $weekstart)){
&Is_Sun;
#もし平日ならば
}else{
&Is_Day;
}
&maketama;
$tama++;
}else{
$tama++;
print "\n";
print " ";
print " | \n";
}
}
}
print " \n";
$startweek++;
}
##########################################################
# カレンダのフッタ
# コピーライトの表示だけ残しておいてくださいm(_ _)m
print qq(
|
■記号の説明■
×:満 室
△:残室わずか
○:空室あり
|