From ripley at stats.ox.ac.uk  Thu Apr  8 13:40:45 2010
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Thu, 8 Apr 2010 12:40:45 +0100 (BST)
Subject: [Rd] LOGICAL arguments in FORTRAN code
In-Reply-To: <20100408183235.4185aa65@bossiaea>
References: <20100408183235.4185aa65@bossiaea>
Message-ID: <alpine.LFD.2.00.1004081231530.21500@gannet.stats.ox.ac.uk>

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



[Rd] LOGICAL arguments in FORTRAN code
Prof Brian Ripley