1module xmlf90_wxml_text
2
3  implicit none
4
5!
6integer, private, parameter ::  sp = selected_real_kind(6,30)
7integer, private, parameter ::  dp = selected_real_kind(14,100)
8!
9! TODO : Add optional format parameter
10!
11
12private
13
14public :: str
15
16interface str
17   module procedure  str_integer,  str_real_dp, str_real_sp, &
18                     str_logical
19end interface
20private :: str_integer,  str_real_dp, str_real_sp, str_logical
21
22CONTAINS
23
24      function str_integer(int,format) result(s)
25      integer, intent(in)   :: int
26      character(len=*), intent(in), optional  :: format
27      character(len=100)    :: s
28
29      if (present(format)) then
30         write(s,format) int
31      else
32         write(s,"(i25)") int
33      endif
34      s = adjustl(s)
35      end function str_integer
36
37      function str_logical(log,format) result(s)
38      logical, intent(in)   :: log
39      character(len=*), intent(in), optional  :: format
40      character(len=100)    :: s
41
42      if (present(format)) then
43         write(s,format) log
44      else
45         write(s,"(l1)") log
46      endif
47      s = adjustl(s)
48      end function str_logical
49
50      function str_real_dp(x,format) result(s)
51      real(kind=dp), intent(in)   :: x
52      character(len=*), intent(in), optional  :: format
53      character(len=100)    :: s
54
55      if (present(format)) then
56         write(s,format) x
57      else
58         write(s,"(g22.12)") x
59      endif
60      s = adjustl(s)
61      end function str_real_dp
62
63      function str_real_sp(x,format) result(s)
64      real(kind=sp), intent(in)   :: x
65      character(len=*), intent(in), optional  :: format
66      character(len=100)    :: s
67
68      if (present(format)) then
69         write(s,format) x
70      else
71         write(s,"(g22.12)") x
72      endif
73      s = adjustl(s)
74      end function str_real_sp
75
76
77end module xmlf90_wxml_text
78