weird behaviour
Martin Tee
aovb94@dsl.pipex.com
Fri Aug 3 18:03:00 GMT 2007
Hi,
Looks like your arguments don't match; 9 actual and 10 dummy.
Regards,
Martin
Éric Depagne wrote:
> Le Thursday 02 August 2007 21:00:58 Brooks Moses, vous avez écrit :
>> Éric Depagne wrote:
>>> That's the way I call the function:
>>>
>>> contrib=LINE(wave,nlo,nup,hlambda,t(k),ne(k),nh1(k),nhe1(k),frac)
>> How are these variables declared?
>
> Unfortunately, most of them are implicit.
>>> And that's the first lines of the function:
>>> FUNCTION LINE(WAVE,NBLO,NBUP,WAVEH,T,XNE,HNORM,H1FRC,HE1FRC,DOPPLE)
>>>
>>> REAL KAP0,KAP0RED,KAPRED,KAP0BLUE,KAPBLUE
>>> REAL*8 WAVEH,WAVE,WCON,EMERGE,WMERGE,WSHIFT,WTAIL
>>> REAL*8 BLUECUT,WLBLUE,REDCUT,WLRED,EMERGEH
>>> REAL*8 EHYD(100),CONTH(15)
>>> REAL*4 DOPPLE
>>> REAL*8 VACAIR
>>> real pg
>>> LOGICAL FIRST
>>> SAVE
>> In general, it's a good idea to put IMPLICIT NONE at the beginning of
>> all declaration blocks, to catch undeclared variables.
> I agree, but this code is not mine, and it is rougly 20000 lines long,
> splitted in almost 90 files.
> And some files are written in pure F77, thus rewriting them so everything is
> readable is not ( unfrtunately) an option.
>
>> In particular, NBLO, NBUP, T, XNE, HNORM, H1FRC, and HE1FRC are not
>> declared here, and thus will get an implicit type. My guess is that
>> this does not match the type that they have in the caller, and that the
>> mismatch is such that the function's location for DOPPLE is off the end
>> of the call stack that the caller supplies.
>>
>> In any case, reducing this to a minimal complete example should enable
>> you to find the problem. (Steve's suggestions for warning options may
>> find the problem as well, though I'm not sure of that in this case.)
> I'll try his suggestion, hoping it will show the things missing.
>
> Éric.
>> - Brooks
>
>
>
More information about the Fortran
mailing list