Re: exitif usage

luigi scarso <[email protected]>
Newsgroups gmane.comp.tex.metapost
Message-ID <CAG5iGsDrZ_14WkZj5nGF35puSjNP5-jGi=ts2AO_=jO=yhzVCA@mail.gmail.com>
On Wed, Feb 15, 2017 at 7:36 PM, Walt Burkhard <[email protected]> wrote:
> Hello,
>
> I am using exitif within my metapost program and find many surprising output
> statements.    It seems that when the exitif statement is nested within a
> for statement as well as two if statements, these output messages appear.
>
> Here is a very short program to demonstrate this behavior.
>
> beginfig (1) ;
> for a = 0 upto 10 :
>   %% if ( a > 3 ) :
>     if ( a < 6 ) :
>       x := a*a ;
>       exitif ( x > 20 )
>     fi ;
>   message ( decimal x ) ;
>   %% fi ;
> endfor ;
> endfig ;
>
> beginfig (2) ;
> for a = 0 upto 10 :
>   if ( a > 3 ) :
>     if ( a < 6 ) :
>       x := a*a ;
>       exitif ( x > 20 )
>     fi ;
>   message ( decimal x ) ;
>   fi ;
> endfor ;
> endfig ;
> end
>
> Here is the output along with the warning message ---
>
> 0
> 1
> 4
> 9
> 16 [1]
> 16 [2] )
> (end occurred when if on line 22 was incomplete)
> 2 output files written: test.1 .. test.2
>
> Is there a mechanism to turn off such warning messages?
hm no, I fear not, it's a check hardcoded in the final cleanup.

Why not this:
beginfig (2) ;
x:=0;
for a = 0 upto 10 :
  if ( a > 3 ) :
    if ( a < 6 ) :
      x := a*a ;
    fi ;
  message "1) x=" & ( decimal x ) ;
  fi ;
  if (x>20): message "Quit!" ; fi  %useless, just to write something
  exitif ( x > 20 );
endfor ;
message "2) x=" & ( decimal x ) ;
endfig ;
end


Hans Hanges cooked this one

def quit_fi_fi_fi =
    fi fi fi
    exitif true
enddef ;

for a = 0 upto 10 :
    message "a=" & (decimal a);
    if ( a > 3 ) :
        if ( a < 6 ) :
            x := a*a ;
            message "0) x= " & (decimal x) ;
            if x > 20 :
                message "Quit!" ;
                quit_fi_fi_fi ;
            fi ;
        fi ;
        message "1) x= " & (decimal x) ;
    fi ;
endfor ;
message "2) x=" & (decimal x) ;
end


-- 
luigi
--
http://tug.org/metapost/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.