Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Normally, passing numeric data does not present a problem. The most important thing to keep in mind when passing numeric types is that in Win32, the C int type is 4 bytes, not 2 bytes, and therefore is equivalent to the Fortran INTEGER*4 type. The COMPLEX type is a special case and is discussed in a later section. The following table summarizes equivalent numeric data types for Fortran, MASM, and C/C++.
Equivalent Fortran, MASM, and C/C++ Numeric Data Types
Fortran | MASM | C/C++ |
CHARACTER*1 | BYTE | unsigned char |
INTEGER*1 | SBYTE | char |
(none) | WORD | unsigned short |
INTEGER*2 | SWORD | short |
(none) | DWORD | unsigned long, unsigned int |
INTEGER, INTEGER*4 | SDWORD | long, int |
REAL, REAL*4 | REAL4 | float |
DOUBLE PRECISION, REAL*8 | REAL8 | double |
If a C program passes an unsigned data type to a Fortran routine, the routine can accept the argument as the equivalent signed data type, but you should be careful that the range of the signed type is not exceeded.