- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
In several instances where I am passing an user-defined data(type) variable as a parameter to a subroutine, I get the following error message: "error #6633: The type of the actual argument differs from the type of the dummy argument." However, the user-defined data variable is explicitly declared in both the calling and the called subroutines. My feeling is that this is a BUG of the Intel Fortran compiler, because:
1. WhenI compile the code in DEBUG Win 32 I get many of the same error messages;
2. when I compile the code in DEBUG x64 I get less but the same error message;
3. When I compile the code in RELEASE mode, either for Win32 or x64, the code compiles, builds and works perfectly...!
Follows an example of the source code:
calling routine:
SUBROUTINE READ_CONT_RANDOM_VARIABLE_DATA (INPUT, CRV)
IMPLICIT NONE
INTEGER INPUT !INPUT FILE NUMBER
TYPE(CONT_RANDOM_VARIABLE),INTENT(INOUT) :: CRV
...
CALL CRV_PARAMETER_EVAL(CRV); !!!!!! THIS IS WHERE I GET THE ERROR MESSAGE !!!!!!...
...
END SUBROUTINE READ_CONT_RANDOM_VARIABLE_DATA
called subroutine:
SUBROUTINE CRV_PARAMETER_EVAL(CRV)
IMPLICIT NONE
TYPE(CONT_RANDOM_VARIABLE),INTENT(INOUT) :: CRV
....
END SUBROUTINE CRV_PARAMETER_EVAL
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The evidence so far suggests that the compiler is correct.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
http://software.intel.com/en-us/forums/showthread.php?t=86588&o=a&s=lr
I had also some problems with interface checking but this was concerning character variables passed with wild-cards in the dummy entries used in some old libraries formerly compiled with CVF and now ported to ifort. As suggested somewhere in this forum, I turned off the checking. Running the program never caused an error so far.
Greetings,
Johannes
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you for your replies: Here is some example
REAL T, P,... ... CALL DDTCI (1, T, RPDS, LGLSA, LGFR, YF, & XOM, XLAM, ITYP2P, : ZF, X, Y, Z, XW, YW, ZW, XY, XZ, AD, CDZ, S, LGSMTH, . THETAW, ISIDES, : LPOIN2, WORK1, WORK2, WORK3, WORK4, WORK5, : LGABRT)
SUBROUTINE DDTCI (NT, T, P, LGLSA, LGFR, YF, XOM, XLAM, ITYP2P, . ZF, X, Y, Z, XW, YW, ZW, XY, XZ, AD, CD, S, LGSMTH, : THTAWD, . ISIDES, NMAX, WORK1, WORK2, WORK3, WORK4, WORK5, . LGABRT)
REAL T, P,... DIMENSION T(*), P(*),...
this is the typical case where the function expects arrays, and the call is done with values and dimension 1.
It is produce by /warn:interfaces, this is part of diagnostics, turning it off, code compiles and runs correctly.
1/ indeed changes could be done to T, RPDS, etc. in the calling code, and turn them into array and back into values, now, I would rather not change this legacy code that is working and add more complexity to it.
2/ usage of !DEC$ ATTRIBUTES NO_ARG_CHECK :: dummy-arg-name would disable the checks for all calls to DDTCI, no? whereas I just want to turn off the checks for this call
3/ My issue is not so much how to fix the code, but how I can keep a high level of check on my solution (i.e. all /warn on) while disabling specific error/warning on some specific files where the code is too hard to fix without major rewrite
Thank you!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Show me an example call. If you are passing input values, you can enclose the scalar argument in [] and that turns it into an array. This won't work if the subroutine writes to the argument.

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page