Annotation of capa/capa51/CapaTools/duration.rpt.pl, revision 1.1

1.1     ! albertel    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>