Reputation: 41
Accept my apologies for probably asking such a basic question here, I am new to programming with Intel Fortran so I think there is something missing or wrongly organized that I am not aware of in this case. I would be grateful if someone can help me in this regard.
The problem is that I see the following errors when compiling my code, while I believe that I have declared the derived type variables cr
and me
correctly.
error #6633: The type of the actual argument differs from the type of the dummy argument. [CR]
error #6633: The type of the actual argument differs from the type of the dummy argument. [ME]
My code contains a Module named InputData
which contains the definition of the derived type grid
and declaration of the derived type variables cr
and me
of type grid
. I make use of these definitions in the main program using a USE
statement. The error refers to a line in the main program which CALLs
an internal subroutine that uses cr
and “me” as input argument (INTENT(IN)
). Surprisingly, I use exactly the same way for declaring the derived type variable ls
of type Levelset
defined in Module OutputData
using a USE
statement in the Main program and get no error on that variable in the same subroutine. Adding a USE InputData
statement to the subroutine ComputeLS
also did not address the issue. The structure of the program units are as follow:
MODULE InputData
TYPE grid
REAL, DIMENSION(:,:), POINTER :: nodes
INTEGER, DIMENSION(:,:), POINTER :: connectivity
END TYPE grid
TYPE(grid) :: cr, me
CONTAINS
…
END MODULE InputData
MODULE OutputData
TYPE levelset
REAL, DIMENSION(:), POINTER :: f, g
END TYPE levelset
…
TYPE(levelset) :: ls
CONTAINS
…
END MODULE OutputData
PROGRAM Main
USE InputData
USE OutputData
USE Timing
IMPLICIT NONE
INTEGER, DIMENSION(:,:), POINTER :: ed
…
CALL ComputeLS(me, cr, ed, ls) <========= error #6633 refers to this line
…
CONTAINS
! INTERNAL PROCEDURES
SUBROUTINE ComputeLS(me, cr, ed, ls)
USE MathCalc
IMPLICIT NONE
TYPE(grid), INTENT(IN) :: me, cr
INTEGER, DIMENSION(:,:), INTENT(IN) :: ed
TYPE(levelset), INTENT(OUT) :: ls
…
END SUBROUTINE ComputeLS
…
END PROGRAM Main
I tried to remove all modules and include all type definitions and variable declarations in the Main program instead of in separate modules. But unfortunately the errors still exist.
Upvotes: 4
Views: 7927
Reputation: 7277
I think this is a known compiler bug, ID DPD200250382, that is fixed for our upcoming 15.0 release, but your partial example differs a bit from the problem description. Are you using our Windows compiler and have Diagnostics > Check Routine Interfaces enabled? If so, try setting that option to No and see what happens.
If that doesn't help, I'd like to see a complete test case.
Upvotes: 1