> dimension x(3)
> call glu(3,x)
> print *,x(1)
> call sglu(x)
> print *,x(2)
> end
> subroutine glu(n,a)
> dimension a(n)
> a(1)=1.
> return
> entry sglu(a)
> a(2)=2.
> end
MULTIVAC> fortran test
dimension a(n)
..................^
%FORT-W-DAUNDEFEP, Dummy argument N is undefined at entry point SGLU
at line number 8 in file DISK$SCRATCH:[HELBIG]TEST.FOR;1
dimension a(n)
..................^
%FORT-W-UNINIT, Variable N is used before its value has been defined
at line number 8 in file DISK$SCRATCH:[HELBIG]TEST.FOR;1
MULTIVAC> link test
%LINK-W-WRNERS, compilation warnings
in module TEST$MAIN file DISK$SCRATCH:[HELBIG]TEST.OBJ;1
MULTIVAC> r test
1.000000
2.000000
MULTIVAC> f90 test
entry sglu(a)
............^
%F90-W-WARNING, This entry point does not define all dummy variables used in bou
nds or length expressions of other dummy objects in its dummy argument list. [
SGLU]
at line number 11 in file DISK$SCRATCH:[HELBIG]TEST.F90;1
entry sglu(a)
.................^
%F90-E-ERROR, All bounds or length dummy variables for this object must be defin
ed in the same dummy argument list as the object. [A]
at line number 11 in file DISK$SCRATCH:[HELBIG]TEST.F90;1
These are the Digital FORTRAN and F90 compilers on VMS with their
default options set. I would conclude that
o your code is in any case bad style
o both Digital compilers complain loud enough about the problem
o the results from the FORTRAN(77) compiler might be what you
expect, but one can't depend on this behaviour
o I'm not sure if the fact that F90 gives an error instead of just
warnings is related to Fortran 90 requiring pickier (I would say
better) specifications.
XLF and XLF90 (with all four possible -qlanglvl settings) don't complain
at all about the code (except that f77 complains about lower case, as it
should (I normally have this option set with DEC Fortran; note that it
is also an OPTION with xlf, not the default) and produce the `expected'
output.
Digital UNIX: as expected, very similar:
fire.palmod.uni-bremen.de> f90 testy.f90
f90: Warning: testy.f90, line 11: This entry point does not define all dummy
var
iables used in bounds or length expressions of other dummy objects in its dummy
argument list. [SGLU]
entry sglu(a)
------------^
f90: Error: testy.f90, line 11: All bounds or length dummy variables for this
ob
ject must be defined in the same dummy argument list as the object. [A]
entry sglu(a)
-----------------^
fire.palmod.uni-bremen.de>
SUN:
`Complains', not sure about what, and produces `expected' output:
ceres_72_% cat test.f
dimension x(3)
call glu(3,x)
print *,x(1)
call sglu(x)
print *,x(2)
end
subroutine glu(n,a)
dimension a(n)
a(1)=1.
return
entry sglu(a)
a(2)=2.
end
ceres_73_% cp test.f test.f90
ceres_74_% f77 test.f
test.f:
MAIN:
glu:
entry sglu:
ceres_75_% ./a.out
1.00000
2.00000
ceres_76_% f90 test.f90
ceres_77_% ./a.out
1.
2.
ceres_78_%
--
Phillip Helbig Email .......... [log in to unmask]
Nuffield Radio Astronomy Laboratories Tel. ..... +44 1477 571 321 (ext. 297)
Jodrell Bank Fax ................. +44 1477 571 618
Macclesfield Telex ................. 36149 JODREL G
UK-Cheshire SK11 9DL Web .... http://www.jb.man.ac.uk/~pjh/
My opinions are not necessarily those of NRAL or the University of Manchester.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|