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