Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down at the end of May, and its replacement, statalist.org is already up and running.


[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 <njcoxstata@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: Why does Stata return an invalid syntax error in this ado file?
Date   Fri, 19 Oct 2012 23:58:29 +0100

Except that as advised "String" should be "string".

On Fri, Oct 19, 2012 at 11:53 PM, Nick Cox <njcoxstata@gmail.com> wrote:
> 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
> <ak1795mailserv@gmail.com> 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/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index