In a statement function, only the type and kind are determined from the host.
gfortran fails to compile 

troutmask:kargl[205] cat n.f
      SUBROUTINE PHTOD(E,N,I,H)
      DIMENSION E(N)
      HSTAR(E,B)=B**.4*((1.25*FUN(-E/40)+.18)) ! Doesn't work.
C     HSTAR(X,Y)=Y**.4*((1.25*FUN(-X/40)+.18)) ! Works.
      A = 1.
      H = HSTAR(E(I-1), A)
      END

troutmask:kargl[207] ftnchek n.f

FTNCHEK Version 3.3 November 2004

File n.f:
 0 syntax errors detected in file n.f
No main program found
Warning: Subprogram FUN never defined
    Invoked in module PHTOD line 3 file n.f
    (possibly it is an array which was not declared)
troutmask:kargl[208] gfc -c n.f
n.f:1.24:

      SUBROUTINE PHTOD(E,N,I,H)                                         
                       1
Error: Argument 'e' of statement function at (1) must be scalar

If the reference to FUN in statement function is changed to an
elemental function, then one gets an additional error.  Changing
FUN to SIN yields

troutmask:kargl[210] gfc -c n.f
n.f:1.24:

      SUBROUTINE PHTOD(E,N,I,H)                                         
                       1
Error: Argument 'e' of statement function at (1) must be scalar
n.f:3.11:

      HSTAR(E,B)=B**.4*((1.25*SIN(-E/40)+.18)) ! Doesn't work.          
          1
Error: Incompatible ranks 0 and 1 in assignment at (1)

Because statement functions are obselscent in Fortran 95, this should be
considered a very low priority bug.


-- 
           Summary: scope of variables in statement function do not acquire
                    rank from host
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: kargl at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35299

Reply via email to