perlquestion
vnpandey
Dear Monks,
I am trying to run the following programme & the errors I am facing while running are as follows:
<code>
syntax error at checkdataperl.p line 249, near "for"
syntax error at checkdataperl.p line 250, near "++)"
syntax error at checkdataperl.p line 286, near "}"
Execution of checkdataperl.p aborted due to compilation errors.
</code>
Can you please let me know what is the error actually?????
<p><readmore>
<code>#!/usr/local/bin/perl
print("\n \nWelcome !! Please input the response very carefully in this
programme whenever asked for \n Now please ensure that before running the
programme you have run the vp29apr programme for the corresponding hour and
also the 1d files for the j or t hour as applicable are has also been run
upon \n Now please enter the hour for which you want to check the data
quality (a,b,..x) \n?" );
$hour=<STDIN>;chop($hour);
print("you entered ", $hour ,"\n");
$comparison=3;@arrone=();@arrtwo=();
@array=("o","p","q","r","s","u","v","w","x","a","b");
if ($hour eq "j")
{
$comparison=$hour;
}
elsif($hour eq "t")
{
$comparison=$hour;
}
else
{
for($n=0;$n<=10;$n++)
{
if($array[$n] eq $hour)
{
$comparison="t";
}
}
}
if($comparison ne "t")
{
if($comparison ne $hour)
{
$comparison = "j";
}
}
print("\n the value of comparison is ", $comparison ,"\n");
print ("\n Please enter the allocation no. from which you want to check the data (1-60) \n");
$allocin=<STDIN>;chop($allocin);
print ("\n",$allocin,"\n");
use PGPLOT; # Load PGPLOT module
print "\nTesting simple point plot...\n\n";
print "PGPLOT module version $PGPLOT::VERSION\n\n";
pgqinf("VERSION",$val,$len);
print "PGPLOT $val library\n\n";
# "?" will prompt for device
$dev = "/xw" unless defined $dev;
pgbegin(0,$dev,1,1); # Open plot device
pgscf(2); # Set character font
pgslw(4); # Set line width
pgsch(1.6); # Set character height
pgask(false);
for ($alloc=$allocin;$alloc<=60;$alloc++)
{
print ("\n",$alloc,"\n");
$i=0;$m=0;$p=0;
print "\n We are checking data quality for hour=$hour Alocation= $alloc \n";
$astatname="/tmp_mnt/usr4/mrt/vinayPandey/name".$alloc.$hour."1.astat";
$onedname="/tmp_mnt/usr4/mrt/vinayPandey/name".$alloc.$hour."1.1d" ;
if ($comparison ne $hour)
{
$caldet="/usr4/mrt/vinayPandey/caldet".$alloc.$comparison."1.1d";
open(CALDET,$caldet);
$c2=0;
$line=<CALDET>;
while( $line ne "" )
{chop($line);
($calqone[$c2],$calqtwo[$c2],$calqthree[$c2],$calqfour[$c2])=split(' ',$line,4);
$line=<CALDET>;
$c2++;
}
}
if ((open(NAMEAS, $astatname)) && (open(NAMEONED,$onedname)))
{
while(<NAMEAS>)
{
($arrone[$i],$arrtwo[$i])=split(' ');
$i++;
}
close(NAMEAS);
$n[1]=$i-1;
while(<NAMEONED>)
{
($arrthree[$m],$arrfour[$m])=split(' ');
$m++;
}
}
$n[2]=$m-1;
close(NAMEONED);
$k=0;
for($p=0;$p<=$n[1];$p++)
{
for($n=0;$n<=7;$n++)
{
chop($arrone[$p]);
}
$corresonedname=($arrone[$p]."1d");$arrone[$p]=$arrone[$p]."astat.gz";
if ( -e $corresonedname )
{
for($j=0; $j<=$n[2];$j++)
{
if ( $corresonedname eq $arrthree[$j])
{
$arronestore[$k]=$arrone[$p];
$arrtwostore[$k]=$arrtwo[$p];
$arrthreestore[$k]=$arrthree[$j];
$arrfourstore[$k]=$arrfour[$j];
if (open(NAME ,"$corresonedname"))
{
$g=0;
while(<NAME>)
{
# Read data in 2 columns from file handle
# and put in two perl arrays
chop();
($y[$g],$x[$g]) = split(/\s+/);
$g++;
}
print ("\ng=",$g,"\n");
close (NAME);
}
$response="h";$r="f";$ab1=0;
while ($response ne "abcde")
{
@arrsidtime=("a","b","c","d","e","f","g","h","i",
"j","k","l","m","n","o","p","q","r","s","t","u","v","w","x");
if ($r eq "f")
{
$y1=0;$y2=0.1;$fmin=$y[0];$fmax=$y[0];
for ($s1=0;$s1<($g-1);$s1++)
{
if ($fmax < $y[$s1])
{
$fmax=$y[$s1];
}
if ($fmin > $y[$s1])
{
$fmin= $y[$s1];
}
}
print ("\n ymax=",$fmax,"Ymin=",$fmin,"\n");
$y1=$fmin;
$y2=$fmax;
$y2=($y2+0.1);
$y1=($y1-0.1);
print ("\n y2=",$y2,"y1=",$y1,"\n");
while( $hour ne $arrsidtime[$ab1])
{
++$ab1;$ab2=$ab1 + 1;$r="t";
}
}
pgenv($ab1,$ab2,$y1,$y2,0,0);
# Define data limits and plot axes
pglabel("X","Y",$corresonedname); # Labels
pgsci(5); # Change colour
pgline($g,\@x,\@y);
print("\n please enter your response for the plot....\n FOR SEEING THE PLOT WITH MODIFIED AXES PLEASE ENTER n \n OR GIVE THE APPROPRIATE QUALITY FACTOR FOR THE FILE FROM 1-9\n ?");
$response=<STDIN>;
chop($response);
print ("you entered ",$response,"\n");
if ($response eq "n" )
{
print ("\n Please enter Xmin value\n");
$abr1=<STDIN>;chop($abr1);
if ($abr1 ne "") {$ab1=$abr1;}
print ("\n Please enter Xmax value\n");
$abr2=<STDIN>;chop($abr2);
if ($abr2 ne "") {$ab2=$abr2;}
print ("\n Please enter Ymin value\n");
$yr1=<STDIN>;chop($yr1);
if ($yr1 ne "") {$y1=$yr1;}
print ("\n Please enter Ymax value\n");
$yr2=<STDIN>;chop($yr2);
if ($yr2 ne "") {$y2=$yr2;}
}
elsif(("123456789" =~ m/$response/) && ($response ne ""))
{
$quality[$k]=$response;$response="abcde";
print ("\n aulaity ",$k,"=",$quality[$k],"\n");
}
else
{
print "\n please enter proper response\n";
}
}
if ($comparison eq $hour)
{
$k++; goto NEXTLINE;
}
else
{
$hdiffer = &get_RAdiff_fromsun($comparison,$arrthree[$k]);
if (($quality eq "1") && ($hdiffer >= 2))
{
$calfilename=&gencalfn($corresonedname,$comparison)
if (-e $calfilename)
{
$c2=$c2-1;
for($c3=0;$c3<=$c2;$c3=$c3++)
{
if(($calfilename eq $calqname[$c3]) && ($calqfour[$c3] eq "1") && ($calqthree[$c3]<=100))
{
$gooddata="/usr4/mrt/vinayPandey/good".$hour;
if (-e $gooddata)
{open(FILE, ">>$gooddata");
}
else
{
open(FILE,">$gooddata");
}
$qnet=1;
print FILE "$arrthreestore[$k] $arrfourstore[$k] $arrtwostore[$k] $quality[$k] $calqone[$c3] $calqtwo[$c3] $calqthree[$c3] $calqfour[$c3] $qnet \n";
close(FILE);
$k++;
goto NEXTLINE;
}
else
{
if ($calfilename eq $claname[$c3])
{
$c2++;
$k++;
goto NEXTLINE;
}
}
}
}
}
$k++;
goto NEXTLINE;
}
}
}
}
else
{
print "\n we are not able to find file $corresonedname\n";
}
NEXTLINE:
}
if ( $comparison eq $ hour)
{
print "\n +++ k= $k";
$k=$k-1;print "\n +++ k= $k";
$calname="/usr4/mrt/vinayPandey/caldet".$alloc.$hour."1.1d";
if (-e $calname)
{
open(CALNAME, ">>$calname");
}
else
{
open(CALNAME, ">$calname");
}
for($c1=0;$c1<=$k;$c1++)
{
$hdifference=&get_RAdiff_forsun($comparison,$arrthreestore[$c1]);
if ($hdiffernce < 2)
{
$quality[$c1]=$quality[$c1]+$W7;
}
print CALNAME "$arrthreestore[$c1] $arrfourstore[$c1] $arrtwostore[$c1] $quality[$c1] \n";
}
close (CALNAME);
}
else
{
$k=$k-1;
$c2=$c2-1;
for($tak1=0;$tak1<=$k;$tak1++)
{
$calibname=&gencalfn($arrthree[$tak1],$comparison);
$pos=&get_RAdiff_forsun($comparison,$arrthree[$tak1]);
if (-e $calibname)
{$W6=0;$factor="y";}
else
{
$calibnamenew=$calibname;
@newarr=("1a","2b","3c","4d","5e","6f","7g","8h","9i","10j","11k","12l","13m","14n","15o","16p","17q","18r","19s","20t","21u","22v","23w","24x");
for($st1=0;$st1<=6;$st1++)
{chop($calibnamenew);}
$b1=chop($calibnamenew);
$b2=chop($calibnamenew);
$b12=$b2.$b1;
$jd1=chop($calibnamenew);
$jd2=chop($calibnamenew);
$jd3=chop($calibnamenew);
$jday=$jd3.$jd2.$jd1;
$nlm1=-1;
$sn=chop($calibnamenew);
$nl=0;
while($nl != 5){
for ($ensure=1;$ensure<=2;$ensure++)
{$nlm=$nlm1*$nl;
$jday=$jday+$nlm;
for ($na=1;$na<=4;$na++)
{
@subsubst=grep(/$na\S/,@newarr);
$subsubst[0]=chop($subsubst[0]);
for ($nah=1;$nah<=24;$nah++)
{
@hoursubst=grep(/$nah\S/,@newarr);
$hoursubst[0]=chop($subsubst[0]);
$caltestname=$calibnamenew.$subsubst[0].$jday.$b12."_".$hoursubst[0].$comparison."1.1d";
if (-e $caltestname)
{
$calibname=$caltestname;$factor="y";
if ($nl=0)
{$W6=0;}
elsif($nl<=3)
{$W6=3;}
else{$W6=5;}
goto CHECK;
}
}
}
if ($nl eq "0")
{++$ensure;}
}
$nl++;
}
if ($factor ne "y")
{$calibname=$calqone[$tak2];}
CHECK:
for ($tak2=0;$tak2<=$c2;$tak2++)
{
if ($calibname=$calqone[$tak2])
{
if ($calqthree[$tak2]<=100){$W4=1;}
elsif ($calqthree[$tak2]<=400){$W4=2;}
else{$W4=3;}
if ($arrtwostore[$k]<=100)
{$W3=1;}
elsif ($arrtwostore[$k]<=400)
{$W3=2;}
else
{$W3=5;}
if ($pos >= 4)
{
$W5=1;
}
elsif ($pos >= 2)
{
$W5=2;
}
else
{
$W5=5;
}
$netquality[$tak1]=$W1*$quality[$tak1]+$W2*$calqfour[[$tak2]+$W3+$W4+$W5+$W6;
$calstoreone[$tak1]=$calqone[$tak2];
$calstoretwo[$tak1]=$calqtwo[$tak2];
$calstorethree[$tak1]=$calqthree[$tak2];
$calstorefour[$tak1]=$calqfour[$tak2];
goto FIRSTLOOP;
}
}
}
FIRSTLOOP:
}
print ("\n here the actual test starts i.e. comparison
etc.....\n" );
}
NEXTLINETWO:
}
LABELEND:
pgend;
print("\n this is the end of the programme\n");
sub gencalfn
{
local(@complex,$temp,$calib1,$val1,$val2,$tempx,$tempy,@tempxy,$val3,$calib2,$comparison,$val4);
@complex=("1a","2b","3c","4d","5e","6f","7g","8h","9i","10j","11k","12l","13m","14n","15o","16p","17q","18r","19s","20t","21u","22v","23w","24x");
$calib1=$_[0];
$comparison=$_[1];
for ($temp=0;$temp<=3;$temp++)
{
chop($calib1);
}
$tempx=chop($calib1);print"\n $tempx==",$tempx;
$tempy=chop($calib1);print"\n tempy==",$tempy;
@val1=grep(/\d{1,2}$tempx/,@complex);print "\n val1==",$val1[0];
@val2=grep(/\d{1,2}$tempy/,@complex);print "\n val2==",$val2[0];
@val3=grep(/\d{1,2}$comparison/,@complex);;print "\n val3==",$val3[0];
chop($val1[0]);chop($val2[0]);chop($val3[0]);print "\n
",$val1[0]," ",$val2[0]," ",$val3[0];
if ($val1 <3)
{$val4=$val1+24-$val3;}
elsif ($val1>$val3)
{$val4=$val1-$val3;}
if ($val2>$val4)
{
$val=$val2-$val4;
@tempxy=grep(/$val\S/,@complex);print "\n ttt",$tempxy[0];
$tempxy[0]=chop($tempxy[0]);print "\n ttsfgsft=",$tempxy[0];
$tempxy[0]=$tempxy[0].$comparison;print "\n tttdjeo--=",$tempxy[0];
$calib2=$calib1.$tempxy[0]."1.1d";
}
else{
if ($val1<$val3)
{$val4=$val3-$val1;}
elsif($val1>$val3)
{$val4=24-$val1+$val3;}
$val=$val2+$val4;
@tempxy=grep(/$val\S/,@complex);print "\n ttt",$tempxy[0];
$tempxy[0]=chop($tempxy[0]);print "\n ttsfgsft=",$tempxy[0];
$tempxy[0]=$tempxy[0].$comparison;print "\n tttdjeo--=",$tempxy[0];
$calib2=$calib1.$tempxy[0]."1.1d";
}
return ($calib2);
}
sub get_RAdiff_forsun{
local($jd,@daya_in_month,@avg_for_month;$RA,$change_in_jd,$shift_in_years,$comp,$value,$jd1,$jd2,$jd3,$jdtemp,$hourdiff,@arrcomp);
@arrcomp=("1a","2b","3c","4d","5e","6f","7g","8h","9i","10j","11k","12l","13m","14n","15o","16p","17q","18r","19s","20t","21u","22v","23w","24x");
$comp=$_[0];
$jdtemp=$_[1];
for ($ltemp=0;$ltemp<=8;$ltemp++)
{chop($jdtemp);}
$jd3=chop($jdtemp);
$jd2=chop($jdtemp);
$jd1=chop($jdtemp);
$jd=$jd1.$jd2.$jd3;
@days_in_month = (31,28,31,30,31,30,31,31,30,31,30,31);
@avg_for_month = (254,234,220,225,236,247,240,225,216,223,244,254);
#$jd = "244" . "$jd" if( $jd >= 9000 );
#$jd = "245" . "$jd" if( $jd < 9000 );
$RA = 67434.075 ; #right ascension of sun on 1st January,1995.
$change_in_jd = $jd - 2449717.5;
$shift_in_years = 0;
if($change_in_jd >= 365 && $change_in_jd <= 730)
{
$shift_in_years = 1;
$change_in_jd = $change_in_jd - 365;
$RA = $RA - 60;
$days_in_month[1] = 29;
}
if($change_in_jd > 730)
{
$change_in_jd = $change_in_jd - 731;
$shift_in_years = 2 + (int($change_in_jd / 365));
$change_in_jd = $change_in_jd % 365;
$RA = $RA + 240 - ($shift_in_years * 60);
}
for($i=0;$i<12;$i++)
{
if($change_in_jd > $days_in_month[$i])
{
$RA = ($RA + ($days_in_month[$i]*$avg_for_month[$i])) % 86400;
$change_in_jd = $change_in_jd - $days_in_month[$i];
}
else
{
$RA = ($RA + ($avg_for_month[$i]*$change_in_jd)) % 86400;
}
}
$value=(grep(/\d{1,2}$comp/,@comp))-0.5;
if ($RA >$value)
{
$hourdiff=$RA-$value;}
else{$hourdiff=$value-$RA;}
return($hourdiff);
}
</code>
</readmore></p>
<sub><p>janitored by [ybiC] exeedingly post-facto: Balanced <readmore> and <code> tags around long codeblock</p></sub>