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: Command line syntax for optional and required numeric statements


From   Stephen Cranney <scranney@sas.upenn.edu>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: Command line syntax for optional and required numeric statements
Date   Fri, 11 Jan 2013 20:53:52 -0500

Apologies, that was actually a comment from a prior version. It should
be on the same line as the * comment on the line before, but the email
made it into another line, so that's not an issue.

On Fri, Jan 11, 2013 at 8:25 PM, Nick Cox <njcoxstata@gmail.com> wrote:
> generate .o= oldage infertility
>
> won't work. In general, see -help trace- to learn about debugging commands.
>
> Nick
>
> On Sat, Jan 12, 2013 at 12:46 AM, Stephen Cranney
> <scranney@sas.upenn.edu> wrote:
>> I tried discard (thanks for the head up--didn't know that could be an
>> issue), but it still isn't working.
>>
>> I'm usually not wont to do this, but because I'm a little lost I'm
>> just going to go ahead and post the whole command I'm trying to write,
>> not because I expect anybody to spend the time to pick apart the whole
>> code, but just because this has some problem in the beginning couple
>> of lines that needs context. Everything within the syntax bracket is
>> on one line, but was cut up because of the email.
>>
>> program birthsim, rclass
>> version 11.2
>> syntax [, startyear (real 2000) endyear(real 2100) birthday (real 9)
>> birthmonth (real 1) birthyear (real 1987) marriageday (real 24)
>> marriagemonth (real 8) marriageyear (real 2008) latestageatbirth(real
>> 50) probabilityconceive(real .2) contraceptioneffectiveness(real 0)
>> probabilitymiscarriage(real .25) fetallossinfertility(real 4)
>> monthsofpostpartum(real 12)]
>>
>> *******************************************************************************************************
>> *Setup data columns
>> *******************************************************************************************************
>> set more off
>> set obs 1
>> generate id=1
>> generate age=25
>> generate births= .f
>>
>> set more off
>> forvalues bot = `startyear'(1)`endyear' {
>>   gen age`bot' = age >= `bot'
>> }
>> replace age2012=age
>> drop age
>> reshape long age, i(id) j(year)
>> egen month=group (year id)
>> forvalues month = 1(1)12 {
>>   gen month`month' = month >= `month'
>> }
>> egen group=group(year id)
>> drop month
>> reshape long month, i(group) j(newvar)
>> drop month
>> rename newvar month
>> drop group
>>
>> *******************************************************************************************
>> *Calculate birthday, age, and marriage day variable
>> *******************************************************************************************
>> generate birthdate=mdy(`birthmonth',`birthday',`birthyear')
>> format birthdate %d
>> generate marriagedate=mdy(`marriagemonth', `marriageday', `marriageyear')
>> format marriagedate %d
>> generate marriageage= (marriagedate-birthdate)/365.25
>> generate day=1
>> generate date=mdy(month, day, year)
>> format day %d
>> replace age=(date-birthdate)/365.25
>> generate contraceptionnoneffectiveness= 1-`contraceptioneffectiveness'
>> generate probabilityconceive2= `probabilityconceive'*
>> contraceptionnoneffectiveness
>> ************************************************************************************************************
>> *Calculate probability of having a child, .i= postpartum infertility,
>> generate .o= oldage infertility
>> **********************************************************************************************************
>> replace births= .a if age > `latestageatbirth'
>> replace births= .a if age < marriageage
>> replace births= rbinomial(1, probabilityconceive2) if births== .f
>> generate miscarriage= rbinomial(1, `probabilitymiscarriage') if births== 1
>>
>> ******************************************************************************************
>> *Create postpartum and post-abortive infertility.
>> ******************************************************************************************
>> local N = _N
>> local  monthsofpostpartum =  12
>> local monthsofpostmiscarriage= 7
>> forvalues i = 1/`N' {
>>         forvalues j= 1/`monthsofpostpartum' {
>>               local k = `i' + `j'
>>               local s= (`monthsofpostmiscarriage'-`j') + `i' + 1
>>                 if births[`i']==1 & miscarriage[`i']==0 replace
>> births= .p in `k'
>>                 if births[`i']==1 & miscarriage[`i']==1 & `s'>1
>> replace births= .m in `s'
>>                 }
>>         }
>> sum births if births==1
>> return scalar children= r(N)
>> end
>>
>> On Fri, Jan 11, 2013 at 4:45 PM, kantor.d@att.net <kantor.d@att.net> wrote:
>>> Are remembering to -discard- ?
>>>
>>> Sent with Verizon Mobile Email
>>>
>>>
>>> ---Original Message---
>>> From: statalist@hsphsun2.harvard.edu
>>> Sent: 1/11/2013 4:42 pm
>>> To: statalist@hsphsun2.harvard.edu
>>> Subject: RE: st: Command line syntax for optional and required numeric statements
>>>
>>> Stephen,
>>>
>>> The following lines of code work fine for me, so you'll need to show us a little more of what you're doing.
>>>
>>> Incidentally, I thought the spaces after the -birthday- and -birthmonth- options would bite, but it works fine with them.
>>>
>>> - Elan
>>>
>>>
>>> cap program drop testsyntax
>>> program testsyntax
>>>         syntax [, startyear(real 2000) birthday (real 9) birthmonth (real 1)]
>>>
>>>         di "`startyear'"
>>>         di "`birthday'"
>>>         di "`birthmonth'"
>>> end
>>> testsyntax
>>> testsyntax, startyear(1981) birthday(5) birthmonth(1)
>>>
>>>
>>> -----Original Message-----
>>> From: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Stephen Cranney
>>> Sent: Friday, January 11, 2013 16:25
>>> To: statalist@hsphsun2.harvard.edu
>>> Subject: Re: st: Command line syntax for optional and required numeric statements
>>>
>>> I'm still getting the "invalid syntax" response. I tried making it all
>>> optional and setting default values just to make it simpler. Now I
>>> have
>>>
>>> syntax [, startyear(real 2000) birthday (real 9) !
>>>  birthmonth (real 1)]
>>>
>>> I've seen various examples online that have this same format that don't
>>> seem to be having the same problem, so I guess at this point my main
>>> question is: in what situations would Stata return an "invalid syntax"
>>> response based on something put in the "syntax" line in the ado file?
>>> Setting trace on doesn't help because "invalid syntax" is
>>> the first thing that pops up.
>>>
>>> Best,
>>>
>>> Stephen
>>>
>>> On Fri, Jan 11, 2013 at 3:09 PM, Nick Cox <njcoxstata@gmail.com> wrote:
>>>> The pattern
>>>>
>>>> latestageatbirth(default=50)
>>>>
>>>> isn't correct for options. See -help syntax-. Try e.g.
>>>>
>>>> latestageatbirth(real 50)
>>>>
>>>> Nick
>>>>
>>>> On Fri, Jan 11, 2013 at 7:31 PM, Stephen Cranney <scranney@sas.upenn.edu> wrote:
>>>>
>>>>> Apologies if this is simple, but I can't figure this out based on the
>>>>> documentation.
>>>>>
>>>>> I'm writing an ado file and am trying to transfer all the macros I
>>>>> reference inside the file to the command line. Some of the values I want to
>>>>> make required, and some I wan!
>>>  t to make optional, but with a default value
>>>>> if the option is not t
>>>
>>> a
>>> ken. All of the macros I want in the command line
>>>>> are numeric.
>>>>> A representative snippet of the code is below, based on what I've been able
>>>>> to figure out from the documentation. It gives me an "invalid syntax"
>>>>> response when I try to "birthsim, startyear(2000)...". It works when I do
>>>>> it with args, but obviously that's much more cumbersome than syntax in this
>>>>> context.
>>>>>
>>>>> program birthsim, rclass
>>>>> version 11.2
>>>>> syntax startyear(integer) endyear(integer)  [,latestageatbirth(default=50)
>>>>> ]
>>>>>
> *
> *   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/
*
*   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