Fortran3

Fortran3: Object Oriented Fortran

=Introduction=

Only a few of the features of Fortran2003 are supported in gfortran version 4.3, which is the most recent version available on Ubuntu as of July 2009. gfortran-4.4 will support features such as the encapsulation of methods in user-derived types.

=Encapsulation=

module type_stuff

implicit none

!! private?

integer, parameter :: maxstr = 50

type station real                 :: frequency   ! MHz character(len=maxstr) :: name       ! str contains procedure :: init => init_station procedure :: str => str_station end type station contains subroutine init_station(user_type, freq, stat_name)

implicit none !! dummy args type(station),        intent(out :: user_type    real,                  intent(in) :: freq    character(len=maxstr), intent(in) :: stat_name

user_type%frequency = freq user_type%name     = stat_name end subroutine init_station

subroutine str_station(user_type)

implicit none

!! dummy args type station, intent(in) :: user_type

write(6,*) "station name: ", user_type%name write(6,*) "frequency is: ", user_type%frequency

end subroutine str_station end module type_stuff

! program encapsulation

!  use type_suff

!  implicit none

!  type(station) :: radio2

!  radio2%init(89.9,"radio 2") !  radio2%str

! end program encapsulation