.Fortran()
On Tue, 9 Oct 2001, John Bjornar Bremnes wrote:
Prof Brian Ripley wrote:
On Mon, 8 Oct 2001, John Bjornar Bremnes wrote:
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?
No, but it is impossible to call those expecting 'integer*2'
Ok, it seems that I can easily avoid using '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.
Is g77 one of those where it does not work? I use R-1.3.0 on linux (PC).
A properly working version of g77 should work on some platforms (including Linux), but not others (including Windows).
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
dyn.load("mysub.so")
.Fortran( "mysub", as.character("myfile"), as.integer(6), as.single(rep(0,10)), as.integer(10), DUP=T )
file: myfile Segmentation fault (core dumped)
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.
% R
dyn.load("mysub.so")
.Fortran( "mysub", as.character("myfile"), as.integer(6), as.single(rep(0,10)), as.integer(10), DUP=F )
Error: character variables must be duplicated in .C/.Fortran
Any comments?
Do you have one of the many broken Linux versions of g77?
Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272860 (secr) Oxford OX1 3TG, UK Fax: +44 1865 272595 -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- 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 _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._