@@ -11,7 +11,7 @@ pure module function to_string_r_sp(value, format) result(string)
11
11
real (sp), intent (in ) :: value
12
12
character (len=* ), intent (in ), optional :: format
13
13
character (len= :), allocatable :: string
14
-
14
+
15
15
character (len= buffer_len) :: buffer
16
16
integer :: stat
17
17
@@ -28,7 +28,7 @@ pure module function to_string_r_dp(value, format) result(string)
28
28
real (dp), intent (in ) :: value
29
29
character (len=* ), intent (in ), optional :: format
30
30
character (len= :), allocatable :: string
31
-
31
+
32
32
character (len= buffer_len) :: buffer
33
33
integer :: stat
34
34
@@ -64,30 +64,31 @@ end function to_string_c_dp
64
64
65
65
! > Represent an integer of kind int8 as character sequence.
66
66
pure module function to_string_1_i_int8(value) result(string)
67
- integer (int8), intent (in ) :: value
67
+ integer , parameter :: ik = int8
68
+ integer (ik), intent (in ) :: value
68
69
character (len= :), allocatable :: string
69
70
integer , parameter :: buffer_len = range (value)+ 2
70
71
character (len= buffer_len) :: buffer
71
72
integer :: pos
72
- integer (int8 ) :: n
73
- character (len= 1 ), parameter :: numbers(0 : 9 ) = &
74
- [" 0 " , " 1 " , " 2 " , " 3 " , " 4 " , " 5 " , " 6 " , " 7 " , " 8 " , " 9 " ]
73
+ integer (ik ) :: n
74
+ character (len= 1 ), parameter :: numbers(- 9 : 0 ) = &
75
+ [" 9 " , " 8 " , " 7 " , " 6 " , " 5 " , " 4 " , " 3 " , " 2 " , " 1 " , " 0 " ]
75
76
76
- if (value == 0_int8 ) then
77
+ if (value == 0_ik ) then
77
78
string = numbers(0 )
78
79
return
79
80
end if
80
81
81
- n = abs (value)
82
+ n = sign (value, - 1_ik )
82
83
buffer = " "
83
-
84
84
pos = buffer_len + 1
85
- do while (n > 0_int8 )
85
+ do while (n < 0_ik )
86
86
pos = pos - 1
87
- buffer(pos:pos) = numbers(mod (n, 10_int8 ))
88
- n = n/ 10_int8
87
+ buffer(pos:pos) = numbers(mod (n, 10_ik ))
88
+ n = n/ 10_ik
89
89
end do
90
- if (value < 0_int8 ) then
90
+
91
+ if (value < 0_ik ) then
91
92
pos = pos - 1
92
93
buffer(pos:pos) = ' -'
93
94
end if
@@ -99,7 +100,7 @@ pure module function to_string_2_i_int8(value, format) result(string)
99
100
integer (int8), intent (in ) :: value
100
101
character (len=* ), intent (in ) :: format
101
102
character (len= :), allocatable :: string
102
-
103
+
103
104
character (len= buffer_len) :: buffer
104
105
integer :: stat
105
106
@@ -113,30 +114,31 @@ pure module function to_string_2_i_int8(value, format) result(string)
113
114
end function to_string_2_i_int8
114
115
! > Represent an integer of kind int16 as character sequence.
115
116
pure module function to_string_1_i_int16(value) result(string)
116
- integer (int16), intent (in ) :: value
117
+ integer , parameter :: ik = int16
118
+ integer (ik), intent (in ) :: value
117
119
character (len= :), allocatable :: string
118
120
integer , parameter :: buffer_len = range (value)+ 2
119
121
character (len= buffer_len) :: buffer
120
122
integer :: pos
121
- integer (int16 ) :: n
122
- character (len= 1 ), parameter :: numbers(0 : 9 ) = &
123
- [" 0 " , " 1 " , " 2 " , " 3 " , " 4 " , " 5 " , " 6 " , " 7 " , " 8 " , " 9 " ]
123
+ integer (ik ) :: n
124
+ character (len= 1 ), parameter :: numbers(- 9 : 0 ) = &
125
+ [" 9 " , " 8 " , " 7 " , " 6 " , " 5 " , " 4 " , " 3 " , " 2 " , " 1 " , " 0 " ]
124
126
125
- if (value == 0_int16 ) then
127
+ if (value == 0_ik ) then
126
128
string = numbers(0 )
127
129
return
128
130
end if
129
131
130
- n = abs (value)
132
+ n = sign (value, - 1_ik )
131
133
buffer = " "
132
-
133
134
pos = buffer_len + 1
134
- do while (n > 0_int16 )
135
+ do while (n < 0_ik )
135
136
pos = pos - 1
136
- buffer(pos:pos) = numbers(mod (n, 10_int16 ))
137
- n = n/ 10_int16
137
+ buffer(pos:pos) = numbers(mod (n, 10_ik ))
138
+ n = n/ 10_ik
138
139
end do
139
- if (value < 0_int16 ) then
140
+
141
+ if (value < 0_ik ) then
140
142
pos = pos - 1
141
143
buffer(pos:pos) = ' -'
142
144
end if
@@ -148,7 +150,7 @@ pure module function to_string_2_i_int16(value, format) result(string)
148
150
integer (int16), intent (in ) :: value
149
151
character (len=* ), intent (in ) :: format
150
152
character (len= :), allocatable :: string
151
-
153
+
152
154
character (len= buffer_len) :: buffer
153
155
integer :: stat
154
156
@@ -162,30 +164,31 @@ pure module function to_string_2_i_int16(value, format) result(string)
162
164
end function to_string_2_i_int16
163
165
! > Represent an integer of kind int32 as character sequence.
164
166
pure module function to_string_1_i_int32(value) result(string)
165
- integer (int32), intent (in ) :: value
167
+ integer , parameter :: ik = int32
168
+ integer (ik), intent (in ) :: value
166
169
character (len= :), allocatable :: string
167
170
integer , parameter :: buffer_len = range (value)+ 2
168
171
character (len= buffer_len) :: buffer
169
172
integer :: pos
170
- integer (int32 ) :: n
171
- character (len= 1 ), parameter :: numbers(0 : 9 ) = &
172
- [" 0 " , " 1 " , " 2 " , " 3 " , " 4 " , " 5 " , " 6 " , " 7 " , " 8 " , " 9 " ]
173
+ integer (ik ) :: n
174
+ character (len= 1 ), parameter :: numbers(- 9 : 0 ) = &
175
+ [" 9 " , " 8 " , " 7 " , " 6 " , " 5 " , " 4 " , " 3 " , " 2 " , " 1 " , " 0 " ]
173
176
174
- if (value == 0_int32 ) then
177
+ if (value == 0_ik ) then
175
178
string = numbers(0 )
176
179
return
177
180
end if
178
181
179
- n = abs (value)
182
+ n = sign (value, - 1_ik )
180
183
buffer = " "
181
-
182
184
pos = buffer_len + 1
183
- do while (n > 0_int32 )
185
+ do while (n < 0_ik )
184
186
pos = pos - 1
185
- buffer(pos:pos) = numbers(mod (n, 10_int32 ))
186
- n = n/ 10_int32
187
+ buffer(pos:pos) = numbers(mod (n, 10_ik ))
188
+ n = n/ 10_ik
187
189
end do
188
- if (value < 0_int32 ) then
190
+
191
+ if (value < 0_ik ) then
189
192
pos = pos - 1
190
193
buffer(pos:pos) = ' -'
191
194
end if
@@ -197,7 +200,7 @@ pure module function to_string_2_i_int32(value, format) result(string)
197
200
integer (int32), intent (in ) :: value
198
201
character (len=* ), intent (in ) :: format
199
202
character (len= :), allocatable :: string
200
-
203
+
201
204
character (len= buffer_len) :: buffer
202
205
integer :: stat
203
206
@@ -211,30 +214,31 @@ pure module function to_string_2_i_int32(value, format) result(string)
211
214
end function to_string_2_i_int32
212
215
! > Represent an integer of kind int64 as character sequence.
213
216
pure module function to_string_1_i_int64(value) result(string)
214
- integer (int64), intent (in ) :: value
217
+ integer , parameter :: ik = int64
218
+ integer (ik), intent (in ) :: value
215
219
character (len= :), allocatable :: string
216
220
integer , parameter :: buffer_len = range (value)+ 2
217
221
character (len= buffer_len) :: buffer
218
222
integer :: pos
219
- integer (int64 ) :: n
220
- character (len= 1 ), parameter :: numbers(0 : 9 ) = &
221
- [" 0 " , " 1 " , " 2 " , " 3 " , " 4 " , " 5 " , " 6 " , " 7 " , " 8 " , " 9 " ]
223
+ integer (ik ) :: n
224
+ character (len= 1 ), parameter :: numbers(- 9 : 0 ) = &
225
+ [" 9 " , " 8 " , " 7 " , " 6 " , " 5 " , " 4 " , " 3 " , " 2 " , " 1 " , " 0 " ]
222
226
223
- if (value == 0_int64 ) then
227
+ if (value == 0_ik ) then
224
228
string = numbers(0 )
225
229
return
226
230
end if
227
231
228
- n = abs (value)
232
+ n = sign (value, - 1_ik )
229
233
buffer = " "
230
-
231
234
pos = buffer_len + 1
232
- do while (n > 0_int64 )
235
+ do while (n < 0_ik )
233
236
pos = pos - 1
234
- buffer(pos:pos) = numbers(mod (n, 10_int64 ))
235
- n = n/ 10_int64
237
+ buffer(pos:pos) = numbers(mod (n, 10_ik ))
238
+ n = n/ 10_ik
236
239
end do
237
- if (value < 0_int64 ) then
240
+
241
+ if (value < 0_ik ) then
238
242
pos = pos - 1
239
243
buffer(pos:pos) = ' -'
240
244
end if
@@ -246,7 +250,7 @@ pure module function to_string_2_i_int64(value, format) result(string)
246
250
integer (int64), intent (in ) :: value
247
251
character (len=* ), intent (in ) :: format
248
252
character (len= :), allocatable :: string
249
-
253
+
250
254
character (len= buffer_len) :: buffer
251
255
integer :: stat
252
256
@@ -272,7 +276,7 @@ pure module function to_string_2_l_lk(value, format) result(string)
272
276
logical (lk), intent (in ) :: value
273
277
character (len=* ), intent (in ) :: format
274
278
character (len= :), allocatable :: string
275
-
279
+
276
280
character (len= buffer_len) :: buffer
277
281
integer :: stat
278
282
@@ -297,7 +301,7 @@ pure module function to_string_2_l_c_bool(value, format) result(string)
297
301
logical (c_bool), intent (in ) :: value
298
302
character (len=* ), intent (in ) :: format
299
303
character (len= :), allocatable :: string
300
-
304
+
301
305
character (len= buffer_len) :: buffer
302
306
integer :: stat
303
307
0 commit comments