Please note the -cmdname- convention flagged in the FAQ.
Eva is correct.
In addition, know that -while- knows nothing about local macros.
In this example
local i = 10
while `i' {
local --i
di `i'
}
what -while- sees is the command line after the names of any local
macros have been
replaced by their contents.
At first that is
while 10
then it is in turn
while 9
and so forth. The example also shows that the expression handled by
-while- need not be
one with two arguments and a binary operator. Any expression with
numeric result is legal.
while 1 {
...
}
would be legal too (and is sometimes useful).
Nick
[email protected]
Eva Poen
Vincent,
I believe the answers are "yes" and "yes". See the example below.
local i 0
local j 10
while `i' < `j' {
di ""
di "before updating: i `i' , j `j' "
di ""
local ++j
local i = `i' + 3
di "after updating: i `i' , j `j' "
di ""
}
di "end of loop: i `i' , j `j' "
Eva
2008/3/17, Vincent Davis <[email protected]>:
> I have a few questions about the WHILE command,
> 1. When does it evaluate the WHILE condition? If it becomes false
does
> it immediately exit the WHILE loop?
> 2. Can both sides of the WHILE condition be local variables that may
> be updated in the WHILE statement ? WHILE 'i' < 'j' { ..... local i
> = 'i' + 'j' .... local j = 'j' + 1..... }
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/