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, statalist.org is already up and running.


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

Re: st: Uppercase arguments for programs


From   Nick Cox <njcoxstata@gmail.com>
To   statalist@hsphsun2.harvard.edu
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 <bert.lloyd.89@gmail.com> 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/


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