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