ID: Q49467
4.00 4.01 4.10 5.00 5.10 1.00 1.00a | 4.10 5.00 5.10 | 1.00 4.00
MS-DOS | OS/2 | WINDOWS NT
kbprb
The information in this article applies to:
During the process of compiling an application, the compiler generates the following messages:
F3606: formal argument 1 : type mismatch
F3607: formal argument 1 : length mismatch
F4016: formal argument 1 : type mismatch
F4017: formal argument 1 : length mismatch
warning FOR4639: inconsistent data type for argument 1 in call
to procedure
warning FOR4227: argument (number 1) in reference to procedure
from procedure main incorrect: has the wrong data type
In a FORTRAN application developed in the DEC VAX environment, it is not necessary to be consistent when passing actual arguments to a subprogram. However, the Microsoft FORTRAN compiler detects the inconsistency and generates these errors.
The errors are recoverable errors; the compiler produces an OBJ file after reporting the errors. You can either choose to ignore the errors or to modify the source code to be consistent when it passes formal arguments.
The following code example demonstrates this problem.
C Compiler options needed: None
INTEGER*4 INTX
LOGICAL*1 LOGIC
CALL SUB1(LOGIC)
CALL SUB1(INTX)
END
C
SUBROUTINE SUB1(INTY)
INTEGER*4 INTY
END
When the compiler processes this code, it reserves 4 bytes for the INTX
variable and 1 byte for LOGIC. When it processes the first call to SUB1, it
assumes that the formal argument requires only 1 byte. Then, when it
processes the second call to SUB1, it determines that the formal argument
requires 4 bytes and produces the errors. In this case, both the length and
the type of the formal argument changed between calls.
Additional reference words: 4.00 4.01 4.10 5.00 5.10
KBCategory: kbprb
KBSubcategory: FLIss
Keywords : kberrmsg kbLangFortran
Version : 4.00 4.01 4.10 5.00 5.10 1.00 1.
Platform : MS-DOS NT OS/2 WINDOWS
Last Reviewed: May 23, 1998