@@ -13,7 +13,7 @@ contains
13
13
${t1}$, intent(in) :: value
14
14
character(len=*), intent(in), optional :: format
15
15
character(len=:), allocatable :: string
16
-
16
+
17
17
character(len=buffer_len) :: buffer
18
18
integer :: stat
19
19
@@ -43,30 +43,31 @@ contains
43
43
#:for k1, t1 in INT_KINDS_TYPES
44
44
!> Represent an integer of kind ${k1}$ as character sequence.
45
45
pure module function to_string_1_${t1[0]}$_${k1}$(value) result(string)
46
- ${t1}$, intent(in) :: value
46
+ integer, parameter :: ik = ${k1}$
47
+ integer(ik), intent(in) :: value
47
48
character(len=:), allocatable :: string
48
49
integer, parameter :: buffer_len = range(value)+2
49
50
character(len=buffer_len) :: buffer
50
51
integer :: pos
51
- ${t1}$ :: n
52
- character(len=1), parameter :: numbers(0:9 ) = &
53
- ["0 ", "1 ", "2 ", "3 ", "4 ", "5 ", "6 ", "7 ", "8 ", "9 "]
52
+ integer(ik) :: n
53
+ character(len=1), parameter :: numbers(-9:0 ) = &
54
+ ["9 ", "8 ", "7 ", "6 ", "5 ", "4 ", "3 ", "2 ", "1 ", "0 "]
54
55
55
- if (value == 0_${k1}$ ) then
56
+ if (value == 0_ik ) then
56
57
string = numbers(0)
57
58
return
58
59
end if
59
60
60
- n = abs (value)
61
+ n = sign (value, -1_ik )
61
62
buffer = ""
62
-
63
63
pos = buffer_len + 1
64
- do while (n > 0_${k1}$ )
64
+ do while (n < 0_ik )
65
65
pos = pos - 1
66
- buffer(pos:pos) = numbers(mod(n, 10_${k1}$ ))
67
- n = n/10_${k1}$
66
+ buffer(pos:pos) = numbers(mod(n, 10_ik ))
67
+ n = n/10_ik
68
68
end do
69
- if (value < 0_${k1}$) then
69
+
70
+ if (value < 0_ik) then
70
71
pos = pos - 1
71
72
buffer(pos:pos) = '-'
72
73
end if
@@ -78,7 +79,7 @@ contains
78
79
${t1}$, intent(in) :: value
79
80
character(len=*), intent(in) :: format
80
81
character(len=:), allocatable :: string
81
-
82
+
82
83
character(len=buffer_len) :: buffer
83
84
integer :: stat
84
85
@@ -106,7 +107,7 @@ contains
106
107
${t1}$, intent(in) :: value
107
108
character(len=*), intent(in) :: format
108
109
character(len=:), allocatable :: string
109
-
110
+
110
111
character(len=buffer_len) :: buffer
111
112
integer :: stat
112
113
0 commit comments