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.