[MPI3 Fortran] Results of recent J3 Fortran meeting

N.M. Maclaren nmm1 at cam.ac.uk
Thu Oct 21 14:13:27 CDT 2010


On Oct 21 2010, Bill Long wrote:
>
>> On Oct 21 2010, Bill Long wrote:
>>> I've lost track of the choice numbers, but if there is no need for 
>>> characters other that C's char, then the simplest solution (for both 
>>> the user and the TR) is to treat character arrays passed by descriptor 
>>> like any other arrays passed by descriptor. The type would be char, and 
>>> the dimension information (dim[] member) corresponds to the Fortran 
>>> dimensions. The elem_len field contains the array element length. 
>>> Because sizeof(char) is 1, the character length parameter is equal to 
>>> the elem_len value, so the character len value is directly available.
>> 
>> It is also the least future-resistant, which is matter of considerable
>> concern.
>
>Not really. The size of the array element in a character array will 
>always have a known relationship to the number of characters in the 
>variable.

But not necessarily one known to the C - that's a fairly common option
in Fortran compilers, and one common requirement is to have a single
(C-based) library for a range of Fortran compiler options.

> For ASCII characters, the relationship is trivial (equal), 
>but it we later wanted to add support for 32-bit characters, the factor 
>of 4  is well known.  ...

That's only one possibility.  Now consider this one.

I write some C code to handle characters, without actually doing
anything very much with them except passing them around.  However, I do
need to know how big a single character is, because some interfaces
have specifications that ask for each of the characters from a 'string'
in order and/or I occasionally have to translate to and from the code I
use in my C.  My code will work irrespective of the size of characters,
provided only that I know what it is.  That approach conflates a
CHARACTER(LEN=4) of 1-byte characters with a CHARACTER(LEN=1) of 4-byte
ones.

Indeed, I have come close to describing MPI's MPI_CHARACTER support in
the above!


Regards,
Nick Maclaren.




More information about the mpiwg-fortran mailing list