[Thread Prev][Thread Next][Index]

Re: [ferret_users] IF and REPEAT crash



Dear Andrew, dear users

Thanks for your fast reply. As I wrote I also found that the evaluation
to 1 in the outer IF does not lead to an error. I only discovered this
parsing bug when I started the ELIF branch.

Another workaround I'm using is - as shown in test2 - to not have a line
break before the inner endif.

Best,
Hella


Andrew Wittenberg wrote:
> Hi Hella,
> 
> This appears to be a parsing bug in Ferret.  In addition to your other 
> examples, if we change the outer-IF 0 to a 1 in the last block, the error 
> disappears.  It seems that the inner ENDIF is being applied to the outer 
> IF, leaving the outer ENDIF to throw an error.
> 
> I've just entered this bug into the Ferret database (as Trac #1681), so 
> hopefully it'll be fixed soon.  [Ansley, see also Trac #1566, regarding a 
> possibly related bug involving REPEAT and EXIT/SCRIPT (fixed in April 
> 2008).]
> 
> A workaround is to use the form in your block 2, or to put the inner 
> section into a new my.jnl file, and call that with "go my.jnl".
> 
> Andrew
> 
> On Tue, 8 Sep 2009, Hella Riede wrote:
> 
>> Dear ferret users,
>>
>> is the following problem already known?
>>
>> The last backslash before the endif within the repeat loop causes the
>> script to crash (test3). This only occurs when the expression on the
>> outer if is evaluated to zero (here set to zero directly). If it is
>> evaluated as 1 in test3, everything is executed as intended.
>>
>> Thanks in advance for clarification.
>>
>> Regards,
>> Hella Riede
>>
>>
>>
>> CODE:
>>
>> say "test1"
>> if 0 then
>>  repeat/RANGE=1:2 (if 0 then; say "hello"; endif)
>> endif
>>
>> say "test2"
>> if 0 then
>>  repeat/RANGE=1:2 (\
>>    if 0 then;\
>>      say "hello"; endif)
>> endif
>>
>> say "test3"
>> if 0 then
>>  repeat/RANGE=1:2 (\
>>    if 0 then;\
>>      say "hello";\
>>    endif)
>> endif
>>
>>
>>
>>
>> RESULT:
>>
>> yes? go test.jnl
>> say "test1"
>> test1
>> if 0 then
>> endif
>>
>> say "test2"
>> test2
>> if 0 then
>> endif
>>
>> say "test3"
>> test3
>> if 0 then
>>    endif)
>> endif
>> **ERROR: invalid command: ENDIF can only be used in an IF clause
>> endif
>> Command file, command group, or REPEAT execution aborted
>> yes?
>>
>>
>>
>>

-- 

---------------------------------------------------------------
 Hella Riede  (Dipl.Chem.)
 Max Planck Institute for Chemistry
 Dept. of Atmospheric Chemistry
 Becherweg 27                   email: hella.riede@xxxxxxx
 55128 Mainz                    phone: +49-6131-305437
 Germany                        fax:   +49-6131-305436

 homepage: www.mpch-mainz.mpg.de/~riede
---------------------------------------------------------------


[Thread Prev][Thread Next][Index]

Contact Us
Dept of Commerce / NOAA / OAR / PMEL / TMAP

Privacy Policy | Disclaimer | Accessibility Statement