File:  [LON-CAPA] / capa / capa51 / CapaTools / duration.rpt.pl
Revision 1.3: download - view: text, annotated - select for diffs
Mon Aug 7 20:47:29 2000 UTC (23 years, 10 months ago) by albertel
Branches: MAIN
CVS tags: version_2_9_X, version_2_9_99_0, version_2_9_1, version_2_9_0, version_2_8_X, version_2_8_99_1, version_2_8_99_0, version_2_8_2, version_2_8_1, version_2_8_0, version_2_7_X, version_2_7_99_1, version_2_7_99_0, version_2_7_1, version_2_7_0, version_2_6_X, version_2_6_99_1, version_2_6_99_0, version_2_6_3, version_2_6_2, version_2_6_1, version_2_6_0, version_2_5_X, version_2_5_99_1, version_2_5_99_0, version_2_5_2, version_2_5_1, version_2_5_0, version_2_4_X, version_2_4_99_0, version_2_4_2, version_2_4_1, version_2_4_0, version_2_3_X, version_2_3_99_0, version_2_3_2, version_2_3_1, version_2_3_0, version_2_2_X, version_2_2_99_1, version_2_2_99_0, version_2_2_2, version_2_2_1, version_2_2_0, version_2_1_X, version_2_1_99_3, version_2_1_99_2, version_2_1_99_1, version_2_1_99_0, version_2_1_3, version_2_1_2, version_2_1_1, version_2_1_0, version_2_12_X, version_2_11_X, version_2_11_4_uiuc, version_2_11_4_msu, version_2_11_4, version_2_11_3_uiuc, version_2_11_3_msu, version_2_11_3, version_2_11_2_uiuc, version_2_11_2_msu, version_2_11_2_educog, version_2_11_2, version_2_11_1, version_2_11_0_RC3, version_2_11_0_RC2, version_2_11_0_RC1, version_2_11_0, version_2_10_X, version_2_10_1, version_2_10_0_RC2, version_2_10_0_RC1, version_2_10_0, version_2_0_X, version_2_0_99_1, version_2_0_2, version_2_0_1, version_2_0_0, version_1_99_3, version_1_99_2, version_1_99_1_tmcc, version_1_99_1, version_1_99_0_tmcc, version_1_99_0, version_1_3_X, version_1_3_3, version_1_3_2, version_1_3_1, version_1_3_0, version_1_2_X, version_1_2_99_1, version_1_2_99_0, version_1_2_1, version_1_2_0, version_1_1_X, version_1_1_99_5, version_1_1_99_4, version_1_1_99_3, version_1_1_99_2, version_1_1_99_1, version_1_1_99_0, version_1_1_3, version_1_1_2, version_1_1_1, version_1_1_0, version_1_0_99_3, version_1_0_99_2, version_1_0_99_1, version_1_0_99, version_1_0_3, version_1_0_2, version_1_0_1, version_1_0_0, version_0_99_5, version_0_99_4, version_0_99_3, version_0_99_2, version_0_99_1, version_0_99_0, version_0_6_2, version_0_6, version_0_5_1, version_0_5, version_0_4, stable_2002_spring, stable_2002_july, stable_2002_april, stable_2001_fall, release_5-1-3, loncapaMITrelate_1, language_hyphenation_merge, language_hyphenation, conference_2003, bz6209-base, bz6209, STABLE, HEAD, GCI_3, GCI_2, GCI_1, CAPA_5-1-6, CAPA_5-1-5, CAPA_5-1-4_RC1, BZ4492-merge, BZ4492-feature_horizontal_radioresponse, BZ4492-feature_Support_horizontal_radioresponse, BZ4492-Support_horizontal_radioresponse
- fixed license notices the reference the GNU GPL rather than the GNU LGPL

    1: #!/usr/local/bin/perl
    2: #  duration statistics for telnet portions of CAPA
    3: #  Copyright (C) 1992-2000 Michigan State University
    4: #
    5: #  The CAPA system is free software; you can redistribute it and/or
    6: #  modify it under the terms of the GNU General Public License as
    7: #  published by the Free Software Foundation; either version 2 of the
    8: #  License, or (at your option) any later version.
    9: #
   10: #  The CAPA system is distributed in the hope that it will be useful,
   11: #  but WITHOUT ANY WARRANTY; without even the implied warranty of
   12: #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   13: #  General Public License for more details.
   14: #
   15: #  You should have received a copy of the GNU General Public
   16: #  License along with the CAPA system; see the file COPYING.  If not,
   17: #  write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   18: #  Boston, MA 02111-1307, USA.
   19: #
   20: #  As a special exception, you have permission to link this program
   21: #  with the TtH/TtM library and distribute executables, as long as you
   22: #  follow the requirements of the GNU GPL in regard to all of the
   23: #  software in the executable aside from TtH/TtM.
   24: 
   25: 
   26:  require('getopts.pl');
   27:  
   28:  sub  S_Enterpath {
   29:     local($notdone,$path);
   30:     
   31:     $notdone = 1;
   32:     while ($notdone) {
   33:       print "Please enter the CLASS absolute path:\n";
   34:       $path = <>; chomp($path);
   35:       if( $path =~ /\/$/ ) {
   36:         $Rfullpath = "$path" . "records";
   37:         $Dfullpath = "$path" . "records/duration.db";
   38:        
   39:       } else {
   40:         $Rfullpath = "$path" . "/records";
   41:         $Dfullpath = "$path" . "/records/duration.db";
   42:         
   43:       }
   44:       if( -d $path ) {
   45:         if( -d $Rfullpath ) {
   46:           if( -f $Dfullpath ) {
   47:             $notdone = 0;
   48:           } else {
   49:             print "File [$Dfullpath] does not exist!\n";
   50:           }
   51:         } else {
   52:           print "Directory [$Rfullpath] does not exist!\n";
   53:         }
   54:       } else {
   55:         print "Directory [$path] does not exist!\n";
   56:       }
   57:     
   58:     }
   59:     return ($path);
   60:   }
   61:   
   62:   sub S_ScanDB  {
   63:     local($filename)=@_;
   64:     local($line_cnt)=0;
   65:     local($s_num,$tty,$b_date,$e_date);
   66:     local($hr,$mm,$ss,$ss_cnt);
   67:     local($i, $j, @S_cnt);
   68:     local($ylow, $yavg, $yhigh);
   69:     open(IN, "<$filename") || die "Cannot open $filename file!";
   70:     open(OUT, ">$Out_file") || die "Cannot open $Out_file file!";
   71:     $min_sec = 1000;
   72:     while (<IN>) {
   73:       $line_cnt++;
   74:       chomp();
   75:       ($s_num,$tty,$b_date,$e_date) = split(/\t/);
   76:       if( $line_cnt == 1 ) {
   77:         $start_time = $b_date;
   78:       }
   79:       ($hr,$mm,$ss,$ylow)  = S_DiffDate($start_time,$b_date);
   80:       ($hr,$mm,$ss,$yhigh) = S_DiffDate($start_time,$e_date);
   81:       $yavg = ($ylow + $yhigh) / 2;
   82:       $ss_cnt = $yhigh - $ylow;
   83:       $min_sec = ($min_sec < $ss_cnt ?  $min_sec : $ss_cnt);
   84:       $s_idx = int($ss_cnt / 100);
   85:       $S_cnt[$s_idx]++;
   86:       print OUT "$line_cnt\t$yavg\t$ylow\t$yhigh\n";
   87:       # print "$s_num,($hr:$mm:$ss,$ss_cnt)\n";
   88: 
   89:      }
   90:      close(IN) || die "Cannot close $filename file!";
   91:      close(OUT) || die "Cannot close $Out_file file!";
   92:      
   93:      print "minimal number of seconds = $min_sec\n";
   94:      for($i=0;$i<=$#S_cnt;$i++) {
   95:        $j= $i * 100;
   96:        print "$j\t$S_cnt[$i]\n" if $S_cnt[$i] > 0;
   97:      }
   98:      print "minimal number of seconds = $min_sec\n";
   99:   }
  100:   ## 012345678901
  101:   ## Wed Jan  8 14:38:06 1997
  102:   ## Fri Jan 17 00:34:30 1997,Fri Jan 17 00:36:25 1997
  103:   %Mon = ( 'Jan' => 0, 'Feb' => 1, 'Mar' => 2, 'Apr' => 3,  'May' => 4,  'Jun' => 5, 
  104:            'Jul' => 6, 'Aug' => 7, 'Sep' => 8, 'Oct' => 9,  'Nov' => 10, 'Dec' => 11 );
  105:   @mdoy = ( 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365);
  106:   
  107:   sub  S_DiffDate  {
  108:     local($a_str,$b_str)=@_;
  109:     local($hrmmss_astr,$hrmmss_bstr);
  110:     local($modd_astr,$modd_bstr);
  111:     local($mo_a,$dd_a,$hr_a,$mm_a,$ss_a);
  112:     local($mo_b,$dd_b,$hr_b,$mm_b,$ss_b);
  113:     local($sec_cnt);
  114:     local($dsec,$dmm,$dmm_cnt,$dhr_cnt);
  115:     
  116:     $modd_astr = substr($a_str,4,6);
  117:     $hrmmss_astr = substr($a_str,11,8);
  118:     $modd_bstr = substr($b_str,4,6);
  119:     $hrmmss_bstr = substr($b_str,11,8);
  120:     $mo_a = substr($modd_astr,0,3); $dd_a = substr($modd_astr,4,2);
  121:     $mo_b = substr($modd_bstr,0,3); $dd_b = substr($modd_bstr,4,2);
  122:     ($hr_a,$mm_a,$ss_a) = split(/:/, $hrmmss_astr);
  123:     ($hr_b,$mm_b,$ss_b) = split(/:/, $hrmmss_bstr);
  124:     $adoy = $mdoy[$Mon{$mo_a}] + $dd_a;
  125:     $bdoy = $mdoy[$Mon{$mo_b}] + $dd_b;
  126:     $sec_cnt = ($bdoy - $adoy)*24*60*60 + ($hr_b - $hr_a)*60*60 + ($mm_b - $mm_a)*60 + ($ss_b-$ss_a);
  127:     $dsec = $sec_cnt % 60;
  128:     $dmm_cnt = ($sec_cnt - $dsec) / 60;
  129:     $dmm = $dmm_cnt % 60;
  130:     $dhr_cnt = ($dmm_cnt - $dmm) / 60;
  131:     
  132:     return ($dhr_cnt,$dmm,$dsec,$sec_cnt);
  133:   }
  134:   
  135:   
  136:   $Out_file = '/usr/user1/capadvt/CAPA_SRC/4.5/pProj/dur.out';
  137:   
  138:   
  139:   S_Enterpath();
  140:   
  141:   S_ScanDB("$Dfullpath");

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