*! version 3.0.0 Tue May 19 12:14:12 PDT 1992 program define unblock version 3.0 local varlist "req ex min(2) max(2)" local options "Generate(string)" parse "`*'" if "`generat'"!="" { confirm new var `generat' } parse "`varlist'", parse(" ") capture assert `1'==round(`1',1) & `2'==round(`2',1) if _rc { di in red "`1' or `2' takes on noninteger values" exit 198 } capture assert `1'>=0 & `2'>=0 if _rc { di in red "`1' or `2' takes on negative values" exit 198 } capture assert `1'<=`2' if `1'!=. if _rc { di in red "`1'<=`2' is not always true" exit 198 } tempvar outcome pop id quietly { if "`generat'"!="" { gen long `id'=_n } gen byte `outcome' = 1 gen long `pop' = `1' local n= _N local np1 = `n'+1 } quietly expand 2 capture { replace `outcome' = 0 in 1/`n' replace `pop' = `2'-`1' in 1/`n' if "`generat'"!="" { rename `id' `generat' } tempvar user1 user2 drop `1' `2' rename `outcome' `1' rename `pop' `2' exit } quietly keep in 1/`n' error _rc end