Re: using Math Link w/FORTRAN
- To: mathgroup at smc.vnet.net
- Subject: [mg2386] Re: using Math Link w/FORTRAN
- From: wagner at goober.cs.colorado.edu (Dave Wagner)
- Date: Tue, 31 Oct 1995 23:22:58 -0500
- Organization: University of Colorado, Boulder
In article <471hhl$gb3 at ralph.vnet.net>,
peter becker <pbecker at gravity.science.gmu.edu> wrote:
>Hello-
>
>Perhaps this is a stupid question, but is there any way to
>use Math Link with a FORTRAN application on the Macintosh
>(system 7.1)? In particular, I want to make plots within
>Mathematica using data computed externally by a FORTRAN
>application. This involves passing parameters out to the
>FORTRAN code, and data back into Mathematica. Any help
>would be most appreciated...
At a minimum, you need to do the following:
1. Transpose any matrix data before sending it across
the link, and Transpose the results after they come
back. (You could do this in the MathLink code, but
why bother when Mathematica can do it for you?
2. Depending on the fortran compiler that you use,
the procedure calling convention may different than that used
by C. C compilers push parameters onto a stack, whereas many
(most?) FORTRAN compilers do not. To get around this problem,
if you have it, you need to declare the arguments taken by the
Fortran routine (in the mprep template file) in the reverse
order in which they actually are declared in the fortran code.
3. You'll need a main routine that calls MLMain. It's probably
easiest to write this in C, as you can copy it directly from
the MathLink manual. You're going to need a C compiler anyway,
because mprep creates a C source file. Of course, you can
bypass mprep and do it all yourself in Fortran, but that would
be a helluva lot of work.
4. As far as linking the Fortran object files with the C
object files: on a UNIX system it would be no problem, but on
the Macintosh it would depend on the particular development
environments that you are using. You're pretty much on your
own here... I believe that the MPW shell can do it, if
you have both a Fortran and a C compiler that can be used
from the shell. If you don't already have this, you will
need to "shell" out (ha-ha) quite a bit of money.
Dave Wagner
Principia Consulting
(303) 786-8371
dbwagner at princon.com
http://www.princon.com/princon