File: write_19_module.f90

package info (click to toggle)
lfortran 0.61.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 61,892 kB
  • sloc: cpp: 181,767; f90: 92,175; python: 17,616; ansic: 10,170; yacc: 2,377; sh: 1,444; fortran: 892; makefile: 38; javascript: 15
file content (31 lines) | stat: -rw-r--r-- 794 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
module write_19_mod
   implicit none
   type :: t
      integer :: x = 42
   contains
      procedure, private :: write_t
      generic :: write(formatted) => write_t
   end type t
contains
   subroutine write_t(self, unit, iotype, v_list, iostat, iomsg)
      class(t), intent(in) :: self
      integer, intent(in) :: unit
      character(*), intent(in) :: iotype
      integer, intent(in) :: v_list(:)
      integer, intent(out) :: iostat
      character(*), intent(inout) :: iomsg
      if (iotype /= 'DT') error stop
      if (self%x /= 42) error stop
      iostat = 0
   end subroutine
end module

module write_19_io
   use write_19_mod, only: t
   implicit none
contains
   subroutine print_it(obj)
      class(t), intent(in) :: obj
      write(*,'(dt)') obj
   end subroutine
end module