> Thanks for the replys to my previous mail. One advice was to introduce the > PRIVATE statement inside the B module. This seems to be a quite sensible > thing to do. But the following example, compiled with Visual Fortran 5.0, > seems to show that this doesn't work. > > output from the program: > > a= 1234 > b= 6912 > > ------------------------------------------------------------------------------- > > The behaviour I would expect was that the variable a would not be recognized > and that a compilation error would result. Digital Fortran 90 for OpenVMS Alpha gives the `expected' behaviour: $ TYPE TEST.F90 module amod implicit none private integer, public :: a public :: inita contains subroutine inita a = 1234 end subroutine inita end module amod module bmod use amod implicit none private integer, public :: b public :: initb contains subroutine initb call inita b = a+5678 end subroutine initb end module bmod program testmod use bmod implicit none call initb write (*,*) 'a=', a write (*,*) 'b=', b end program testmod $ ON ERROR THEN GOTO OK $ F90 TEST write (*,*) 'a=', a ..................^ %F90-E-ERROR, This name does not have a type, and must have an explicit type. [A] at line number 30 in file DISK$SCRATCH:[HELBIG]TEST.F90;1 $ OK: $ SET NOVERIFY So does Digital UNIX: fire.palmod.uni-bremen.de> cat > dec f90 test.f90 ./a.out fire.palmod.uni-bremen.de> source dec f90: Error: test.f90, line 30: This name does not have a type, and must have an] write (*,*) 'a=', a ------------------^ ./a.out: Command not found. fire.palmod.uni-bremen.de> So does IBM's xlf90: geo> cat > aix xlf90 test.f ./a.out geo> source aix ** amod === End of Compilation 1 === ** bmod === End of Compilation 2 === "test.f", 1516-036 (S) Variable a has undefined type. ** testmod === End of Compilation 3 === 1501-511 Compilation failed for file test.f. ./a.out: Command not found. geo> So does the SUN f90 compiler: ceres_67_% source sun write (*,*) 'a=', a ^ cf90-113 f90comp: ERROR TESTMOD, File = test.f90, Line = 30, Column = 19 IMPLICIT NONE is specified in the local scope, therefore an explicit type must be specified for data object "A". f90: SunSoft F90 Version 1.0.1.0 (16039279) Tue Dec 9, 1997 08:41:43 f90: COMPILE TIME 0.190000 SECONDS f90: MAXIMUM FIELD LENGTH 2929214 DECIMAL WORDS f90: 34 SOURCE LINES f90: 1 ERRORS, 0 WARNINGS, 0 OTHER MESSAGES, 0 ANSI f90: CODE: 41 WORDS, DATA: 4 WORDS ./a.out: Command not found. ceres_68_% > My understanding from the F90 documentation I have read so far is that > the PRIVATE statement in the bmod module concerns all enteties > accessible in the bmod module, and this includes the variable a and the > subroutine inita from the amod module. Is my understanding of this > wrong? I also asked about this yesterday, if this fix (using PRIVATE) is guaranteed to work in a platform-independent way. I'm sure we'll see some replies from the experts today. -- 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. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%