Jingjing,
As Nick pointed out, you know the names of your own variables. We
don't. So, when I said "right hand side variables" I meant the list of
right hand side variables in your equations, in the order that your
program needs them. Your program reads something like
args lnc sl sk sm lnpl lnpk lnpm lnpe lnq t d1 d2 d3 d4 d5 d6
, and only you know what these names stand for. All we know is that
the first four are left hand side variables, and the rest are right
hand side variables in your equations.
So, besides
matrix a = J(1,62,0)

you need to create copies of your left hand side variables, which
you can do by

gen copy_var1 = var1
assuming that var1 is the name of your variable. Do this for all your
left hand side variables, and then call your program with the list of
all 16 variables that you need for your equations, in the order
lnc sl sk sm lnpl lnpk lnpm lnpe lnq t d1 d2 d3 d4 d5 d6
because this is what your program asks for. Just make sure that,
instead of providing the names of your left hand side variables, you
provide the names of their _copies_. -set trace on- and see what
happens.
As a general remark, you might find it useful to attend a NetCourse by
Statacorp, especially NC151.
Eva
2009/3/15 <jjc.li@utoronto.ca>:

Sorry but could you take a example?
Quoting Nick Cox <n.j.cox@durham.ac.uk>:

where there is a hard coded 5 (not a starting value! This is a set
value.), and did you replace this value of 5 by another parameter,
e.g. `a0'? In terms of the program, that is not a problem as long as
you adjust your code. It would be easiest if you put this parameter
last, since this saves you the pain of changing all your `at'[1,x]
statements to `at'[1,x+1]. Therefore, my suggestion would be to code
scalar `dmm'=`at'[1,61]
tempname a0
scalar `a0' =`at'[1,62]
quietly {
replace `lnc' = `a0'+ ....
}
Now, for the debugging, just follow my suggestions earlier, and invoke
your program directly. You need to create a matrix of initial values,
e.g. zeros for all coefficients. If you have 62 parameters, you do
matrix a = J(1,62,0)
which gives you a row vector of 62 zeros. Next create copies of all
your dependent variables, and invoke your program:
set trace on
nlsurwellbehav "copies of dep. variables" "right hand side variables" ,
at(a)
and see where the problem lies.