Hi
I have a package of old *.for files. They are compiled and linked ok when using CVF.
However, if I compiled them in IVF, there are errors:
error #7983: The storage extent of the dummy argument exceeds that of the actual argument. [UU]
error #7983: The storage extent of the dummy argument exceeds that of the actual argument. [AA]
How to solve this problem?
Mike
error #7983: The storage extent of the dummy argument exceeds that of the actual argument. [AA]
CVF likely would have told you about this if you built with /debug, or put all the sources in one file. It would not make your program run incorrectly, as long as the subroutine doesn't use data beyond the extent of the actual argument. In fact, if you are using it like an assumed-size array (dimension(*)), the compiler generated code might be the same, and you could turn off the checking, as you did in CVF. If you want to correct the code and make it f77 compatible, assumed-size, or explicit variable bound, are your choices. Module or internal (CONTAINS) subroutines are the most often recommended choices.
Actually, I don't think CVF would have detected this error - it's something we added after CVF.
What this means is that you have declared a dummy argument in a routine to be larger than the actual argument passed. For example:
[cpp]real a(10)
call sub(a)
...
subroutine sub(a)
real a(100) ! Error![/cpp]
The fix is to correct the declaration of the dummy argument. You might want to make the size match, you may want to use (*) for assumed-size or you may have passed the size in as another argument and then declare the argument as an "adjustable" array (N).
Actually, I don't think CVF would have detected this error - it's something we added after CVF.
What this means is that you have declared a dummy argument in a routine to be larger than the actual argument passed. For example:
[cpp]real a(10)
call sub(a)
...
subroutine sub(a)
real a(100) ! Error![/cpp]
The fix is to correct the declaration of the dummy argument. You might want to make the size match, you may want to use (*) for assumed-size or you may have passed the size in as another argument and then declare the argument as an "adjustable" array (N).
For more complete information about compiler optimizations, see our Optimization Notice.