Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Nick Cox <njcoxstata@gmail.com> |
To | statalist@hsphsun2.harvard.edu |
Subject | Re: st: Command line syntax for optional and required numeric statements |
Date | Sat, 12 Jan 2013 09:32:28 +0000 |
OK; but my advice on using -trace- commands still stands. Nick On Sat, Jan 12, 2013 at 1:53 AM, Stephen Cranney <scranney@sas.upenn.edu> wrote: > 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/