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 on April 23, and its replacement, is already up and running.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: have string macro default in syntax

From   Nick Cox <>
Subject   Re: st: have string macro default in syntax
Date   Tue, 25 Sep 2012 18:53:17 +0100

I didn't make myself clear.

The question is how does your program -hh- know the variable names?
There are two, because -by()- needs a variable name too.

If you are hard-wiring names into -hh-, you are going to need to edit
the program for each new use.

On the other hand, if there is extra code in your real program that
reads in variable names, then that's fine, except that we can't tell
that from your post.

Note that -bu()- here is a typo for -by()-. If that's in your real
code, it's a bug. Also, this code won't work because of a mismatch
between -firm()- and -stat()-.


On Tue, Sep 25, 2012 at 6:40 PM, tashi lama <> wrote:
> Thanks. To the last comment, I am using odbc to get the varnames. I decided not putting in the question to be concise. I was actually trying to avoid 'if' somethng like we do for integers i.e. [firm(int -1)] .  I had done something like this prior to posting. At least, the way you suggested makes my code shorter.
> syntax, [firm(str)]
> if "`stat'"!="" {
>   graph pie varname, by(varname) plabel(_all `stat')
> }
> else {
>   graph pie varname, bu(varname) plabel(_all percent)
> }
> Thanks,
> Tashi
> ----------------------------------------
>> Date: Tue, 25 Sep 2012 15:12:18 +0100
>> Subject: Re: st: have string macro default in syntax
>> From:
>> To:
>> This is easy; just not easy with -syntax- alone.
>> Note that this discussion is one where the distinction between syntax
>> in general and the command -syntax- helps clarity considerably. That
>> is to say, the Statalist -cmdname- convention is not designed to be
>> fussy or a trap for new users, but an aid to comprehension.
>> syntax [, stat(str)]
>> if "`stat'" == "" local stat "percent"
>> This achieves the same goal; if the user specified nothing the default
>> is "percent".
>> Note that the option -stat()- must be made genuinely optional; if it
>> is compulsory there can be no question of a default.
>> I leave on one side the questions of where your program gets its
>> variable names from and why pie charts are anybody's default!
>> Nick
>> On Tue, Sep 25, 2012 at 2:40 PM, tashi lama <> wrote:
>>> I looked through the documentation for syntax. I don't think stata can do this but I would like to post anyway...
>>> here is my adofile
>>> /*begin hh.ado*/
>>> program hh
>>> syntax, stat(str)
>>> .......
>>> graph pie varname, by(varname) plabel(_all `stat')
>>> end
>>> hh, stat(sum) will give me sum
>>> hh, stat(percent) will give me percent
>>> I would like to( if possible) have hh draw a pie chart with "percent" as default and draw "sum" if included in the arguments. Something like this....
>>> hh //give me percent by default
>>> hh, stat(sum) //give me sum
>>> Can stata do this?? Any help will be appreciated//

*   For searches and help try:

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