[comp.lang.fortran] Help with variable scoping

jlhaferman@l_eld01.icaen.uiowa.edu (Jeff Haferman) (01/30/91)

I would like to pass an array via a subroutine call, 
i.e. DIMENSION A(N)          
     CALL SUB1(A,N)         (this stuff is in module 1)

and from that subroutine, have an auxiliary subroutine
which operates on that array -without- having to pass the
array in the call.
      SUBROUTINE SUB1(A,N)    (defined in module 2)
c this sub doesn't use A, but FCN does.
      DIMENSION A(N)
      EXTERNAL FCN                 
      SUM =  INTEGRAL(X1,X2,FCN)    
C
      REAL FUNCTION INTEGRAL(X1,X2,FCN)      (defined in module 3)
C      SUM FCN(X) FROM X = X1 to X = X2

      REAL FUNCTION FCN(X)            (defined in module 2)
        FCN = X * <some element of A>
        

However, FCN does not know about A.  I could make A part of a common
block in module 1, but that is not an elegant solution from my point of
view, because I don't want to include a module 1 common block in
module 2.

Also, the definition of INTEGRAL is fixed (cannot change).

Is this explanation clear?  How can I solve this problem?  Sorry
if it is trivial, but I am not a power-fortran programmer.





Jeff Haferman                            internet: jlhaferman@icaen.uiowa.edu
Department of Mechanical Engineering     DoD 0186  BMWMOA 44469  AMA 460140
University of Iowa
Iowa City IA  52242