*! jtoe -- Convert Julian date to Stata elapsed date STB-14: dm14 *! version 1.0.0 June 1993 Charles Chapin program define jtoe version 3.0 local varlist "req ex min(1) max(2)" local if "opt pre" local in "opt pre" local options "Generate(str) noShort" parse "`*'" local edate "`generat'" parse "`varlist'", parse(" ") local y "`1'" local day "`2'" quietly { /* Is the date stored as "year day" or "year.day"? */ local yr "`y'" if ("`day'"=="") { tempvar yr day gen long `yr' = `y' `if' `in' cap assert `yr' == `y' `if' `in' if _rc { gen int `day' = round(1000*(`y'-`yr'),1) `if' `in' } else { replace `yr' = `yr'/1000 gen int `day' = `y' - 1000*`yr' } } sum `yr' `if' `in' local minyr = _result(5) local maxyr = _result(6) if `minyr'<0 { error 98 } tempvar year gen int `year' = cond("`short'"=="" & `maxyr'<100,`yr'+1900,`yr') - 1 `if' `in' tempvar dec day31 gen byte `dec' = 12 `if' `in' gen byte `day31' = 31 `if' `in' mdytoe `dec' `day31' `year' `if' `in', gen(`edate') replace `edate' = `edate' + `day' `if' `in' } end