Fortran3
Revision as of 12:43, 21 July 2009 by GethinWilliams (talk | contribs) (Protected "Fortran3" [edit=sysop:move=sysop])
Fortran3: Getting the most from 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