Warning, /frameworks/syntax-highlighting/autotests/folding/highlight.do.fold is written in an unsupported language. File is not indexed.

0001 <beginfold id='1'>/*</beginfold id='1'> Test file for kate's stata syntax highlighting
0002 <endfold id='1'>*/</endfold id='1'>
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         <beginfold id='1'>/*</beginfold id='1'> set default statistic <endfold id='1'>*/</endfold id='1'>
0014         local current "mean"
0015 
0016         gettoken left anything : anything, match(prns)
0017         while "`left'"!="" <beginfold id='2'>{</beginfold id='2'>
0018                 if "`prns'"!="" <beginfold id='2'>{</beginfold id='2'>
0019                         if !inlist("`left'","mean","sum") <beginfold id='2'>{</beginfold id='2'>
0020                                 di as error "Statistic `left' not supported"
0021                                 exit 198
0022                         <endfold id='2'>}</endfold id='2'>
0023                         local current "`left'"
0024                 <endfold id='2'>}</endfold id='2'>
0025                 else <beginfold id='2'>{</beginfold id='2'>
0026                         local `current'vars  ``current'vars' `left'
0027                 <endfold id='2'>}</endfold id='2'>
0028                 gettoken left anything : anything, match(prns)
0029         <endfold id='2'>}</endfold id='2'>
0030         if ("`meanvars'"!="") <beginfold id='2'>{</beginfold id='2'>
0031                 confirm var `meanvars'
0032                 unab meanvars : `meanvars'
0033         <endfold id='2'>}</endfold id='2'>
0034         if ("`sumvars'"!="") <beginfold id='2'>{</beginfold id='2'>
0035                 confirm var `sumvars'
0036                 unab sumvars : `sumvars'
0037         <endfold id='2'>}</endfold id='2'>
0038 
0039         quietly <beginfold id='2'>{</beginfold id='2'>
0040                 g _count = 1
0041                 local xvars `meanvars' `sumvars' _count
0042 
0043                 <beginfold id='1'>/*</beginfold id='1'> create dummy by-var if no by option is specified <endfold id='1'>*/</endfold id='1'>
0044                 if "`by'"=="" <beginfold id='2'>{</beginfold id='2'>
0045                         tempvar by
0046                         g byte `by' = 1
0047                 <endfold id='2'>}</endfold id='2'>
0048                 tempvar `xvars' `by'
0049 
0050                 <beginfold id='1'>/*</beginfold id='1'> create negative for subtraction when spell ends <endfold id='1'>*/</endfold id='1'>
0051                 cap foreach v of varlist `xvars' <beginfold id='2'>{</beginfold id='2'>
0052                         g double ``v'' = -`v'
0053                         local txvars `txvars' ``v''
0054                 <endfold id='2'>}</endfold id='2'>
0055                 cap foreach v of varlist `by' <beginfold id='2'>{</beginfold id='2'>
0056                         g double ``v'' = `v'
0057                         local txvars `txvars' ``v''
0058                 <endfold id='2'>}</endfold id='2'>
0059 
0060                 stack `date0' `xvars' `by' `date1' `txvars', into(`date0' `xvars' `by') clear
0061 
0062                 <beginfold id='1'>/*</beginfold id='1'> calculate totals per date <endfold id='1'>*/</endfold id='1'>
0063                 cap foreach v of varlist `xvars' <beginfold id='2'>{</beginfold id='2'>
0064                         egen double ``v'' = sum(`v'), by(`by' `date0')
0065                 <endfold id='2'>}</endfold id='2'>
0066 
0067                 <beginfold id='1'>/*</beginfold id='1'> unique dates only <endfold id='1'>*/</endfold id='1'>
0068                 by `by' `date0', sort: keep if _n==1
0069 
0070                 <beginfold id='1'>/*</beginfold id='1'> calculate totals (+ when spell starts - when ends) <endfold id='1'>*/</endfold id='1'>
0071                 sort `by'
0072                 cap foreach v of varlist `xvars' <beginfold id='2'>{</beginfold id='2'>
0073                         by `by': replace `v' = sum(``v'')
0074                 <endfold id='2'>}</endfold id='2'>
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         <endfold id='2'>}</endfold id='2'>
0088 
0089 end