#!/usr/bin/perl # ************ データ入力 ************ sub di_input{ ($datafile,$rcrdkey) = @_; if($rcrdkey ne "confirm" && ($entrynmbr != $datanmbr * $f1_colnmbr || ($g_upfileno != 0 && $g_upfileno != $datanmbr * $dd_upcol))){ $errref1 = "プログラムエラー:".$prjcode." - ".$work." - ".$prgname." - "."di_input"; $errmsg = "レコード数 ".$datanmbr." x 項目数".$f1_colnmbr." != 入力データ総数 ".$entrynmbr."\n      x 単位数 ".$dd_upcol." != アップロード総数 ".$g_upfileno."\n"; &io_errexit($errmsg,$errref1,$g_manager); } #print "DEBUG 10di30 - sub di_input 11 - $rcrdkey - $datafile
\n"; # &io_lockup($g_lockfile,"err"); if($rcrdkey eq "new"){ @f1_data = @entrylist; if($f1_order eq "inc" || $f1_order eq "dec"){ $f1_data[0] = &st_strform($f1_keylen,"_","tail",$f1_data[0]); } if($operator eq "manager"){ $f1_data[6] = $date_min; $f1_data[7] = $date_day; } else{ $f1_data[6] = $date_min."未確認"; $f1_data[7] = "0000-00-00"; } $f1_data[8] = $date_day; $f1_data[9] = "0000-00-00"; if($dd_upcol>0){&di0_upfilelist(0);} &fl_rcrdinsert($datafile,"err"); } elsif($rcrdkey eq "one"){ @f1_data = @entrylist; $f1_data[8] = $date_day; if($f1_data[2] eq "" && $operator eq "manager"){ $f1_keynmbr = 1; $f1_keylist[0] = "0_strict_".$f1_data[0]; &di_delrcrd($dd_datafile,@f1_keylist); $dspmsg = $f1_data[0].":レコード削除完了。\n"; &io_dspexit($dspmsg); exit; } if($f1_data[2] =~ m/取消/){ $f1_data[9] = $date_day; } if($dd_upcol>0){&di0_upfilelist(0);} &fl_rcrdrewrite($datafile,"err"); } elsif($rcrdkey eq "confirm"){ $f1_keynmbr = 1; $f1_keylist[0] = $keycode; if($f1_keylist[0] == ""){$f1_keylist[0] = $entrylist[0];} &fl_rcrdsearch($datafile); @f1_data = split("_SP_",$f2_rcrdlist[0]); if($operator eq "outside"){ $f1_data[6] =~ s/未確認//; } else{ $f1_data[7] = $date_day; } &fl_rcrdrewrite($datafile,"err"); } elsif($rcrdkey eq "all"){ #print "DEBUG 10di30 - sub di_input 41 - $rcrdkey - $datafile
\n"; my $n1=0; for($i=0;$i<$datanmbr;$i++){ for($j=0;$j<$f1_colnmbr;$j++){ $f1_data[$j] = $entrylist[$i*$f1_colnmbr+$j]; } #print "DEBUG 10di30 - sub di_input 42 - $rcrdkey - $dd_upcol - $f1_data[0]
\n"; if($f1_data[2] eq ""){next;} else{ if($f1_order eq "lst" || $f1_order eq "fst"){ if($f1_data[0] eq ""){ $f1_data[0] = &st_strform($f1_keylen,"0","head",$n1+1); } } else{ $f1_data[0] = &st_strform($f1_keylen,"_","tail",$f1_data[0]); } if($f1_data[6] eq ""){$f1_data[6] = $date_day;} if($f1_data[7] eq ""){$f1_data[7] = $date_day;} $f1_data[8] = $date_day; if($f1_data[9] eq ""){$f1_data[9] = "0000-00-00";} if($f1_data[2] =~ m/取消/){ $f1_data[9] = $date_day; } if($dd_upcol>0){&di0_upfilelist($i);} $f1_record = &fl_rcrdform; #00fx10 #print "DEBUG 10di30 - sub di_input 49 - $rcrdkey - $f1_record
@f1_upfilelist
\n"; $f1_LINES[$n1+2] = $f1_record; $n1++; } } #print "DEBUG 10di30 - sub di_input 51 - $rcrdkey - $f1_record
\n"; @f1_LINES = sort @f1_LINES; &io_fileread("2",$datafile,"err"); $f1_SIZE = $n1 + 2; $f1_LINES[0] = $f2_LINES[0]; $f1_LINES[1] = $f2_LINES[1]; $datanmbr = $n1; $f1_SIZE = $datanmbr+2; &io_fileoverwr("",$datafile,"err"); } # &io_unlock($io_lockfile,""); #print "DEBUG 10di30 - sub di_input 53 - $i - $rcrdkey -
\n"; if($dd_upcol>0){&io_upfile(@f1_upfilelist);} #print "DEBUG 10di30 - sub di_input 63 - $i - $rcrdkey - $datafile
\n"; } sub di0_upfilelist{ my ($i) = @_; my @upname = split("_SPU_",$f1_data[26]); my @oldupfile = split("_SPU_",$f1_data[27]); if($f1_data[0] ne ""){$subcode = $f1_data[0];} else{$subcode=&st_rndmform(6);} # 「 lst 」「 fst 」 新規の場合、キーコード確定前のため for($j=0;$j<$dd_upcol;$j++){ $n = $i * $dd_upcol + $j; if($upname[$j] eq ""){ $upfile = ""; } elsif($g_upfilename[$n] ne "" && $g_upfilename[$n] ne "----"){ $upfile = $dd_upfiledir.$prjcode.$filecode.$subcode."_".$g_upfilename[$n]; $f1_upfilelist[$n] = $upfile; unlink $oldupfile[$j]; } else{ $upfile = $oldupfile[$j]; } if($j==0){ $f1_data[27] = $upfile; } else{ $f1_data[27] = $f1_data[27]."_SPU_".$upfile; } } } # ********** 保存用 HTML ファイル作成 ********** sub di_holdhtml{ my ($prjcode,$filecode,) = @_; $work = "display"; $operator ="outside"; $f1_filenmbr = 1; $f1_filelist[0] = $datafile; $f1_keynmbr = 0; # &dd_rcrdselect("and",$rcrdorder,$prjcode,$grpcode,$filecode); #print "DEBUG 10di30 - sub di_holdhtml 11 - $dd_datafile
\n"; &dd_rcrdset($dd_datafile,"all",0); my $htmladd = $dd_htmldir.$prjcode.$filecode.".html"; #print "DEBUG 10di30 - sub di_holdhtml 12 - $dd_brd00html
\n"; &dd_display($dd_brd00html,$work,"all",$htmladd); #print "DEBUG 10di30 - sub di_holdhtml 13 - $dsphtml
\n"; } sub di_linkhtml{ ($prjcode) = @_; splice @f2_LINES; $link00html = "../".$adjdir."cntrl/cg_10aalink00.html"; $linkhtml = $dd_htmldir.$prjcode."link.html"; $f1_filenmbr = &io_fileread("",$link00html,"err"); @f1_LINES = @f2_LINES; $f2_filenmbr = &io_dirsfilelist($dd_htmldir); my $str = $f2_filelist[$f2_filenmbr-1]; if($str =~ /link.html/){$str = $f2_filelist[$f2_filenmbr-2];} $f1_LINES[3] =~ s/cg_10aadsp00.html/$str/; #print "DEBUG 10di30 - sub di_linkhtml 12 - $link00html - $linkhtml
\n"; &io_filewrite("",$linkhtml,"err"); #print "DEBUG 10di30 - sub di_linkhtml 13 - $link00html - $linkhtml
\n"; } # ********** メール発信 ********** sub di_mailconfirm{ ($g_manager,$email,$dspmsg)= @_; $dspmsg="以下のとおり受信いたしました。\n\n"; $f1_title[0]="受信番号"; for($i=0;$i<$f1_colnmbr-1;$i++){ $title1 = $f1_title[$i]; # &jcode'convert(*title1, 'euc'); if($title1 !~ m/\*\*\*/){ # $f1_title[$i] =~ s/申\込日/申込日/; $f1_title[$i] =~ s/_SPU_//g; $f1_data[$i] =~ s/_SPU_/、/g; $dspmsg=$dspmsg.$f1_title[$i].":".$f1_data[$i]."\n"; } } $dspmsg = $dspmsg."\nありがとうございました。\n"; $mailsbjct = "ManagerMail(送信受付):".$prgname."\n"; $mailmsg = $mailsbjct."\n".$dspmsg; &io_mailtext($g_manager,$g_manager,$mailsbjct,$mailmsg); $mailsbjct = "ありがとうございます\n"; &io_mailtext($g_manager,$email,$mailsbjct,$dspmsg); } # ********** バックアップ ********** sub di_backup{ ($datafile,$filecode,$backupdate) = @_; $backupdate = $filecode."_".$backupdate; $size = &io_fileread("",$datafile,"err"); @f1_LINES = @f2_LINES; for($i=0;$i<$size;$i++){ $f1_LINES[$i] =~ s/upfile/backup/g; $f1_LINES[$i] =~ s/$filecode/$backupdate/g; } $backupfile = $datafile; $backupfile =~ s/$dd_datadir/$dd_backupdir/; $backupfile =~ s/$filecode/$backupdate/; &io_filenewcr("",$backupfile,"err"); # upfile 作成 $f2_filenmbr = &io_dirsfilelist($dd_upfiledir); for($f=0;$f<$f2_filenmbr;$f++){ if($f2_filelist[$f] =~ m/$filecode/){ $oldfile = $f2_filelist[$f]; $newfile = $oldfile; $newfile =~ s/upfile/backup/; $newfile =~ s/$filecode/$backupdate/; $errmsg=&io_fileread("0",$oldfile,""); if($errmsg !~ m/Error/){ $size = -s $oldfile; $size = read(f1_FILE,$filevalue,$size); close(f1_FILE); } $errmsg=&io_filewrite("0",$newfile,""); if($errmsg !~ m/Error/){ print f1_FILE "$filevalue"; close(f1_FILE); } # $size = &io_fileread("",$oldfile,"err"); # @f1_LINES = @f2_LINES; # &io_filenewcr("",$newfile,"err"); } } return($backupfile); } # ********** 削除(ファイル)********** sub di_delfile{ ($filecode,$backupdate) = @_; $errref2 = "操作エラー:".$prjcode." - ".$work." - ".$prgname." - "."di_input"; if($backupdate ne ""){ $filecode = $filecode."_".$backupdate; $dir = $dd_backupdir; } else{ $dir = $dd_datadir; } $f2_filenmbr = &io_dirsfilelist($dir); #print "DEBUG sub di_delfile 01 - $dir - $f2_filenmbr - $filecode
\n"; if($f2_filenmbr <= 0){ $errmsg = $dir.":ディレクトリにはファイルが存在しません。\n"; &io_errexit($errmsg,$errref2,$g_manager); exit; } $delnmbr=0; $delnmbr1=0; $delnmbr2=0; for($f=0;$f<$f2_filenmbr;$f++){ if($f2_filelist[$f] =~ /$filecode/){ unlink $f2_filelist[$f]; $delnmbr++; } } if($delnmbr == 0){ $errmsg = $dir." - ".$filecode.":該当のファイルは存在しません。\n"; &io_errexit($errmsg,$errref2,$g_manager); exit; } if($backupdate eq ""){ $f2_filenmbr=&io_dirsfilelist($dd_upfiledir); for($f=0;$f<$f2_filenmbr;$f++){ if($f2_filelist[$f] =~ /$filecode/){ unlink $f2_filelist[$f]; $delnmbr1++; } } $f2_filenmbr=&io_dirsfilelist($dd_htmldir); for($f=0;$f<$f2_filenmbr;$f++){ if($f2_filelist[$f] =~ /$filecode/){ unlink $f2_filelist[$f]; $delnmbr2++; } } } $dspmsg = $filecode.":のファイル(".$dir." - ".$delnmbr.")、および関連のファイル(".$dd_upfiledir." - ".$delnmbr1."、".$dd_htmldir." - ".$delnmbr2.")は削除されました。"; return $dspmsg; } # ********** 削除(レコード)********** sub di_delrcrd{ ($datafile) = @_; #print "DEBUG 10di30 sub di_delrcrd 01 - $datafile - $f1_keynmbr
@f1_keylist
\n"; @f8_keylist = @f1_keylist; $size = &io_fileread("",$datafile,"err"); $f2_rcrdnmbr = 0; $f1_SIZE=2; $f1_LINES[0] =$f2_LINES[0]; $f1_LINES[1] =$f2_LINES[1]; for($i=2;$i<$size;$i++){ $check = 0; $line = $f2_LINES[$i]; # $line = st_hankaku_form($f2_LINES[$i]); # &jcode'convert(*line, 'euc'); @fld = split("_SP_",$line); #print "DEBUG sub di_delrcrd 01 - $datafile - $f1_keynmbr
@f1_keylist
\n"; for(my $k=0;$k<$f1_keynmbr;$k++){ # $keylist = st_hankaku_form($f1_keylist[$k]); # &jcode'convert(*keylist, 'euc'); # my @keyand = split("_",$keylist); my @keyand = split("_",$f1_keylist[$k]); my $andnmbr = @keyand; if($f1_keylist[$k] eq "" || $keyand[2] eq ""){next;} elsif($keyand[0] ge "0" && $keyand[0] le "".$f1_colnmbr){$chkfld = $fld[$keyand[0]+0];} else{$chkfld = $line;} # &jcode'convert(*chkfld, 'euc'); #print "DEBUG 10di30 sub di_delrcrd 7 - $i - $k - $check - $chkfld
\n"; if($keyand[1] eq "range"){ if($chkfld ge $keyand[2] && $chkfld le $keyand[3]){ $f8_keylist[$k] = "==".$f8_keylist[$k]; $check = 1;last; } } else{ $check = 1; for(my $k1=2;$k1<$andnmbr;$k1++){ if($keyand[1] eq "strict"){ #print "DEBUG 10di30 sub di_delrcrd 8 - $i - $andnmbr - $k1 - $check - $chkfld - $keyand[$k1]
\n"; if($chkfld ne $keyand[$k1]){$check = 0;last;} } else{ #print "DEBUG sub di_delrcrd 8 - $i - $k - $check - $chkfld - $keyand[$k1] - $f2_rcrdnmbr - $f1_SIZE
\n"; $len=length($keyand[$k1]); if(substr($chkfld,0,$len) ne $keyand[$k1]){$check = 0;last;} } } if($check == 1){ $f8_keylist[$k] = "==".$f8_keylist[$k]; last; } } #print "DEBUG sub di_delrcrd 9 - $i - $k - $check - $chkfld - $keyand[2] - $f2_rcrdnmbr - $f1_SIZE
\n"; } #print "DEBUG sub di_delrcrd 10 - $i - $k - $check - $chkfld - $keyand[2] - $f2_rcrdnmbr - $f1_SIZE
@8_keylist
\n"; if($check == 1){ $f2_rcrdlist[$f2_rcrdnmbr] = $f2_LINES[$i]; $f2_rcrdnmbr++; } else{ $f1_LINES[$f1_SIZE] = $f2_LINES[$i]; $f1_SIZE++; } } &io_fileoverwr("",$datafile,"err"); &di0_delupfile; $dspmsg = "削除レコード数:".$f2_rcrdnmbr."\n"; for($i=0;$i<$f2_rcrdnmbr;$i++){ $dspmsg=$dspmsg.substr($f2_rcrdlist[$i],0,$f1_keylen)."、"; } $dspmsg = $dspmsg."
該当レコードなし:\n"; $f8_keynmbr = 0; for(my $k=0;$k<$f1_keynmbr;$k++){ #print "DEBUG di_delrcrd 07 - $k - $f8_keylist[$k]
\n"; if($f8_keylist[$k] ne "" && $f8_keylist[$k] !~ m/==/){ $f8_keynmbr++; @f8key = split("_",$f8_keylist[$k]); shift @f8key; shift @f8key; $f8key1 = join("_",@f8key); $dspmsg = $dspmsg.$f8key1."、"; } } $dspmsg = $dspmsg."(キー数:".$f8_keynmbr."、空欄含む)"; return $dspmsg; } sub di0_delupfile{ for($i=0;$i<$f2_rcrdnmbr;$i++){ @fld = split("_SP_",$f2_rcrdlist[$i]); @upfile = split("_SPU_",$fld[27]); for($j=0;$j<$dd_upcol;$j++){ if(-e $upfile[$j]){ unlink $upfile[$j]; } } } } # ********* 入力内容チェック ******** sub di_inputcheck{ # 入力条件チェック(受信・登録リスト) (my $checkfld) = @_; #print "DEBUG cg_10di30 sub di_inputcheck 21 - $checkfld - $dd_datafile
\n"; if($checkfld eq ""){return;} my @fld = split("_",$checkfld); my $nmbr = @fld; if($rcrdkey eq "new" || $rcrdkey eq "one"){ $size = &io_fileread("",$dd_datafile,"err"); #print "DEBUG cg_10di30 sub di_inputcheck 30 - $i - $entrylist[$e*$f1_colnmbr] - $f2_data[0] - $entrylist[$e*$col+1] - $f2_data[1]- $entrylist[$e*$col+5] - $f2_data[5]
\n"; for(my $i=2;$i<$size;$i++){ @f2_data = split("_SP_",$f2_LINES[$i]); if($rcrdkey eq "one" && $entrylist[$e*$f1_colnmbr] eq $f2_data[0]){next;} #print "DEBUG sub dd_inputcheck 31 - $i - $entrylist[$e*$f1_colnmbr] - $f2_data[0] - $entrylist[$e*$col+1] - $f2_data[1]- $entrylist[$e*$col+5] - $f2_data[5]
\n"; for(my $j=0;$j<$nmbr;$j++){ $k = $fld[$j]; $chkfld1 = $entrylist[$e*$f1_colnmbr+$k]; $chkfld2 = $f2_data[$k]; # &jcode'convert(*chkfld1, 'euc'); # &jcode'convert(*chkfld2, 'euc'); #print "DEBUG sub dd_inputcheck 32 - $i - $j - $chkfld1 - $chkfld2
\n"; if($chkfld1 ne "" && ($chkfld1 =~ m/$chkfld2/i || $chkfld2 =~ m/$chkfld1/i)){ #print "DEBUG sub dd_inputcheck 33 - $i - $j - $chkfld1 - $chkfld2
\n"; $note1 = "".$entrylist[$e*$f1_colnmbr+$k].":この".$f1_title[$k]."は登録済でご使用になれません。"; &di0_errinputdsp; # 下記、入力フォーム再表示(入力エラーの場合) exit; } } #print "DEBUG sub dd_inputcheck 34 - $i - $entrylist[$e*$f1_colnmbr] - $f2_data[0] - $entrylist[$e*$col+1] - $f2_data[1]- $entrylist[$e*$col+5] - $f2_data[5]
\n"; } } elsif($rcrdkey eq "all"){ for(my $e=1;$e<$datanmbr;$e++){ if($entrylist[$e*$f1_colnmbr+2] eq ""){next;} for(my $i=0;$i<$e;$i++){ if($entrylist[$i*$f1_colnmbr+2] eq ""){next;} for(my $j=0;$j<$nmbr;$j++){ $k = $fld[$j]; $chkfld1 = $entrylist[$e*$f1_colnmbr+$k]; $chkfld2 = $entrylist[$i*$f1_colnmbr+$k]; #print "DEBUG sub dd_inputcheck 41 - $e - $i - $j - $chkfld1 - $chkfld2
\n"; # &jcode'convert(*chkfld1, 'euc'); # &jcode'convert(*chkfld2, 'euc'); if($chkfld1 ne "" && ($chkfld1 =~ m/$chkfld2/i || $chkfld2 =~ m/$chkfld1/i)){ $note1 = "".$entrylist[$e*$f1_colnmbr+$k].":この".$f1_title[$k]."は重複しています。修正ください。"; &di0_errinputdsp; # 下記、入力フォーム再表示(入力エラーの場合) exit; } } } } } #print "DEBUG cg_10d130 sub dd_inputcheck 90
\n"; } sub di0_errinputdsp{ # 入力フォーム再表示(入力エラーの場合) $f2_rcrdnmbr = $datanmbr; #print "DEBUG cg_10d130 sub dd_errinputdsp 10 - $dd_ipt00html
\n"; for($i=0;$i<$datanmbr;$i++){ for($j=0;$j<$f1_colnmbr;$j++){ $fld[$j] = $entrylist[$i*$f1_colnmbr+$j]; $f2_rcrdlist[$i] = join("_SP_",@fld); $f2_rcrdlist[$i] = "_SPS__SPS__SPS_".$f2_rcrdlist[$i]; } } &dd_display($dd_ipt00html,"inputform",$rcrdkey,"display"); # $dsphtml = "../".$adjdir."cntrl/".$prjcode."temp.html"; # &dd_display($dd_ipt00file,$rcrdkey,$dspno,$dsphtml); # cg_10di20.pl 画面表示(入力フォーム) # print "location: $dsphtml\n\n"; exit; } 1