1<Comment>/* Test file for kate's stata syntax highlighting</Comment><br/>
2<Comment>*/</Comment><br/>
3<Normal Text>*! </Normal Text><Mata>version</Mata><Normal Text> 1.2.0 2mar2003 E. Leuven</Normal Text><br/>
4<Keyword>program</Keyword><Normal Text> </Normal Text><Keyword>define</Keyword><Normal Text> spellsplit</Normal Text><br/>
5<Normal Text>        </Normal Text><Mata>version</Mata><Normal Text> 7</Normal Text><br/>
6<Normal Text>        </Normal Text><Keyword>syntax</Keyword><Normal Text> [anything], spell(</Normal Text><Keyword>varlist</Keyword><Normal Text> </Normal Text><Functions>min</Functions><Normal Text>=2 </Normal Text><Functions>max</Functions><Normal Text>=2) [ </Normal Text><Keyword>by</Keyword><Normal Text>(</Normal Text><Keyword>varlist</Keyword><Normal Text>)]</Normal Text><br/>
7<Normal Text>        </Normal Text><Keyword>tokenize</Keyword><Normal Text> </Normal Text><Macro>`spell'</Macro><br/>
8<Normal Text>        </Normal Text><Keyword>local</Keyword><Normal Text> date0 </Normal Text><Macro>`1'</Macro><br/>
9<Normal Text>        </Normal Text><Keyword>local</Keyword><Normal Text> date1 </Normal Text><Macro>`2'</Macro><br/>
10<Normal Text>        </Normal Text><Keyword>local</Keyword><Normal Text> f0 : </Normal Text><Keyword>format</Keyword><Normal Text> </Normal Text><Macro>`date0'</Macro><br/>
11<Normal Text>        </Normal Text><Keyword>local</Keyword><Normal Text> f1 : </Normal Text><Keyword>format</Keyword><Normal Text> </Normal Text><Macro>`date1'</Macro><br/>
12<Normal Text></Normal Text><br/>
13<Normal Text>        </Normal Text><Comment>/* set default statistic */</Comment><br/>
14<Normal Text>        </Normal Text><Keyword>local</Keyword><Normal Text> current </Normal Text><String>"mean"</String><br/>
15<Normal Text></Normal Text><br/>
16<Normal Text>        gettoken left anything : anything, </Normal Text><Functions>match</Functions><Normal Text>(prns)</Normal Text><br/>
17<Normal Text>        </Normal Text><Keyword>while</Keyword><Normal Text> </Normal Text><String>"`left'"</String><Normal Text>!=</Normal Text><String>""</String><Normal Text> {</Normal Text><br/>
18<Normal Text>                </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><String>"`prns'"</String><Normal Text>!=</Normal Text><String>""</String><Normal Text> {</Normal Text><br/>
19<Normal Text>                        </Normal Text><Keyword>if</Keyword><Normal Text> !</Normal Text><Functions>inlist</Functions><Normal Text>(</Normal Text><String>"`left'"</String><Normal Text>,</Normal Text><String>"mean"</String><Normal Text>,</Normal Text><String>"sum"</String><Normal Text>) {</Normal Text><br/>
20<Normal Text>                                </Normal Text><Keyword>di</Keyword><Normal Text> </Normal Text><Keyword>as</Keyword><Normal Text> </Normal Text><Keyword>error</Keyword><Normal Text> </Normal Text><String>"Statistic `left' not supported"</String><br/>
21<Normal Text>                                </Normal Text><Keyword>exit</Keyword><Normal Text> 198</Normal Text><br/>
22<Normal Text>                        }</Normal Text><br/>
23<Normal Text>                        </Normal Text><Keyword>local</Keyword><Normal Text> current </Normal Text><String>"`left'"</String><br/>
24<Normal Text>                }</Normal Text><br/>
25<Normal Text>                </Normal Text><Keyword>else</Keyword><Normal Text> {</Normal Text><br/>
26<Normal Text>                        </Normal Text><Keyword>local</Keyword><Normal Text> </Normal Text><Macro>`current'</Macro><Normal Text>vars  </Normal Text><Macro>``current'</Macro><Normal Text>vars' </Normal Text><Macro>`left'</Macro><br/>
27<Normal Text>                }</Normal Text><br/>
28<Normal Text>                gettoken left anything : anything, </Normal Text><Functions>match</Functions><Normal Text>(prns)</Normal Text><br/>
29<Normal Text>        }</Normal Text><br/>
30<Normal Text>        </Normal Text><Keyword>if</Keyword><Normal Text> (</Normal Text><String>"`meanvars'"</String><Normal Text>!=</Normal Text><String>""</String><Normal Text>) {</Normal Text><br/>
31<Normal Text>                </Normal Text><Keyword>confirm</Keyword><Normal Text> </Normal Text><Keyword>var</Keyword><Normal Text> </Normal Text><Macro>`meanvars'</Macro><br/>
32<Normal Text>                </Normal Text><Keyword>unab</Keyword><Normal Text> meanvars : </Normal Text><Macro>`meanvars'</Macro><br/>
33<Normal Text>        }</Normal Text><br/>
34<Normal Text>        </Normal Text><Keyword>if</Keyword><Normal Text> (</Normal Text><String>"`sumvars'"</String><Normal Text>!=</Normal Text><String>""</String><Normal Text>) {</Normal Text><br/>
35<Normal Text>                </Normal Text><Keyword>confirm</Keyword><Normal Text> </Normal Text><Keyword>var</Keyword><Normal Text> </Normal Text><Macro>`sumvars'</Macro><br/>
36<Normal Text>                </Normal Text><Keyword>unab</Keyword><Normal Text> sumvars : </Normal Text><Macro>`sumvars'</Macro><br/>
37<Normal Text>        }</Normal Text><br/>
38<Normal Text></Normal Text><br/>
39<Normal Text>        </Normal Text><Keyword>quietly</Keyword><Normal Text> {</Normal Text><br/>
40<Normal Text>                g _count = 1</Normal Text><br/>
41<Normal Text>                </Normal Text><Keyword>local</Keyword><Normal Text> xvars </Normal Text><Macro>`meanvars'</Macro><Normal Text> </Normal Text><Macro>`sumvars'</Macro><Normal Text> _count</Normal Text><br/>
42<Normal Text></Normal Text><br/>
43<Normal Text>                </Normal Text><Comment>/* create dummy by-var if no by option is specified */</Comment><br/>
44<Normal Text>                </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><String>"`by'"</String><Normal Text>==</Normal Text><String>""</String><Normal Text> {</Normal Text><br/>
45<Normal Text>                        </Normal Text><Keyword>tempvar</Keyword><Normal Text> </Normal Text><Keyword>by</Keyword><br/>
46<Normal Text>                        g </Normal Text><Keyword>byte</Keyword><Normal Text> </Normal Text><Macro>`by'</Macro><Normal Text> = 1</Normal Text><br/>
47<Normal Text>                }</Normal Text><br/>
48<Normal Text>                </Normal Text><Keyword>tempvar</Keyword><Normal Text> </Normal Text><Macro>`xvars'</Macro><Normal Text> </Normal Text><Macro>`by'</Macro><br/>
49<Normal Text></Normal Text><br/>
50<Normal Text>                </Normal Text><Comment>/* create negative for subtraction when spell ends */</Comment><br/>
51<Normal Text>                cap </Normal Text><Keyword>foreach</Keyword><Normal Text> v </Normal Text><Keyword>of</Keyword><Normal Text> </Normal Text><Keyword>varlist</Keyword><Normal Text> </Normal Text><Macro>`xvars'</Macro><Normal Text> {</Normal Text><br/>
52<Normal Text>                        g </Normal Text><Keyword>double</Keyword><Normal Text> </Normal Text><Macro>``v'</Macro><Normal Text>' = -</Normal Text><Macro>`v'</Macro><br/>
53<Normal Text>                        </Normal Text><Keyword>local</Keyword><Normal Text> txvars </Normal Text><Macro>`txvars'</Macro><Normal Text> </Normal Text><Macro>``v'</Macro><Normal Text>'</Normal Text><br/>
54<Normal Text>                }</Normal Text><br/>
55<Normal Text>                cap </Normal Text><Keyword>foreach</Keyword><Normal Text> v </Normal Text><Keyword>of</Keyword><Normal Text> </Normal Text><Keyword>varlist</Keyword><Normal Text> </Normal Text><Macro>`by'</Macro><Normal Text> {</Normal Text><br/>
56<Normal Text>                        g </Normal Text><Keyword>double</Keyword><Normal Text> </Normal Text><Macro>``v'</Macro><Normal Text>' = </Normal Text><Macro>`v'</Macro><br/>
57<Normal Text>                        </Normal Text><Keyword>local</Keyword><Normal Text> txvars </Normal Text><Macro>`txvars'</Macro><Normal Text> </Normal Text><Macro>``v'</Macro><Normal Text>'</Normal Text><br/>
58<Normal Text>                }</Normal Text><br/>
59<Normal Text></Normal Text><br/>
60<Normal Text>                </Normal Text><Keyword>stack</Keyword><Normal Text> </Normal Text><Macro>`date0'</Macro><Normal Text> </Normal Text><Macro>`xvars'</Macro><Normal Text> </Normal Text><Macro>`by'</Macro><Normal Text> </Normal Text><Macro>`date1'</Macro><Normal Text> </Normal Text><Macro>`txvars'</Macro><Normal Text>, into(</Normal Text><Macro>`date0'</Macro><Normal Text> </Normal Text><Macro>`xvars'</Macro><Normal Text> </Normal Text><Macro>`by'</Macro><Normal Text>) </Normal Text><Keyword>clear</Keyword><br/>
61<Normal Text></Normal Text><br/>
62<Normal Text>                </Normal Text><Comment>/* calculate totals per date */</Comment><br/>
63<Normal Text>                cap </Normal Text><Keyword>foreach</Keyword><Normal Text> v </Normal Text><Keyword>of</Keyword><Normal Text> </Normal Text><Keyword>varlist</Keyword><Normal Text> </Normal Text><Macro>`xvars'</Macro><Normal Text> {</Normal Text><br/>
64<Normal Text>                        </Normal Text><Keyword>egen</Keyword><Normal Text> </Normal Text><Keyword>double</Keyword><Normal Text> </Normal Text><Macro>``v'</Macro><Normal Text>' = </Normal Text><Keyword>sum</Keyword><Normal Text>(</Normal Text><Macro>`v'</Macro><Normal Text>), </Normal Text><Keyword>by</Keyword><Normal Text>(</Normal Text><Macro>`by'</Macro><Normal Text> </Normal Text><Macro>`date0'</Macro><Normal Text>)</Normal Text><br/>
65<Normal Text>                }</Normal Text><br/>
66<Normal Text></Normal Text><br/>
67<Normal Text>                </Normal Text><Comment>/* unique dates only */</Comment><br/>
68<Normal Text>                </Normal Text><Keyword>by</Keyword><Normal Text> </Normal Text><Macro>`by'</Macro><Normal Text> </Normal Text><Macro>`date0'</Macro><Normal Text>, </Normal Text><Keyword>sort</Keyword><Normal Text>: </Normal Text><Keyword>keep</Keyword><Normal Text> </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Constants>_n</Constants><Normal Text>==1</Normal Text><br/>
69<Normal Text></Normal Text><br/>
70<Normal Text>                </Normal Text><Comment>/* calculate totals (+ when spell starts - when ends) */</Comment><br/>
71<Normal Text>                </Normal Text><Keyword>sort</Keyword><Normal Text> </Normal Text><Macro>`by'</Macro><br/>
72<Normal Text>                cap </Normal Text><Keyword>foreach</Keyword><Normal Text> v </Normal Text><Keyword>of</Keyword><Normal Text> </Normal Text><Keyword>varlist</Keyword><Normal Text> </Normal Text><Macro>`xvars'</Macro><Normal Text> {</Normal Text><br/>
73<Normal Text>                        </Normal Text><Keyword>by</Keyword><Normal Text> </Normal Text><Macro>`by'</Macro><Normal Text>: </Normal Text><Keyword>replace</Keyword><Normal Text> </Normal Text><Macro>`v'</Macro><Normal Text> = </Normal Text><Keyword>sum</Keyword><Normal Text>(</Normal Text><Macro>``v'</Macro><Normal Text>')</Normal Text><br/>
74<Normal Text>                }</Normal Text><br/>
75<Normal Text>                </Normal Text><Keyword>by</Keyword><Normal Text> </Normal Text><Macro>`by'</Macro><Normal Text>: g </Normal Text><Macro>`date1'</Macro><Normal Text> = </Normal Text><Macro>`date0'</Macro><Normal Text>[</Normal Text><Constants>_n</Constants><Normal Text> + 1]</Normal Text><br/>
76<Normal Text></Normal Text><br/>
77<Normal Text>                </Normal Text><Keyword>drop</Keyword><Normal Text> </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Macro>`date0'</Macro><Normal Text>></Normal Text><Macro>`date1'</Macro><br/>
78<Normal Text>                </Normal Text><Keyword>drop</Keyword><Normal Text> _stack</Normal Text><br/>
79<Normal Text>                </Normal Text><Keyword>drop</Keyword><Normal Text> </Normal Text><Keyword>if</Keyword><Normal Text> _count==0</Normal Text><br/>
80<Normal Text>                </Normal Text><Keyword>order</Keyword><Normal Text> </Normal Text><Macro>`by'</Macro><Normal Text> </Normal Text><Macro>`date0'</Macro><Normal Text> </Normal Text><Macro>`date1'</Macro><Normal Text> </Normal Text><Macro>`xvars'</Macro><br/>
81<Normal Text>                </Normal Text><Keyword>format</Keyword><Normal Text> </Normal Text><Macro>`date0'</Macro><Normal Text> </Normal Text><Macro>`f0'</Macro><br/>
82<Normal Text>                </Normal Text><Keyword>format</Keyword><Normal Text> </Normal Text><Macro>`date1'</Macro><Normal Text> </Normal Text><Macro>`f1'</Macro><br/>
83<Normal Text></Normal Text><br/>
84<Normal Text>                cap </Normal Text><Keyword>for</Keyword><Normal Text> </Normal Text><Keyword>var</Keyword><Normal Text> </Normal Text><Macro>`meanvars'</Macro><Normal Text>: </Normal Text><Keyword>replace</Keyword><Normal Text> X = X/_count</Normal Text><br/>
85<Normal Text></Normal Text><br/>
86<Normal Text>                </Normal Text><Keyword>compress</Keyword><br/>
87<Normal Text>        }</Normal Text><br/>
88<Normal Text></Normal Text><br/>
89<Keyword>end</Keyword><br/>
90