# st: variable starting point in 'forvalues'

 From Gijs Dekkers To statalist@hsphsun2.harvard.edu Subject st: variable starting point in 'forvalues' Date Mon, 10 Oct 2005 14:32:15 +0200

Dear all,

This novice Stata-user is wondering whether or not he can have a 'forvalues'-do loop with a variable starting point.

Consider the following example, which works fine:
******************
example 1
******************

global cntryno1 = 4

if (\$cntryno1==2 | \$cntryno1==13) {
local waveno 2 3 4 5 6 7 8
}
else {
if (\$cntryno1==14) {
local waveno 3 4 5 6 7 8
}
else {
if (\$cntryno1==15) {
local waveno 4 5 6 7 8
}
else local waveno 1 2 3 4 5 6 7 8
}
}

foreach i of local waveno {
ALL KINDS OF COMMANDS
}

Basically, this little program applies 'all kinds of commands' for a local macro i, which goes from 1 or 2 or 3 or 4 (depending on cntryno1) up to 8. It seems to work fine, which could be expected, for I more or less copied it from prof. Baum's fine lecture "a little bit of Stata progamming...'.

'Problem solved', you might say 'let's get back to work'. However, curious as I am, and given that the above vectors 'waveno' share most figures, I want to know whether I could also have used a 'forvalues'-do loop.

Consider the second example, which does NOT work.
******************
example 2
******************
* start
if (\$cntryno1==2 | \$cntryno1==13) {
local start 2
}
else {
if (\$cntryno1==14) {
local start 3
}
else {
if (\$cntryno1==15) {
local start 4
}
else local start 1
}
}

* the start-macro here does only contain the starting value of the vector 'waveno' and the other integers up to 8 come from the 'forvalues'-do loop.

forvalues i = \$start/8 {
use d\$cntryno1`i'.dta, clear
ALL KINDS OF COMMANDS
}

The macro 'start' is not accepted, and Stata returns an error code 'invalid syntax'. (How) can I use the macro 'start' in a 'forvalues' do-loop?

Thanks,

Gijs

--
dr. Gijs Dekkers
Federal Planning Bureau
Kunstlaan 47-49
1000 Brussels, Belgium
++32/(0)2/5077413
fax 7373 gd@plan.be, gijs.dekkers@soc.kuleuven.be

**********************************************************************
Disclaimer: This e-mail may contain confidential information
which is intended only for the use of the recipient(s) named above.
notify the sender immediately and delete this e-mail from