Hi Hella and Andrew,|
Thanks for the report, and particularly for the example that illustrates it! We'll get this fixed shortly, and we plan to make a Ferret release with this and a few other bug fixes by the end of this month.
Hella Riede wrote:
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?