Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!ns-mx!l_eld01.icaen.uiowa.edu From: jlhaferman@l_eld01.icaen.uiowa.edu (Jeff Haferman) Newsgroups: comp.lang.fortran Subject: Help with variable scoping Message-ID: <4212@ns-mx.uiowa.edu> Date: 29 Jan 91 23:17:30 GMT Sender: news@ns-mx.uiowa.edu Lines: 39 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 * 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