Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: Why does Stata return an invalid syntax error in this ado file?
From
Nick Cox <[email protected]>
To
[email protected]
Subject
Re: st: Why does Stata return an invalid syntax error in this ado file?
Date
Fri, 19 Oct 2012 23:53:53 +0100
General tips
1. Use -set trace on- to see where the program stops.
2. Always report the return code. Here it is 197, meaning that
-syntax- itself is problematic.
Specific tips
3. The bug is that the argument of -generate()- should be given as
"string", not "String".
4. Your -generate()- option is compulsory. If it is empty, the program
won't run. Hence the -if- test is superfluous. Your program can start
program define statetofips
version 8
syntax varname , Generate(String)
quietly {
gen int `generate' = .
replace `generate' = <stuff>
...
}
5. Other small changes suggested above.
On Fri, Oct 19, 2012 at 11:18 PM, Aaron Kirkman
<[email protected]> wrote:
> I'm writing a simple ado file, --statetofips--, to assign fips codes
> to observations based on the state name. If I run the following code,
> I do not receive an error:
>
> ##
> clear
> input str8 state
> Alabama
> Alabama
> Alabama
> Alaska
> Alaska
> Alaska
> Arizona
> Arizona
> Arizona
> Arkansas
> end
>
> gen int fips = .
> replace fips = 1 if lower(state) == "alabama"
> replace fips = 2 if lower(state) == "alaska"
> replace fips = 4 if lower(state) == "arizona"
> ##
>
> However, if I run this code, I receive an "invalid syntax" error:
>
> ##
> clear
> input str8 state
> Alabama
> Alabama
> Alabama
> Alaska
> Alaska
> Alaska
> Arizona
> Arizona
> Arizona
> Arkansas
> end
>
> discard
> statetofips state, generate(fips)
> ##
>
> These are the contents of --statetofips.ado--, which is located in the
> same directory as the above do file:
>
> ##
> program define statetofips
> syntax varname , Generate(String)
> if "`generate'" != "" {
> quietly gen int `generate' = .
> }
> replace `generate' = 1 if lower(`varlist') == "alabama"
> replace `generate' = 2 if lower(`varlist') == "alaska"
> replace `generate' = 4 if lower(`varlist') == "arizona"
> replace `generate' = 5 if lower(`varlist') == "arkansas"
> replace `generate' = 6 if lower(`varlist') == "california"
>
> end
> ##
>
> I reduced --statetofips.ado-- to its simplest form, and the error persists:
>
> ##
> program define statetofips
> syntax varname , Generate(String)
> end
> ##
>
>
> What is causing the syntax error in the ado file?
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/faqs/resources/statalist-faq/
* http://www.ats.ucla.edu/stat/stata/