* created 7/93 : version 3.0 ssa6: STB-22 program define firstocc version 3.0 if "`1'"=="" { di "The syntax is: " di "firstocc =exp [if] [in], gen(new_variable) sav(file_name)" } local varlist "req ex min(2) max(3)" local if "opt" local in "opt" local exp "req nop" local options "GENerate(string) SAVing(string)" tempvar cum touse parse "`*'" parse "`varlist'", parse(" ") if "`varlist'"!="" { confirm var `varlist' } if _N==0 { err 2000 } if "`generat'"=="" & "`saving'"=="" { di in red "Options generate() or saving() must be specified" err 198 } if "`generat'"!="" & "`saving'"!="" { di in red "Only one option must be specified" err 198 } if "`generat'"!="" { confirm new variable `generate' } capture { /* Intercept break key */ sort `1' `2' `3' by `1' : gen `touse'=1 `if' `in' by `1': gen int `cum'=sum(`exp') if "`generat'"=="" { local generat "dummy" } by `1': gen byte `generat'=`cum'==1 & `cum'[_n-1]!=1 if `cum'!=. & `touse'==1 if "`saving'"!="" { keep if `generat'==1 drop `generat' noi save `saving' } } local rc = _rc error `rc' end