Hi Kit,
to get the lower triangle -help mf_lowertriangle-
mata:
void function runsum(string scalar vname)
{
    real matrix L
    real matrix runsum
    real scalar resindex
    real scalar vnew
    vnew = vname+"_sum"
    st_view(A,.,vname)
    L=lowertriangle(J(rows(A),rows(A),1))
    runsum = L*A
    resindex = st_addvar("double",vnew)
    st_store((1,rows(runsum)),resindex,runsum)
}
end
Nicola
Kit Baum wrote:
Here's a Mata solution (no doubt hideously inefficient, but I can't  
find all the fns. I'm looking for) that appears to be just as precise  
as a -generate, sum- at doing a running sum. It could readily operate  
on a column vector instead of a Stata variable if that is desired.
Note that a running sum can be calculated by premultiplying by a  square 
matrix with 1's in the lower triangle, 0's above...
clear
set obs 1000
g double x = (uniform()-0.5)*10^(int(_n/10))
g sort = uniform()
sort sort
drop sort
g double sum = sum(x)
mata:
void function runsum(string scalar vname)
{
    real matrix L
    real matrix runsum
    real scalar resindex
    real scalar vnew
    vnew = vname+"_sum"
    st_view(A,.,vname)
//    if(cols(A)>1) A=A'
    L = J(rows(A),rows(A),0)
    for (i=1; i<=rows(A); i++) {
        for(j=1; j<=i; j++) {
        L[i,j] = 1
        }
    }
    runsum = L*A
    resindex = st_addvar("double",vnew)
    st_store((1,rows(runsum)),resindex,runsum)
}
end
mata runsum("x")
g double discrep = sum - x_sum
su
l, sep(0)
Kit Baum, Boston College Economics
http://ideas.repec.org/e/pba1.html
*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/
*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/