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]

From |
Nick Cox <njcoxstata@gmail.com> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: Uppercase arguments for programs |

Date |
Fri, 3 Feb 2012 10:08:05 +0000 |

Here is a proof of concept: program uppercaseoption version 8 gettoken comma 0 : 0, parse(",") gettoken optname 0 : 0, parse("(") if "`optname'" != "K" error 198 local K = `0' confirm integer number `K' di "K() option returned " `K' end Test with e.g. -uppercaseoption, K(7)- Nick On Fri, Feb 3, 2012 at 2:55 AM, Nick Cox <njcoxstata@gmail.com> wrote: > 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/

**References**:**st: Uppercase arguments for programs***From:*Bert Lloyd <bert.lloyd.89@gmail.com>

**Re: st: Uppercase arguments for programs***From:*Nick Cox <njcoxstata@gmail.com>

- Prev by Date:
**Re: st: Exploratory factor analysis using a mix of categorical and continuous variables** - Next by Date:
**st: Re: st: RE: Calculating the shortest distances between observations (based on longitude and latitude)** - Previous by thread:
**Re: st: Uppercase arguments for programs** - Next by thread:
**st: How to drop low frequency patterns from panel data** - Index(es):