SIDL TYPE | FORTRAN 90 TYPE |
int | INTEGER (SELECTED_INT_KIND(9)) |
long | INTEGER (SELECTED_INT_KIND(18)) |
float | REAL (SELECTED_REAL_KIND(6,37)) |
double | REAL (SELECTED_REAL_KIND(15, 307)) |
bool | LOGICAL |
char | CHARACTER (LEN=1) |
string | CHARACTER*(*) |
fcomplex | COMPLEX (SELECTED_REAL_KIND(6, 37)) |
dcomplex | COMPLEX (SELECTED_REAL_KIND(15, 307)) |
enum | INTEGER (SELECTED_INT_KIND(9)) |
opaque | INTEGER (SELECTED_INT_KIND(18)) |
For pointer types, such as opaque, interface, class, and array, the equivalent of a SIDL double is used. That is, the intermediate object reference assumes a 64-bit integer is used to enable portability between systems with a 32 bit address space and those with a 64 bit address space. On a 32 bit system, the upper 32 bits of these quantities are ignored. Systems with more than 64-bit pointers aren't currently supported.
Generally, clients should treat opaque, interface, class and array values as black boxes. However, there is one value that is special. A value of zero for any of these quantities indicates that the value does not refer to an object. Zero is the equivalent of NULL. Any nonzero value is or should be a valid object reference. Developers writing in FORTRAN 90 should initialize values to be passed as in or inout parameters to zero or a valid object reference.
The SIDL string type mapping is currently identical to that of the FORTRAN 77 mapping. That is, all FORTRAN 90 strings have a limited fixed size. When implementing a subroutine with an out parameter, the size of the string is limited to 1024 characters.
Enumerated types are just integer values. The constants are defined in an includable file assuming your FORTRAN 90 compiler supports some form of including.