Bookmark and Share

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: -args- how to flag when missing or too many arguments


From   Nick Cox <[email protected]>
To   [email protected]
Subject   Re: st: -args- how to flag when missing or too many arguments
Date   Fri, 22 Mar 2013 01:46:18 +0000

My approach for these problems is -- in a case with only 4 arguments wanted --

args a b c d garbage

if "`garbage'" != ""
       di as err "too many arguments"
       exit 198
{

On Thu, Mar 21, 2013 at 10:14 PM, John Antonakis <[email protected]> wrote:
> Thanks, Austin.
>
> This works too, except for when w > 4; it does not display the error.  The
> program just ignores any arguments beyond 4 arguments (as is the default in
> Stata).
>
>
> Best,
> J.
>
> __________________________________________
>
> John Antonakis
> Professor of Organizational Behavior
> Director, Ph.D. Program in Management
>
> Faculty of Business and Economics
> University of Lausanne
> Internef #618
> CH-1015 Lausanne-Dorigny
> Switzerland
> Tel ++41 (0)21 692-3438
> Fax ++41 (0)21 692-3305
> http://www.hec.unil.ch/people/jantonakis
>
> Associate Editor
> The Leadership Quarterly
> __________________________________________
>
> On 21.03.2013 22:54, Austin Nichols wrote:
>>
>> John Antonakis <[email protected]>:
>> You might also want to step through various conditions and then issue
>> a more informative error message at the end, e.g. consider adapting
>> this approach:
>>
>> cap prog drop john
>> prog john, rclass
>>   version 12
>>   loc err 0
>>   args no_vars df N chi
>>   loc w: word count `no_vars' `df' `N' `chi'
>>   if `w'>4 {
>>    loc err 1
>>    di in red "More than 4 arguments given"
>>    }
>>   foreach v in no_vars df N chi {
>>    cap confirm integer number `=``v'''
>>    if _rc!=0 {
>>     loc err 1
>>     di in red "Arguments must be integers."
>>     }
>>    else if ``v''<0 {
>>     loc err 1
>>     di in red "Arguments must be positive integers."
>>     }
>>    }
>>   if `err'==1 {
>>    di in red "Please enter data after the command" _c
>>    di in red " john as follows: vars df N chi"
>>    exit 198
>>    }
>> end
>>
>> On Thu, Mar 21, 2013 at 5:49 PM, daniel klein <[email protected]>
>> wrote:
>>>
>>> John,
>>>
>>> I think I would address this with something like this
>>>
>>> cap pr drop john
>>> pr john
>>>          vers 12.1
>>>
>>>          args a b c d
>>>          if !inrange(`: word count `0'', 1, 4) {
>>>                  di as err "Please enter data after " ///
>>>                  "the command john as follows: vars df N chi"
>>>                  e 198
>>>          }
>>>          numlist "`0'" ,int r(>0)
>>>
>>> end
>>>
>>> Best
>>> Daniel
>>> --
>>> Hi:
>>>
>>> I am writing a program and would like Stata to return an error if an
>>> argument is missing or there are too many of them.
>>>
>>>
>>> For example, if an argument is not an integer, the below will return an
>>> error:
>>>
>>>
>>>    program define john, rclass
>>>    version 12
>>>    args no_vars df N chi
>>>
>>>    if `no_vars'<0 | `df'<0 | `N'<0 | `chi'<0 {
>>>    di in red "You have to use integers."
>>>    exit 498
>>>    }
>>> end
>>>
>>> Now, how do I make Stata display:
>>>
>>> di in red "Please enter data after the command john as follows: vars df N
>>> chi"
>>>
>>>
>>> .....in cases where (a) there is a missing value (i.e., the user
>>> missed putting 4 numbers) and (b) if the user provides too many
>>> numbers (i.e., 5 instead of 4).
*
*   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–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index