www.pudn.com > filecollector.rar > iarstat_make_mml.p


#!/usr/local/perl5/bin/perl

#################################2002/03/29 edited by yzliu####################################

use strict;
use FileHandle;
use Getopt::Long;
###############################################################################################

sub match_time
{
	my($time1,$time2,$year1,$year2,$mon1,$mon2,$day1,$day2,$hour1,$hour2);
	my($ret);

	$time1=$_[0];
	$time2=$_[1];



	$time1 =~ /(\d+)-(\d+)-(\d+)-(\d+)/;
	$year1=$1;
	$mon1=$2;
	$day1=$3;
	$hour1=$4;

	if($time2 eq '') {
		return -1;
	}

	$time2 =~ /(\d+)-(\d+)-(\d+)-(\d+)/;
        $year2=$1;
        $mon2=$2;
        $day2=$3;
        $hour2=$4;

	if($year1 > $year2){
		$ret = 1;
	}
	elsif($year1 == $year2){
                $ret = 0;
        }
	elsif($year1 < $year2){
                $ret = -1;
        }

	if($ret == 0){
	if($mon1 > $mon2){
                $ret = 1;
        }
        elsif($mon1 == $mon2){
                $ret = 0;
        }
        elsif($mon1 < $mon2){
                $ret = -1;
        }
	}

	if($ret == 0){
	if($day1 > $day2){
                $ret = 1;
        }
        elsif($day1 == $day2){
                $ret = 0;
        }
        elsif($day1 < $day2){
                $ret = -1;
        }
	}

	if($ret == 0){
	if($hour1 > $hour2){
                $ret = 1;
        }
        elsif($hour1 == $hour2){
                $ret = 0;
        }
        elsif($hour1 < $hour2){
                $ret = -1;
        }
	}

	return($ret);

}




sub lasthour
{
	my($time,$year,$mon,$day,$hour,$leap);
	$time=$_[0];
	
	$time =~ /(\d+)-(\d+)-(\d+)-(\d+)/;
	$year=2000+$1;
        $mon=$2;
        $day=$3;
        $hour=$4;

	$leap = 0;

        if(($year%4) == 0){
                $leap = 1;
                if(($year % 100 )== 0){
                        if(($year%400) != 0){
                                $leap = 0;
                        }
                }
        }
	
	if($hour>0){
		$hour--;
	}
        else{
		$hour = 23;
                if($day > 1){
                	$day--;
		}
		else{
			if($mon > 1){
				$mon--;
			}
			else{
				$mon=12;
				$year--;
			}
			if($mon==1||$mon==3||$mon==5||$mon==7||$mon==8||$mon==10||$mon==12){
				$day=31;
			}
			elsif($mon==4||$mon==6||$mon==9||$mon==11){
                                $day=30;
			}
			else{
				if($leap){
					$day=29;
				}
				else{
					$day=28;
                                }
			}
		}

	}

	$year=$year-2000;
	
	return("$year-$mon-$day-$hour");

}



#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
#
#                       main process
#
#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

my($start,$stop,$i,$fd,$inputfile);

my($year,$mon,$day,$hour,$num,$index,$line,$time,$current_hour);

my $Usage = "\n\tUsage: $0    [stop_time(yy-mm-dd-hh)]\n\n";

$inputfile = $ARGV[0];
$start = $ARGV[1];
$stop  = $ARGV[2];


if(!( $inputfile )){
        die "$Usage";
}
if(!(-f $inputfile)){
        print "$inputfile is not exist\n";
        die "$Usage";
}

$fd = new FileHandle($inputfile);
$line = <$fd>;
$line =~ tr/\n//d;
close($fd);

$fd = new FileHandle(">$inputfile");
print $fd "[Command Sequence]\n";
print $fd "cmd=GW-TASK:DISPIARJOB;\n";
print $fd "time_out=10\n";


if($line =~ /(\d+)-(\d+)-(\d+)-(\d+)-(\d+)/){
	$year=$1;
	$mon =$2;
	$hour=$4;
	$num =$5;
	
}
else{
	print $fd "ErrFileName\n";
	close ($fd);
	exit(0);
}

if(($start eq '')&&($stop eq '')){

	$current_hour = `date +%H`;

	if($current_hour == $hour){
		if($num==1){
                	$num=99;
        	}
        	else{
                	$num--;
        	}
	}

	if(length($year)==1){
                $year = "0$year";
        }
        if(length($mon)==1){
                $mon = "0$year";
        }
        if(length($num)==1){
                $num = "0$num";
        }

	print $fd "cmd=GW-TASK:DISPIARSTAT:FILE=IR.A3$year$mon$num;\n";
        print $fd "time_out=30\n";
        print $fd "cmd=GW-CLOSE;\n";
        print $fd "time_out=10\n";

	close ($fd);
        exit(0);
}

if(!($start =~ /(\d+)-(\d+)-(\d+)-(\d+)/)){
        print $fd "ErrFileName\n";
        close ($fd);
        exit(0);
}

if($stop ne ''){
	if(!($stop =~ /(\d+)-(\d+)-(\d+)-(\d+)/)){
        	print $fd "ErrFileName\n";
        	close ($fd);
        	exit(0);
	}
}

if(match_time($line,$start) < 0){
	print $fd "WrongTime\n";
        close ($fd);
        exit(0);
}

if($stop ne '') {
	if((match_time($line,$stop) < 0)||(match_time($stop,$start)<0)){
        	print $fd "WrongTime\n";
        	close ($fd);
        	exit(0);
	}
}


$index=0;

for($i=0;$i<100;$i++){
	if(match_time($line,$start) < 0){
                #print "break here!\n";
                last;
        }
	if((match_time($line,$stop) == 0)||(match_time($line,$start)==0)){
		$index=1;
	}
	if($index==1){
		$line =~ /(\d+)-(\d+)-(\d+)-(\d+)/;
		$year=$1;
                $mon=$2;
		if(length($year)==1){
			$year = "0$year";
		}
		if(length($mon)==1){
                        $mon = "0$year";
                }
		if(length($num)==1){
                        $num = "0$num";
                }
		print $fd "cmd=GW-TASK:DISPIARSTAT:FILE=IR.A3$year$mon$num;\n";
		print $fd "time_out=30\n";
	}
	$time = lasthour($line);
        $line = $time;
        if($num==1){
                $num=99;
        }
        else{
                $num--;
        }
	#print "now:\$line:$line\n";
	#print "now:\$num:$num\n";

}

		print $fd "cmd=GW-CLOSE;\n";
		print $fd "time_out=10\n";

close($fd);

exit(0);