Thanks to all of you for your thoughtful answers!
I've learned much, including--but not restricted to--...
a) that most experts agree that Stata indeed does not implement the most
basic form of programming (function passing direct return values)
b) that Stata has a wonderful programming language with Mata (I had read
about it, but it's impressive what is a priori possible there)
c) that Stata has an object oriented engine (hidden behind the class
structure), whoa!
What is still unclear to me is the following: Maarten suggested that I could
make function returning variables, like many egen function. And the trick is
simply to look into the .ado code of those _gxxx.ado functions. After
looking briefly at such code, I'm still not clear about the details, but it
sounds like a good idea.
Then I noticed that some simple scalar function (such as acos()) appear also
there in the library provided by Stata, and wondered: hey, why not just
imitate what's there?!
Currently, the only example I can find are Mata code.
So my remaining question is therefore: I know I can write
. scalar y = sin(x)
So .... where is the code for such "sin" function. I tried ". which sin",
and it responds that it is not a built in or ado-file. So where is it
defined?
Maybe that is all implemented in C code in the kernel, and then, I'm toast.
But it does not hurt to ask...
Best to all
Fabrice Cavarretta
----------------------------------------------
Assistant Professor of Management and Entrepreneurship
ESSEC Business School
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Martin Weiss
Sent: mercredi 18 février 2009 11:10
To: [email protected]
Subject: st: AW: Should be simple yet ... how to write a function?
<>
See http://www.stata-journal.com/article.html?article=pr0007
When you -generate- a variable, you implicitly apply a "function" to all
observations. If you want to write your own function, -egen- is a good
starting point, and this is explored in the article cited above...
HTH
Martin
-----Ursprüngliche Nachricht-----
Von: [email protected]
[mailto:[email protected]] Im Auftrag von Fabrice
Gesendet: Mittwoch, 18. Februar 2009 11:04
An: [email protected]
Betreff: st: Should be simple yet ... how to write a function?
Im a pretty advanced Stata user, but have a simple question I cant figure
out: how does one write a *function*, i.e. a program that returns a value,
and that can be called like local y = fct(x), where x and y are numbers or
strings.
This seems it should be available somewhere in the language, yet I?ve
searched in a lot of programming explanations about Stata and never found a
way to write that. FYI, I program extensively in stata, know about r-type
vs. e-type program, and know how to store results to return to main program.
I just don?t know how to write the most simple function form.
Any idea?
Fabrice
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/