Peter, At 15:33 04-05-2000 +0200, you wrote: >Dear Jan, > >Thank you very much for your help. > > > In this case an explicit interface is needed. > > And I think that You must use assumed shape . > > I append the programme as it works correctly. > > Hope this helps. > >The program you sent compiled and run correctly. >However, the solution was even simplier: instead of > REAL, INTENT(IN) :: x(*) >I should have typed > REAL, INTENT(IN) :: x(:) > >The x(:) tells the compiler to pass the length information, hidden from the >user. It is equivalent to ^^^^^^^^^^ more or less equivalent IF the interface is explicit. >FUNCTION text(x, n) > INTEGER:: n > REAL, INTENT (IN):: x(1:n) > >The use of the star descriptor, x(*), is to tell the compiler that it *does >not >know* what the upper bound is. My Fortran 77 manual referred to this as 'the >compiler assumes that the upper bound is infinite.' > >So my real problem remains absolutely unsolved: how do you know how many >elements an assumed-size array has? I do not want to pass the dimension by >the calling program. This is not possible. Use assumed shape indeed. And - to be standard conforming - use an explicit interface in the calling program. Otherwise the shape information is NOT transmitted. I tried two compilers. One gives 0 (zero), the other 4189523 as result :-) .. >If you know a solution to that, I would be very happy to hear about it. >Best regards, >Peter de Haan --- Meilleures Salutations, Best Greetings, /--- Jan van Oosterwijk Computing Centre Delft University of Technology Postbus 354 2600 AJ Delft Netherlands / Pays-Bas Phone: +31 15 278 50 17 Fax: +31 15 278 37 87 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%