SIDL TYPE | FORTRAN 77 TYPE |
---|---|
int | INTEGER*4 |
long | INTEGER*8 |
float | REAL |
double | DOUBLE PRECISION |
bool | LOGICAL |
char | CHARACTER*1 |
string | CHARACTER*(*) |
fcomplex | COMPLEX |
dcomplex | DOUBLE COMPLEX |
enum | INTEGER |
opaque | INTEGER*8 |
For pointer types, such as opaque, interface, class, and array, a 64-bit integer is used, so FORTRAN 77 code will be portable between systems with a 32 bit address space and systems 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 FORTRAN 77 equivalent of NULL . Any nonzero value is or should be a valid object reference. Developers writing in FORTRAN 77 should initialize values to be passed as in or inout parameters to zero or a valid object reference.
When mapping the SIDL string type into FORTRAN 77, some capability was sacrificed to make it possible to use normal looking FORTRAN 77 string handling. One difference is that all FORTRAN 77 strings have a limited fixed size. When implementing a subroutine with an out parameter, the size of the string is limited to 512 characters.
Enumerated types are just integer values. The constants are defined in an includable file assuming your FORTRAN 77 compiler supports some form of including.