#! c:/perl/bin/perl # # calen2.cgi # # 2.0 : 6/10/07 : calen.cgiより機能を追加 # # http://www.hidekik.com # # Copyright(c) 2006-2007, Hideki Kanayama All Rights Reserved use strict; use CGI::Carp qw(fatalsToBrowser); use CGI; use File::Basename; use Date::Calc qw(Day_of_Week); my $version = "2.0"; my $lastupdatedyear = "2007"; my $script = basename($0); # Use localtime? my $localtime_en = 0; # Offset from GMT if $localtime_en = 0 my $offset = 9; my $title = 'プリントアウト用カレンダー2'; my $backlink = "calen2.html"; my $backname = "解説ページへ"; my $charset = "Shift_JIS"; my $now = time; my $q = new CGI; my $cgierror = $q->cgi_error; &error($cgierror) if ($cgierror); my $reqyear = $q->param('yearset'); my $reqmon = $q->param('monset'); my $yearormon = $q->param('yearormon'); my $aspect = $q->param('aspect'); my $blank = $q->param('blank'); my @weekname = qw(Sunday Monday Tuesday Wednesday Thursday Friday Saturday); my @monname = qw(January February March April May June July August September October November December); if ($yearormon ne ''){ &gencalen; } else { &inputform; } sub inputform { &htmlhead($title); my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = $localtime_en ? localtime($now) : gmtime($now + $offset * 3600); print "
\n"; print "$backname

\n"; print "

\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
"; print "年\n"; print "月\n"; print "
"; print qq(一ヶ月表\示\n); print ""; print qq(一年表\示\n); print "
"; print "空欄"; print qq(\n); print ""; print qq(3x4\n); print qq(4x3\n); print "
"; print qq(\n); print "
\n"; &htmltail; } sub gencalen { &htmlhead; if ($yearormon eq 'year'){ &yeargen; } else { &monthgen($reqmon); } print ""; print ""; exit; } sub yeargen { my %moncol = (fxt => 3, txf => 2); my %monrow = (fxt => 2, txf => 3); my $tablecol = $moncol{$aspect}+1; print "

$reqyear

\n"; print "\n"; foreach my $row (0 .. $monrow{$aspect}){ print "\n"; foreach my $col (0 .. $moncol{$aspect}){ print "\n"; } print "\n"; } print "
\n"; my $mon = $col+$row*($moncol{$aspect}+1); print "$monname[$mon]\n"; &monthgen($mon+1); print "
\n"; } sub monthgen { my $reqmon = shift; my $swday = Day_of_Week($reqyear,$reqmon,1) % 7; if ($yearormon eq 'mon'){ print "

$monname[$reqmon-1], $reqyear

\n"; } my $border; my $align; if ($yearormon eq 'mon') { $border=1; $align = "right"; } else { $border=0; $align = "center"; } print "\n"; foreach my $week (-1 .. 5) { last if ($week == 5 and !&monthdaycheck($reqyear,$reqmon,36-$swday)); print "\n"; foreach my $day (0 .. 6){ if ($week == -1){ print "\n"; } else { print "\n"; } } print "\n"; } print "
"; if ($yearormon eq 'mon'){ print "$weekname[$day]"; } else { print substr($weekname[$day],0,1); } print ""; if ($week == 0 and $day >= $swday or $week != 0){ my $today = $day + $week * 7 - $swday + 1; if ($yearormon eq 'mon'){ if (&monthdaycheck($reqyear,$reqmon,$today)){ print "$today"; } else { print "
"; } print "
" x $blank; } else { if (&monthdaycheck($reqyear,$reqmon,$today)){ print "$today"; } else { print " "; } } } else { print " "; } print "
"; } sub htmlhead { my $title = shift; print $q->header(-charset=>"$charset"); print ""; print < $title HEADPRINT } sub htmltail { my $mysite = 'http://www.hidekik.com/'; print "

calen2.cgi $version
Copyright(c) 2006-$lastupdatedyear, hidekik.com
\n"; print ""; print ""; exit; } sub error { my ($msg) = shift; &htmlhead($msg); print "
$msg
\n"; &htmltail; exit; } sub monthdaycheck { my ($year,$month,$day) = @_; my @monthdays = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); my $md = $monthdays[$month-1]; ++$md if ($month == 2 and $year % 4 == 0 and ($year % 100 != 0 or $year % 400 == 0)); return ($day <= $md and $day >= 1); }