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);