File:  [LON-CAPA] / capa / capa51 / CapaTools / duration.rpt.pl
Revision 1.1: download - view: text, annotated - select for diffs
Tue Sep 28 21:25:35 1999 UTC (24 years, 9 months ago) by albertel
Branches: MAIN
CVS tags: HEAD
Initial revision

    1: #!/usr/local/bin/perl
    2: 
    3:  require('getopts.pl');
    4:  
    5:  sub  S_Enterpath {
    6:     local($notdone,$path);
    7:     
    8:     $notdone = 1;
    9:     while ($notdone) {
   10:       print "Please enter the CLASS absolute path:\n";
   11:       $path = <>; chomp($path);
   12:       if( $path =~ /\/$/ ) {
   13:         $Rfullpath = "$path" . "records";
   14:         $Dfullpath = "$path" . "records/duration.db";
   15:        
   16:       } else {
   17:         $Rfullpath = "$path" . "/records";
   18:         $Dfullpath = "$path" . "/records/duration.db";
   19:         
   20:       }
   21:       if( -d $path ) {
   22:         if( -d $Rfullpath ) {
   23:           if( -f $Dfullpath ) {
   24:             $notdone = 0;
   25:           } else {
   26:             print "File [$Dfullpath] does not exist!\n";
   27:           }
   28:         } else {
   29:           print "Directory [$Rfullpath] does not exist!\n";
   30:         }
   31:       } else {
   32:         print "Directory [$path] does not exist!\n";
   33:       }
   34:     
   35:     }
   36:     return ($path);
   37:   }
   38:   
   39:   sub S_ScanDB  {
   40:     local($filename)=@_;
   41:     local($line_cnt)=0;
   42:     local($s_num,$tty,$b_date,$e_date);
   43:     local($hr,$mm,$ss,$ss_cnt);
   44:     local($i, $j, @S_cnt);
   45:     local($ylow, $yavg, $yhigh);
   46:     open(IN, "<$filename") || die "Cannot open $filename file!";
   47:     open(OUT, ">$Out_file") || die "Cannot open $Out_file file!";
   48:     $min_sec = 1000;
   49:     while (<IN>) {
   50:       $line_cnt++;
   51:       chomp();
   52:       ($s_num,$tty,$b_date,$e_date) = split(/\t/);
   53:       if( $line_cnt == 1 ) {
   54:         $start_time = $b_date;
   55:       }
   56:       ($hr,$mm,$ss,$ylow)  = S_DiffDate($start_time,$b_date);
   57:       ($hr,$mm,$ss,$yhigh) = S_DiffDate($start_time,$e_date);
   58:       $yavg = ($ylow + $yhigh) / 2;
   59:       $ss_cnt = $yhigh - $ylow;
   60:       $min_sec = ($min_sec < $ss_cnt ?  $min_sec : $ss_cnt);
   61:       $s_idx = int($ss_cnt / 100);
   62:       $S_cnt[$s_idx]++;
   63:       print OUT "$line_cnt\t$yavg\t$ylow\t$yhigh\n";
   64:       # print "$s_num,($hr:$mm:$ss,$ss_cnt)\n";
   65: 
   66:      }
   67:      close(IN) || die "Cannot close $filename file!";
   68:      close(OUT) || die "Cannot close $Out_file file!";
   69:      
   70:      print "minimal number of seconds = $min_sec\n";
   71:      for($i=0;$i<=$#S_cnt;$i++) {
   72:        $j= $i * 100;
   73:        print "$j\t$S_cnt[$i]\n" if $S_cnt[$i] > 0;
   74:      }
   75:      print "minimal number of seconds = $min_sec\n";
   76:   }
   77:   ## 012345678901
   78:   ## Wed Jan  8 14:38:06 1997
   79:   ## Fri Jan 17 00:34:30 1997,Fri Jan 17 00:36:25 1997
   80:   %Mon = ( 'Jan' => 0, 'Feb' => 1, 'Mar' => 2, 'Apr' => 3,  'May' => 4,  'Jun' => 5, 
   81:            'Jul' => 6, 'Aug' => 7, 'Sep' => 8, 'Oct' => 9,  'Nov' => 10, 'Dec' => 11 );
   82:   @mdoy = ( 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365);
   83:   
   84:   sub  S_DiffDate  {
   85:     local($a_str,$b_str)=@_;
   86:     local($hrmmss_astr,$hrmmss_bstr);
   87:     local($modd_astr,$modd_bstr);
   88:     local($mo_a,$dd_a,$hr_a,$mm_a,$ss_a);
   89:     local($mo_b,$dd_b,$hr_b,$mm_b,$ss_b);
   90:     local($sec_cnt);
   91:     local($dsec,$dmm,$dmm_cnt,$dhr_cnt);
   92:     
   93:     $modd_astr = substr($a_str,4,6);
   94:     $hrmmss_astr = substr($a_str,11,8);
   95:     $modd_bstr = substr($b_str,4,6);
   96:     $hrmmss_bstr = substr($b_str,11,8);
   97:     $mo_a = substr($modd_astr,0,3); $dd_a = substr($modd_astr,4,2);
   98:     $mo_b = substr($modd_bstr,0,3); $dd_b = substr($modd_bstr,4,2);
   99:     ($hr_a,$mm_a,$ss_a) = split(/:/, $hrmmss_astr);
  100:     ($hr_b,$mm_b,$ss_b) = split(/:/, $hrmmss_bstr);
  101:     $adoy = $mdoy[$Mon{$mo_a}] + $dd_a;
  102:     $bdoy = $mdoy[$Mon{$mo_b}] + $dd_b;
  103:     $sec_cnt = ($bdoy - $adoy)*24*60*60 + ($hr_b - $hr_a)*60*60 + ($mm_b - $mm_a)*60 + ($ss_b-$ss_a);
  104:     $dsec = $sec_cnt % 60;
  105:     $dmm_cnt = ($sec_cnt - $dsec) / 60;
  106:     $dmm = $dmm_cnt % 60;
  107:     $dhr_cnt = ($dmm_cnt - $dmm) / 60;
  108:     
  109:     return ($dhr_cnt,$dmm,$dsec,$sec_cnt);
  110:   }
  111:   
  112:   
  113:   $Out_file = '/usr/user1/capadvt/CAPA_SRC/4.5/pProj/dur.out';
  114:   
  115:   
  116:   S_Enterpath();
  117:   
  118:   S_ScanDB("$Dfullpath");

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>