#!/usr/local/bin/perl ############################################################################ # # # form.cgi Version 1.0 # # Written by Keiichi Nishimura k1-nishi@y1.netpia.ne.jp # # Created 2004/04/23 # # 機能:$FORM{'template'}で指定したファイル中の%%%xxx%%% # # を$FORM{'xxx'}で置き換えて画面出力 # # <修正履歴> # # 2003/0x/xx xxxxxxxxxxxxxxx 1.1 Keiichi Nishimura # # # ############################################################################ ############################################################################ # サブルーチンの読み込み # ############################################################################ require './parsform.pl'; # 入力内容解析 require './template.pl'; # テンプレートファイル置換 require 'cgi-bin/jcode.pl'; # コード変換 require './date_sub.pl'; # 日付関連サブルーチン ############################################################################ # 設定ファイル読み込み # ############################################################################ #◆祝祭日設定ファイル $HOLIDAY_FILE = "./holiday.csv"; #◆曜日別集配締切時刻設定ファイル $TIME_LIMIT_FILE = "./time_limit.csv"; ############################################################################ # 入力内容の解析 # ############################################################################ if (!(&parse_form)) { &display_message("エラー","$Error_Message"); } ############################################################################ # templateの妥当性チェック # ############################################################################ if ($FORM{'template'} eq '') { &display_message("エラー","templateが指定されていません。"); } if (!(-e $FORM{'template'})) { &display_message("エラー","$FORM{'template'}が存在しません。"); } ############################################################################ # 日付算出 # ############################################################################ ($hour, $mday, $mon, $year) = (localtime)[2, 3, 4, 5]; $year += 1900; # 年 $mon++; # 月 # 今日は平日か判定 $rtn = &check_holiday("$year","$mon","$mday"); $rtn2 = &GetWeekDay("$year","$mon","$mday"); # 曜日別締切時刻ファイル読込 if (!open(FILE,"$TIME_LIMIT_FILE")) { &display_message('エラー',"曜日別集配締切時刻設定ファイルが読み出せません."); } @time_limit_array = ('16','16','16','16','16','16','16'); # (日,・・・,土) #------------------------- while () { #タブコードを無視 s/¥t//g; #行頭がシャープまたは空行の場合は次へ if (/^(#|¥n)/) { next; } #改行コードを切り落し chomp; #所定のフォーマットに合っているか? if (/(¥d*)¥,(¥d+)¥,(.+)/) { # 年が未指定の場合はチェックしない $time_limit_array[$1] = $2; } else { &display_message('エラー',"祝祭日設定ファイルのデータが不正です($_)") } } close(FILE); #---------------------------------------- #if (($rtn == 1) or ($rtn2 == 0) or ($rtn2 == 7)) { if (($rtn == 1) or ($rtn2 == 0)) { # 日もしくは休日の場合は翌々営業日を算出 $i = 0; $j = 0; do { $i++; ($yy, $mm, $dd) = &add_date("$i"); $rtn = &check_holiday("$yy","$mm","$dd"); $rtn2 = &GetWeekDay("$yy","$mm","$dd"); if (($rtn == 1) or ($rtn2 == 0)) { } else { $j++; } } while ( $j < 2 ); }else { # 平日 if ($hour < $time_limit_array[$rtn2]) { # if ($hour < 16) { # 締切時刻以前(翌営業日を算出) $k = 0; } else { # 締切時刻以降(翌々営業日を算出) $k = 2; } $i = 0; $j = 0; do { $i++; ($yy, $mm, $dd) = &add_date("$i"); $rtn = &check_holiday("$yy","$mm","$dd"); $rtn2 = &GetWeekDay("$yy","$mm","$dd"); if (($rtn == 1) or ($rtn2 == 0)) { } else { $j++; } } while ( $j < $k ); } # 日付のセレクトボックスセット $FORM{'this_year'} = $yy; $FORM{'next_year'} = $yy + 1; $FORM{"mon_$mm"} = "SELECTED"; $FORM{"mday_$dd"} = "SELECTED"; $FORM{'date'} = "$yy/$mm/$dd"; ############################################################################ # テンプレートを置換し画面出力 # ############################################################################ if (!(&parse_template("$FORM{'template'}"))) { &display_message("エラー","$Error_Message"); } exit; ############################################################################ # メッセージ表示サブルーチン # ############################################################################ sub display_message { # &display_message("msg0","msg1",・・・); local (@msg) = @_; local ($i); print "Content-type: text/html¥n¥n"; print <<"EOF";

$_[0]

EOF foreach $i (1 .. $#msg) { print "$msg[$i]¥n"; } print <<"EOF";

[戻る]

EOF exit; }