Warning, /frameworks/syntax-highlighting/autotests/input/highlight.do is written in an unsupported language. File is not indexed.
0001 /* Test file for kate's stata syntax highlighting
0002 */
0003 *! version 1.2.0 2mar2003 E. Leuven
0004 program define spellsplit
0005 version 7
0006 syntax [anything], spell(varlist min=2 max=2) [ by(varlist)]
0007 tokenize `spell'
0008 local date0 `1'
0009 local date1 `2'
0010 local f0 : format `date0'
0011 local f1 : format `date1'
0012
0013 /* set default statistic */
0014 local current "mean"
0015
0016 gettoken left anything : anything, match(prns)
0017 while "`left'"!="" {
0018 if "`prns'"!="" {
0019 if !inlist("`left'","mean","sum") {
0020 di as error "Statistic `left' not supported"
0021 exit 198
0022 }
0023 local current "`left'"
0024 }
0025 else {
0026 local `current'vars ``current'vars' `left'
0027 }
0028 gettoken left anything : anything, match(prns)
0029 }
0030 if ("`meanvars'"!="") {
0031 confirm var `meanvars'
0032 unab meanvars : `meanvars'
0033 }
0034 if ("`sumvars'"!="") {
0035 confirm var `sumvars'
0036 unab sumvars : `sumvars'
0037 }
0038
0039 quietly {
0040 g _count = 1
0041 local xvars `meanvars' `sumvars' _count
0042
0043 /* create dummy by-var if no by option is specified */
0044 if "`by'"=="" {
0045 tempvar by
0046 g byte `by' = 1
0047 }
0048 tempvar `xvars' `by'
0049
0050 /* create negative for subtraction when spell ends */
0051 cap foreach v of varlist `xvars' {
0052 g double ``v'' = -`v'
0053 local txvars `txvars' ``v''
0054 }
0055 cap foreach v of varlist `by' {
0056 g double ``v'' = `v'
0057 local txvars `txvars' ``v''
0058 }
0059
0060 stack `date0' `xvars' `by' `date1' `txvars', into(`date0' `xvars' `by') clear
0061
0062 /* calculate totals per date */
0063 cap foreach v of varlist `xvars' {
0064 egen double ``v'' = sum(`v'), by(`by' `date0')
0065 }
0066
0067 /* unique dates only */
0068 by `by' `date0', sort: keep if _n==1
0069
0070 /* calculate totals (+ when spell starts - when ends) */
0071 sort `by'
0072 cap foreach v of varlist `xvars' {
0073 by `by': replace `v' = sum(``v'')
0074 }
0075 by `by': g `date1' = `date0'[_n + 1]
0076
0077 drop if `date0'>`date1'
0078 drop _stack
0079 drop if _count==0
0080 order `by' `date0' `date1' `xvars'
0081 format `date0' `f0'
0082 format `date1' `f1'
0083
0084 cap for var `meanvars': replace X = X/_count
0085
0086 compress
0087 }
0088
0089 end