*! STB-6: srd11 *! This is version 1.0 03 December 1991 program define cascade version 2.1 mac def _varlist "req ex max(1)" mac def _in "opt" mac def _if "opt" mac def _options "Generate(str)" parse "%_*" parse "%_varlist", parse(" ") mac def _g "%_generat" if "%_g"=="" { di in red "you MUST specify a new variable name using the gen() option" exit 198 } mac def _vtype : type %_1 if "%_vtype" != "byte" { di in red "variable must be categorical with type of byte" di in red "SEE help cascade" exit 198 } qui su %_1 %_if %_in mac def _min=_result(5) mac def _max=_result(6) mac def _i=%_min+1 while %_i <= %_max { if "%_if"!="" { mac def _if2="%_if & %_1 > %_i-1" } else { mac def _if2="if %_1 > %_i-1" } if "%_if"!="" { mac def _if3="%_if & %_1==%_i" } else { mac def _if3="if %_1==%_i" } qui count %_if3 %_in mac def _cnt=_result(1) if %_cnt==0 { mac def _i=%_i+1 } else if %_cnt>0 { qui gen byte %_g%_i = 0 %_if %_in qui replace %_g%_i = 1 %_if2 %_in label var %_g%_i "%_g==%_i" mac def _i=%_i+1 } } * sort %_g * by %_g: li %_g* if _n==_N end