On Thu, 8 Apr 2010, Berwin A Turlach wrote:
> G'day all,
>
> I just took over maintenance of the quadprog package from Kurt Hornik
> and noticed that one of the FORTRAN routines has an argument that is
> declared to be a LOGICAL. The R code that calls this routine (via
> the .Fortran interface) passes the argument down wrapped in a call to
> as.logical().
>
> This was fine (and as documented) under S-Plus 3.4, for which this code
> was originally developed. However, as far as I know, in R objects of
> storage mode logical were always supposed to be passed to FORTRAN
> arguments of type INTEGER; and that is what the current "Writing R
> extension manual states".
>
> Thus, given that the port of quadprog existed for quite some time, I
> am wondering whether it is o.k. to pass R objects with storage mode
> logical into FORTRAN code to arguments declared as LOGICAL? Or should
> the FORTRAN code be corrected to declare the argument in question as
> INTEGER?
The second to be safe. This is not a question on the S-PLUS/R side
but on the Fortran side. A Fortran compiler may or may not use the
same storage for integer and logical (and it may depend on compiler
flags, although not on the compilers I just checked, gfortran and
SunStudio f95). S-PLUS ran on only a few platforms and with specified
compilers.
>
> Cheers,
>
> Berwin
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
--
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 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595