Skip to content
Prev 7739 / 12125 Next

[R-pkg-devel] (How) can you use R file i/o within Fortran code in an R package?

I am developing a package based around several thousand lines of legacy 
Fortran code front-ended with a fairly minimal R function to format 
input and results. In its basic form it is on CRAN, but now I want to 
extend it in a way that will generate copious output over the course of 
the running time of the Fortran code, and I would prefer if possible to 
write this output to (several) files rather than return it through 
arguments to .Fortran.

I have a version using Fortran open, write and close (naturally avoiding 
stderr and stdout), which runs perfectly on several platforms, but 
generates a NOTE in R-hub and Winbuilder:

 > * checking compiled code ... NOTE
 > File ?Nmix/libs/Nmix.so?:
 >?? Found ?_gfortran_st_close?, possibly from ?close? (Fortran)
 >???? Object: ?Nmix-sub3z.o?
 >?? Found ?_gfortran_st_open?, possibly from ?open? (Fortran)
 >???? Object: ?Nmix-sub3z.o?
 >?? Found ?_gfortran_st_write?, possibly from ?write? (Fortran), ?print?
 >???? (Fortran)
 >???? Object: ?Nmix-sub3z.o?
 >
 > Compiled code should not call entry points which might terminate R nor
 > write to stdout/stderr instead of to the console, nor use Fortran I/O
 > nor system RNGs.
that will presumably cause it to fail submission to CRAN, for reasons I 
understand.

Is there a way that I can use R file i/o from within the Fortran code, 
possibly mediated through a C or C++ wrapper? As I am not fluent in 
these languages or all the concepts involved, if it is possible a recipe 
or template would be most appreciated. To fix ideas, (how) can I write 
100000 integers, separated by white space, to a text file?

My apologies if this is a well-known question already answered, possibly 
in the negative, but my search through the archives failed to find 
anything. Thank you.

Peter Green