Syntax error?


#1

When I do a test compile I get an error pointing to the last line around the “endif” What am I missing? This worked until I added the last four “if” statements.

if (DW_Pop1_Up==1) then
  DW_air_pop1=0;
endif
 if (DW_Pop1_Dn==1) then
  DW_air_pop1=1;
endif
 if (DW_Pop2_Up==1) then
  DW_air_pop2=1;
endif
 if (DW_Pop2_Dn==1) then
  DW_air_pop2=0;
endif
 if (Maf_pop1_up==1) then
  Maf_air_pop1=1;
endif
 if (Maf_pop1_Dn==1) then
  Maf_air_pop1=0;
endif
 if (Maf_pop2_up==1) then
  Maf_air_pop2=1;
endif
 if (Maf_pop2_Dn==1) then
  Maf_air_pop2=0;
endif
 if (DW_transfer_F==1) then
  m2f_DW_Crossover=1;
else
  m2f_DW_Crossover=0;
endif
 if (DW_transfer_R==1) then
  m2r_DW_Crossover=1;
else
  m2r_DW_Crossover=0;
endif
 if (DW_sChain_F==1) then
  m10f_DW_sChain=1;
  M12_Corner=1;
else
  m10f_DW_sChain=0;
  if (Lower_Chains_F==0) then
    M12_Corner=0;
  endif
endif
 if (DW_sChain_R==1) then
  m10r_DW_schain=1;
else
  m10r_DW_schain=0;
endif
 if (Maf_transfers_F==1) then
  m5f_Maf_Crossover=1;
  m4f_Maf_Pop1=1;
  m6f_Maf_Pop2=1;
else
  m5f_Maf_Crossover=0;
  m4f_Maf_Pop1=0;
  m6f_Maf_Pop2=0;
endif
 if (Maf_transfers_R==1) then
  m5r_Maf_Crossover=1;
  m4r_Maf_Pop1=1;
  m6r_Maf_Pop2=1;
else
  m5r_Maf_Crossover=0;
  m4r_Maf_Pop1=0;
  m6r_Maf_Pop2=0;
endif
 if (Lower_Chains_F==1) then
  M12_Corner=1;
  m7f_Lower_MainChain=1;
else
  if (DW_sChain_F==0) then
    M12_Corner=0;
  endif
  m7f_Lower_MainChain=0;
endif
 if (Lower_Chains_R==1) then
  m7r_Lower_MainChain=1;
else
  m7r_Lower_MainChain=0;
endif
 //DW top chains
//Forward
if (DW_TopChain_f==1) then
  m1f_DW_Top_Chain=1;
else
  if (DW_TopChain_f==0) then
  m1f_DW_Top_Chain=0;
endif
//Reverse
if (DW_TopChain_r==1) then
  m1r_DW_Top_Chain=1;
else
  if (DW_TopChain_f==0) then
  m1f_DW_Top_Chain=0;
endif
 //Maf top chains
//Forward
if (Maf_TopChain_f==1) then
  m3f_Maf_Top_Chain=1;
else
  m3f_Maf_Top_Chain=0;
endif
//Reverse
if (Maf_TopChain_r==1) then
  m3r_Maf_Top_Chain=1;
else
  m3r_Maf_Top_Chain=0;
endif

#2

Can you export your chart and attach it? (Even copy just this block to a chart to export.)
To find mis-matched if/thens like this I usually use block comments and narrow it down a piece at a time, know what I mean? We have a video in the works about this too…


#3

I caught it. The test compile checker is frustrating. The error was 15 + lines above where indicated… My “else” statements were not quite right.
The debug part of Optoscript is pretty poor/vague.


#4

Looks like you’re missing and endif about 13 lines from the bottom, just above the “Maf top chains” comment…


#5
if (DW_Pop1_Up==1) then
  DW_air_pop1=0;
endif
 if (DW_Pop1_Dn==1) then
  DW_air_pop1=1;
endif
 if (DW_Pop2_Up==1) then
  DW_air_pop2=1;
endif
 if (DW_Pop2_Dn==1) then
  DW_air_pop2=0;
endif
 if (Maf_pop1_up==1) then
  Maf_air_pop1=1;
endif
 if (Maf_pop1_Dn==1) then
  Maf_air_pop1=0;
endif
 if (Maf_pop2_up==1) then
  Maf_air_pop2=1;
endif
 if (Maf_pop2_Dn==1) then
  Maf_air_pop2=0;
endif
 if (DW_transfer_F==1) then
  m2f_DW_Crossover=1;
else
  m2f_DW_Crossover=0;
endif
 if (DW_transfer_R==1) then
  m2r_DW_Crossover=1;
else
  m2r_DW_Crossover=0;
endif
 if (DW_sChain_F==1) then
  m10f_DW_sChain=1;
  M12_Corner=1;
else
  m10f_DW_sChain=0;
  if (Lower_Chains_F==0) then
    M12_Corner=0;
  endif
endif
 if (DW_sChain_R==1) then
  m10r_DW_schain=1;
else
  m10r_DW_schain=0;
endif
 if (Maf_transfers_F==1) then
  m5f_Maf_Crossover=1;
  m4f_Maf_Pop1=1;
  m6f_Maf_Pop2=1;
else
  m5f_Maf_Crossover=0;
  m4f_Maf_Pop1=0;
  m6f_Maf_Pop2=0;
endif
 if (Maf_transfers_R==1) then
  m5r_Maf_Crossover=1;
  m4r_Maf_Pop1=1;
  m6r_Maf_Pop2=1;
else
  m5r_Maf_Crossover=0;
  m4r_Maf_Pop1=0;
  m6r_Maf_Pop2=0;
endif
 if (Lower_Chains_F==1) then
  M12_Corner=1;
  m7f_Lower_MainChain=1;
else
  if (DW_sChain_F==0) then
    M12_Corner=0;
  endif
  m7f_Lower_MainChain=0;
endif
 if (Lower_Chains_R==1) then
  m7r_Lower_MainChain=1;
else
  m7r_Lower_MainChain=0;
endif
 //DW top chains
//Forward
if (DW_TopChain_f==1) then
  m1f_DW_Top_Chain=1;
else
  if (DW_TopChain_f==0) then
  m1f_DW_Top_Chain=0;
endif
//Reverse
if (DW_TopChain_r==1) then
  m1r_DW_Top_Chain=1;
else
  if (DW_TopChain_f==0) then
  m1f_DW_Top_Chain=0;
endif
 //Maf top chains
//Forward
if (Maf_TopChain_f==1) then
  m3f_Maf_Top_Chain=1;
else
  m3f_Maf_Top_Chain=0;
endif
//Reverse
if (Maf_TopChain_r==1) then
  m3r_Maf_Top_Chain=1;
else
  m3r_Maf_Top_Chain=0;
endif

#6

I wish we had a better OptoScript editor – better code editors will match your if to endif for you with a little line or something…