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: Uppercase arguments for programs
From
Nick Cox <[email protected]>
To
[email protected]
Subject
Re: st: Uppercase arguments for programs
Date
Fri, 3 Feb 2012 02:55:31 +0000
Arguments are a wider class than options. Thus a command given the
arguments "frog toad newt" makes no use of options, and the arguments
need not even be variable names. Immediate commands are an important
class.
So, the answer to your question is yes, as upper case text can easily
be passed to programs. Also, even with options, an example from the
past lives into the present in what since Stata 8 is called -graph7-
which has an option -Rescale-.
But evidently the heart of your question is whether options defined
by -syntax- can have upper case names, and to that I guess No in so
far as upper case in a -syntax- statement indicates minimal
abbreviation, not capitalization.
I guess with some effort and clever use of -gettoken- rather than
-syntax- that could be by-passed, but it seems like hard work even to
contemplate.
Nick
On Fri, Feb 3, 2012 at 2:04 AM, Bert Lloyd <[email protected]> wrote:
> Is there a way to use uppercase arguments for programs? The use of
> uppercase letters to designate the required portion of the argument's
> name seems to prevent this.
>
> Consider the following simple example:
>
> --- begin example code ---
>
> cap program drop uppercase_argument
> program define uppercase_argument
> syntax, K(integer)
>
> di "there are `K' right-hand-side variables"
> di "there are `k' right-hand-side variables"
>
> local K = `k'
>
> di "there are `K' right-hand-side variables"
> end
>
> capture noisily uppercase_argument, K(3)
> di _rc
>
> capture noisily uppercase_argument, k(3)
>
> --- end example code ---
>
> This yields the following output:
>
> --- begin output ---
> . capture noisily uppercase_argument, K(3)
> option k() required
>
> . di _rc
> 198
>
> .
> . capture noisily uppercase_argument, k(3)
> there are right-hand-side variables
> there are 3 right-hand-side variables
> there are 3 right-hand-side variables
>
> --- end output ---
>
> There is a workaround that involves creating new local macros within
> the program, e.g. in the above a line like
>
> local K = `k'
>
> but this is tedious and leads to errors, both from simple typos and
> from Alice's White Knight "what the name of the song is called" type
> mistakes confounding the macro with the name of the macro, etc.
>
> Many thanks in advance for any suggestions.
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/