Print

Print


>       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.



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%