Dear All,
trying to code something like this (for a large code with
a large number of possible options):
MODULE Mopt
IMPLICIT NONE
PRIVATE
INTERFACE OPERATOR( .EQV. )
MODULE PROCEDURE String_eq_Opt
END INTERFACE
TYPE, PUBLIC :: Option
PRIVATE
Character(Len=3) :: Sym
Character(Len=20):: Text
END TYPE Option
! and more private stuff
CONTAINS
LOGICAL FUNCTION String_eq_Option( String, Opt )
TYPE(Option), INTENT(IN) :: Opt
Character(Len=*), INTENT(IN) :: String
String_eq_Option = ( String == Opt%Sym )
END FUNCTION String_eq_Option
! etc.
END MODULE Mopt
could somebody tell me how I make the .EQV. operator PUBLIC without
removing the global PRIVATE statement?
Can I replace .EQV. with ==? My DEC compiler complains at any attempt.
My F90 books are rather silent on this.
If my DEC compiler is ok, then it seems to me that a syntax like
INTERFACE, PUBLIC :: OPERATOR(==) is very useful. Or even getting rid
of INTERFACE altogether and writing
LOGICAL, PUBLIC, FUNCTION :: "=="( String, Opt )
or
LOGICAL, PUBLIC, OPERATOR :: "=="( String, Opt )
(an operator is always a function)
or ...
Thanks,
WWS
-----------------------------------------------------------------------
| Werner W Schulz |
| Dept of Chemistry email: [log in to unmask] |
| University of Cambridge Phone: (+44) (0)1223 336 502 |
| Lensfield Road Secretary: 1223 336 338 |
| Cambridge CB2 1EW Fax: 1223 336 536 |
| United Kingdom WWW: |
-----------------------------------------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|