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