* created 7/93 : version 3.0 ssa6: STB-22 program define censor version 3.0 if "`1'"=="" { di "The syntax is: " di "censor =exp [if] [in], gen(new_variable) [before(exp)]" } local varlist "req ex min(2) max(3)" local if "opt" local in "opt" local exp "req nop" local options "GENerate(string) BEFore(string) " tempvar event other touse time parse "`*'" parse "`varlist'", parse(" ") if "`generat'"=="" { di in red "Options generate() must be specified" err 198 } confirm new variable `generate' if "`varlist'"!="" { confirm var `varlist' } if _N==0 { err 2000 } capture { /* Intercept break key */ sort `1' `2' `3' by `1' : gen `touse'=1 `if' `in' by `1' : gen `event'=sum(`exp') if "`before'"=="" { gen `other'=0 } else by `1' : gen `other'=sum(`before') by `1' : gen byte `generate'=`event'[_n+1]==1 & `other'[_n+1]==0 if `event'==0 & `other'==0 & `touse'==1 by `1' : replace `generate'=`event'==1 if (`event'==1 | `other'==1) & _n==1 & `touse'==1 local name=substr("`generate'",1,7) confirm new variable T`name' by `1' : gen T`name'=`2' if `generate'!=. & `touse'==1 by `1' : replace T`name'=0 if `event'==1 & _n==1 & `touse'==1 quietly compress T`name' } local rc = _rc error `rc' end