title: Fortran Function error about conflicting with a name in the encompassing scoping unit
body: <p>I'm new in Fortran. what's the problem with this simple code? </p>
  
  <pre><code>program combinatorial
      Implicit none
      integer :: m, n, Fact
      integer :: Com
      Write (*,*) 'inter 2 number for m and n'
      Read (*,*) m,n
      Com = Fact (m)/(Fact(n)*Fact(m-n))
  
      Contains
      integer Function Fact(t)
          Implicit none
          Integer, intent(IN) :: t
          integer :: i, Ans       
          Ans = 1
          Do i=1, t
              Ans=Ans * i
          End do
          Fact = Ans
      End Function Fact
  End program combinatorial
  </code></pre>
  
  <p>The error that i encounter is :</p>
  
  <pre><code>combinatorial.f90(10): error #6626: The name of the internal procedure conflicts with a name in the encompassing scoping unit.   [FACT]
      integer Function Fact(t)
  -------------------------^
  compilation aborted for combinatorial.f90 (code 1)
  </code></pre>