Skip to content

.Fortran()

7 messages · John Bjornar Bremnes, Brian Ripley

#
I am trying to call some Fortran subroutines using .Fortran(). These
subroutines have arguments of type 'character', 'real', 'integer', and
'integer*2'. Is it impossible to call  subroutines expecting both
'character' and 'real' as input? 

Any help is appreciated.

John Bjornar Bremnes
Norwegian Meteorological Institute
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
#
On Mon, 8 Oct 2001, John Bjornar Bremnes wrote:

            
No, but it is impossible to call those expecting 'integer*2'

See ?.Foreign for what is supported, and note the comments there about
character types: they work on some compilers and not on others.
#
Prof Brian Ripley wrote:
Ok, it seems that I can easily avoid using 'integer*2'
Is g77 one of those where it does not work? I use R-1.3.0 on linux (PC).
I have tried the following simple example:

      subroutine mysub(filein, m, x, n)
c
      integer        m, n, i
      character*255  filein
      real           x(n)
c
      write(6,*) 'file: ', filein(1:m)
      do i=1,n
         x(i) = sqrt(1.0*i)
      enddo
      end

% R CMD SHLIB mysub.f 
g77   -fPIC  -g -O2 -c mysub.f -o mysub.o
gcc -shared  -o mysub.so mysub.o -L/usr/local/lib -lg2c -lm
-L/usr/local/lib -L. -L/usr/lib/gcc-lib/i386-linux/2.95.2 -lm
file: myfile
Segmentation fault (core dumped)
% R
Error: character variables must be duplicated in .C/.Fortran

Any comments?


Thanks again
John Bjornar Bremnes
Norwegian Meteorological Institute
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
#
On Tue, 9 Oct 2001, John Bjornar Bremnes wrote:

            
A properly working version of g77 should work on some platforms (including
Linux), but not others (including Windows).
That works for me (RH6.2, gcc 3.0.1, R 1.3.1).
 file: myfile
[[1]]
[1] "myfile"

[[2]]
[1] 6

[[3]]
 [1] 1.000000 1.414214 1.732051 2.000000 2.236068 2.449490 2.645751 2.828427
 [9] 3.000000 3.162278
attr(,"Csingle")
[1] TRUE

[[4]]
[1] 10

BTW, no one said Fortran I/O would work, and it sometimes is a problem.
Do you have one of the many broken Linux versions of g77?
#
Prof Brian Ripley wrote:
I have now tried versions 2.95.2 and 3.0 with no success. I will ask my
system administrator to install the latest gcc version (3.0.1?). Maybe I
should update R to 1.3.1 also. BTW where is the default compiler options
set for 'R CMD SHLIB'? 

In 
"Writing R Extensions" on page 23 it says "It is not possible to pass
numeric vectors as float * or REAL if DUP=TRUE". It should be DUP=FALSE,
or?


John Bjornar Bremnes
Norwegian Meteorological Institute
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
#
On Tue, 9 Oct 2001, John Bjornar Bremnes wrote:

            
I doubt if 3.0.1 would help much over 3.0.  It's puzzling though.
It should be FALSE, and I've jut fixed it, thanks.

  
    
#
Prof Brian Ripley wrote:
You were right about gcc 3.0.1 - it did not help. 

I then installed R-1.3.1 on a computer running a RH 7.? distribution of
linux with gcc 2.96 and it worked! All my previous tests were on a
Debian distribution. My system administrator thinks the problems may be
related to libc. The debian system use version 2.2.3 of this library and
RH 2.1.9 (if I remember correctly).

I will try out more complex Fortran subroutines (which work fine using
Splus 5.1 on irix 6.5) on the RH system.


thanks again
John Bjornar Bremnes
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._