112 module procedure atoi_scalar
115 module procedure ator_scalar
118 module procedure atod_scalar
121 module procedure str2ip
122 module procedure str2rp
123 module procedure str2dp
126 module procedure str2bool
131 module procedure itoa_scalar
132 module procedure itoa_array
133 module procedure rtoa_scalar
134 module procedure rtoa_array
135 module procedure dtoa_scalar
136 module procedure dtoa_array
137 module procedure ltoa_scalar
138 module procedure ltoa_array
150 module procedure concat_tail
155 module procedure str_to_array1
156 module procedure str_to_array2
157 module procedure str_to_array3
158 module procedure str_to_array4
159 module procedure str_to_array5
160 module procedure str_to_array6
161 module procedure str_to_array7
162 module procedure str_to_array8
163 module procedure str_to_array9
164 module procedure str_to_array10
165 module procedure str_to_array11
166 module procedure str_to_array12
171 module procedure split_cc
184 module procedure cupper
187 module procedure clower
190 module procedure uchar
193 module procedure lchar
196 module procedure strieq_cc
199 module procedure strhead_cc
202 module procedure str_include_ac
214 function dcstringcprintf(fmt, i, r, d, L, n, c1, c2, c3, ca, maxlen)
result(result)
216 character(len = STRING):: result
217 character(*),
intent(in):: fmt
218 integer,
intent(in),
optional:: i(:), n(:)
219 real(
sp),
intent(in),
optional:: r(:)
220 real(
dp),
intent(in),
optional:: d(:)
221 logical,
intent(in),
optional:: l(:)
222 character(*),
intent(in),
optional:: c1, c2, c3
223 character(*),
intent(in),
optional:: ca(:)
224 integer,
intent(in),
optional:: maxlen
228 function dcstringcprintft(fmt, i, r, d, L, n, c1, c2, c3, ca, maxlen)
result(result)
230 character(len = TOKEN):: result
231 character(*),
intent(in):: fmt
232 integer,
intent(in),
optional:: i(:), n(:)
233 real(
sp),
intent(in),
optional:: r(:)
234 real(
dp),
intent(in),
optional:: d(:)
235 logical,
intent(in),
optional:: l(:)
236 character(*),
intent(in),
optional:: c1, c2, c3
237 character(*),
intent(in),
optional:: ca(:)
238 integer,
intent(in),
optional:: maxlen
242 subroutine dcstringsprintf(unit, fmt, i, r, d, L, n, c1, c2, c3, ca)
244 character(*),
intent(out):: unit
245 character(*),
intent(in):: fmt
246 integer,
intent(in),
optional:: i(:), n(:)
247 real(SP),
intent(in),
optional:: r(:)
248 real(DP),
intent(in),
optional:: d(:)
249 logical,
intent(in),
optional:: L(:)
250 character(*),
intent(in),
optional:: c1, c2, c3
251 character(*),
intent(in),
optional:: ca(:)
253 subroutine dcstringfprintf(unit, fmt, i, r, d, L, n, c1, c2, c3, ca)
255 integer,
intent(in),
optional:: unit
256 character(*),
intent(in):: fmt
257 integer,
intent(in),
optional:: i(:), n(:)
258 real,
intent(in),
optional:: r(:)
259 real(DP),
intent(in),
optional:: d(:)
260 logical,
intent(in),
optional:: L(:)
261 character(*),
intent(in),
optional:: c1, c2, c3
262 character(*),
intent(in),
optional:: ca(:)
268 subroutine putlineint1( array, lbounds, ubounds, unit, indent, sd )
269 integer,
intent(in):: array(:)
270 integer,
intent(in),
optional:: lbounds(1)
271 integer,
intent(in),
optional:: ubounds(1)
272 integer,
intent(in),
optional:: unit
273 character(*),
intent(in),
optional:: indent
274 logical,
intent(in),
optional:: sd
276 subroutine putlineint2( array, lbounds, ubounds, unit, indent, sd )
277 integer,
intent(in):: array(:,:)
278 integer,
intent(in),
optional:: lbounds(2)
279 integer,
intent(in),
optional:: ubounds(2)
280 integer,
intent(in),
optional:: unit
281 character(*),
intent(in),
optional:: indent
282 logical,
intent(in),
optional:: sd
284 subroutine putlineint3( array, lbounds, ubounds, unit, indent, sd )
285 integer,
intent(in):: array(:,:,:)
286 integer,
intent(in),
optional:: lbounds(3)
287 integer,
intent(in),
optional:: ubounds(3)
288 integer,
intent(in),
optional:: unit
289 character(*),
intent(in),
optional:: indent
290 logical,
intent(in),
optional:: sd
292 subroutine putlineint4( array, lbounds, ubounds, unit, indent, sd )
293 integer,
intent(in):: array(:,:,:,:)
294 integer,
intent(in),
optional:: lbounds(4)
295 integer,
intent(in),
optional:: ubounds(4)
296 integer,
intent(in),
optional:: unit
297 character(*),
intent(in),
optional:: indent
298 logical,
intent(in),
optional:: sd
300 subroutine putlineint5( array, lbounds, ubounds, unit, indent, sd )
301 integer,
intent(in):: array(:,:,:,:,:)
302 integer,
intent(in),
optional:: lbounds(5)
303 integer,
intent(in),
optional:: ubounds(5)
304 integer,
intent(in),
optional:: unit
305 character(*),
intent(in),
optional:: indent
306 logical,
intent(in),
optional:: sd
308 subroutine putlineint6( array, lbounds, ubounds, unit, indent, sd )
309 integer,
intent(in):: array(:,:,:,:,:,:)
310 integer,
intent(in),
optional:: lbounds(6)
311 integer,
intent(in),
optional:: ubounds(6)
312 integer,
intent(in),
optional:: unit
313 character(*),
intent(in),
optional:: indent
314 logical,
intent(in),
optional:: sd
316 subroutine putlineint7( array, lbounds, ubounds, unit, indent, sd )
317 integer,
intent(in):: array(:,:,:,:,:,:,:)
318 integer,
intent(in),
optional:: lbounds(7)
319 integer,
intent(in),
optional:: ubounds(7)
320 integer,
intent(in),
optional:: unit
321 character(*),
intent(in),
optional:: indent
322 logical,
intent(in),
optional:: sd
326 real(SP),
intent(in):: array(:)
327 integer,
intent(in),
optional:: lbounds(1)
328 integer,
intent(in),
optional:: ubounds(1)
329 integer,
intent(in),
optional:: unit
330 character(*),
intent(in),
optional:: indent
331 logical,
intent(in),
optional:: sd
335 real(SP),
intent(in):: array(:,:)
336 integer,
intent(in),
optional:: lbounds(2)
337 integer,
intent(in),
optional:: ubounds(2)
338 integer,
intent(in),
optional:: unit
339 character(*),
intent(in),
optional:: indent
340 logical,
intent(in),
optional:: sd
344 real(SP),
intent(in):: array(:,:,:)
345 integer,
intent(in),
optional:: lbounds(3)
346 integer,
intent(in),
optional:: ubounds(3)
347 integer,
intent(in),
optional:: unit
348 character(*),
intent(in),
optional:: indent
349 logical,
intent(in),
optional:: sd
353 real(SP),
intent(in):: array(:,:,:,:)
354 integer,
intent(in),
optional:: lbounds(4)
355 integer,
intent(in),
optional:: ubounds(4)
356 integer,
intent(in),
optional:: unit
357 character(*),
intent(in),
optional:: indent
358 logical,
intent(in),
optional:: sd
362 real(SP),
intent(in):: array(:,:,:,:,:)
363 integer,
intent(in),
optional:: lbounds(5)
364 integer,
intent(in),
optional:: ubounds(5)
365 integer,
intent(in),
optional:: unit
366 character(*),
intent(in),
optional:: indent
367 logical,
intent(in),
optional:: sd
371 real(SP),
intent(in):: array(:,:,:,:,:,:)
372 integer,
intent(in),
optional:: lbounds(6)
373 integer,
intent(in),
optional:: ubounds(6)
374 integer,
intent(in),
optional:: unit
375 character(*),
intent(in),
optional:: indent
376 logical,
intent(in),
optional:: sd
380 real(SP),
intent(in):: array(:,:,:,:,:,:,:)
381 integer,
intent(in),
optional:: lbounds(7)
382 integer,
intent(in),
optional:: ubounds(7)
383 integer,
intent(in),
optional:: unit
384 character(*),
intent(in),
optional:: indent
385 logical,
intent(in),
optional:: sd
389 real(DP),
intent(in):: array(:)
390 integer,
intent(in),
optional:: lbounds(1)
391 integer,
intent(in),
optional:: ubounds(1)
392 integer,
intent(in),
optional:: unit
393 character(*),
intent(in),
optional:: indent
394 logical,
intent(in),
optional:: sd
398 real(DP),
intent(in):: array(:,:)
399 integer,
intent(in),
optional:: lbounds(2)
400 integer,
intent(in),
optional:: ubounds(2)
401 integer,
intent(in),
optional:: unit
402 character(*),
intent(in),
optional:: indent
403 logical,
intent(in),
optional:: sd
407 real(DP),
intent(in):: array(:,:,:)
408 integer,
intent(in),
optional:: lbounds(3)
409 integer,
intent(in),
optional:: ubounds(3)
410 integer,
intent(in),
optional:: unit
411 character(*),
intent(in),
optional:: indent
412 logical,
intent(in),
optional:: sd
416 real(DP),
intent(in):: array(:,:,:,:)
417 integer,
intent(in),
optional:: lbounds(4)
418 integer,
intent(in),
optional:: ubounds(4)
419 integer,
intent(in),
optional:: unit
420 character(*),
intent(in),
optional:: indent
421 logical,
intent(in),
optional:: sd
425 real(DP),
intent(in):: array(:,:,:,:,:)
426 integer,
intent(in),
optional:: lbounds(5)
427 integer,
intent(in),
optional:: ubounds(5)
428 integer,
intent(in),
optional:: unit
429 character(*),
intent(in),
optional:: indent
430 logical,
intent(in),
optional:: sd
434 real(DP),
intent(in):: array(:,:,:,:,:,:)
435 integer,
intent(in),
optional:: lbounds(6)
436 integer,
intent(in),
optional:: ubounds(6)
437 integer,
intent(in),
optional:: unit
438 character(*),
intent(in),
optional:: indent
439 logical,
intent(in),
optional:: sd
443 real(DP),
intent(in):: array(:,:,:,:,:,:,:)
444 integer,
intent(in),
optional:: lbounds(7)
445 integer,
intent(in),
optional:: ubounds(7)
446 integer,
intent(in),
optional:: unit
447 character(*),
intent(in),
optional:: indent
448 logical,
intent(in),
optional:: sd
474 logical function strhead_cc(whole, head)
result(result)
475 character(len = *),
intent(in):: whole
476 character(len = *),
intent(in):: head
478 result = (len(whole) >= len(head))
479 if (.not. result)
return
480 result = (whole(1:len(head)) == head)
481 end function strhead_cc
502 logical function strieq_cc(string_a, string_b)
result(result)
510 character(len = *),
intent(in):: string_a
511 character(len = *),
intent(in):: string_b
512 character(len = STRING):: abuf
513 character(len = STRING):: bbuf
518 result = (abuf == bbuf)
519 end function strieq_cc
550 logical function str_include_ac( &
551 & carray, string, ignore_space, ignore_case )
result(result)
552 character(*),
intent(in):: carray(:)
553 character(*),
intent(in):: string
554 logical,
intent(in),
optional:: ignore_space
555 logical,
intent(in),
optional:: ignore_case
556 integer:: array_size, i
557 logical:: ignore_space_work, ignore_case_work
559 ignore_space_work = .true.
560 if (
present(ignore_space) )
then
561 if ( .not. ignore_space )
then
562 ignore_space_work = .false.
565 ignore_case_work = .false.
566 if (
present(ignore_case) )
then
567 if ( ignore_case )
then
568 ignore_case_work = .true.
571 array_size =
size(carray)
573 if ( ignore_space_work )
then
574 if ( ignore_case_work )
then
576 & strieq_cc( trim( adjustl( carray(i) ) ), &
577 & trim( adjustl( string ) ) )
580 & ( trim( adjustl( carray(i) ) ) == trim( adjustl( string ) ) )
583 if ( ignore_case_work )
then
585 & strieq_cc( trim( carray(i) ), trim( string ) )
587 result = ( trim(carray(i)) == trim(string) )
592 end function str_include_ac
614 logical function str2bool(string)
result(result)
615 character(len = *),
intent(in):: string
618 case (
"",
"0",
"0.0",
"0.0D0",
"0.0d0",
".false.",
".FALSE.", &
619 &
"f",
"F",
"false",
"FALSE")
624 end function str2bool
645 integer function atoi_scalar(string, default)
result(result)
646 character(len = *),
intent(in):: string
647 integer,
intent(in),
optional:: default
650 read(unit=string, fmt=
"(i80)", iostat=ios) result
652 if (
present(default))
then
658 end function atoi_scalar
676 real(sp) function ator_scalar(string_in) result(result)
678 character(len = *),
intent(in):: string_in
680 character(len = STRING):: buffer
681 integer:: ipoint, iexp
686 if (index(buffer,
'.') == 0)
then
687 iexp = scan(buffer,
"eEdD")
689 buffer(iexp+1: len(buffer)) = buffer(iexp: len(buffer)-1)
692 ipoint = len_trim(buffer) + 1
694 buffer(ipoint: ipoint) =
'.'
696 read(unit=buffer, fmt=
"(g80.10)", iostat=ios) result
697 if (ios /= 0) result = 0.0
698 end function ator_scalar
716 real(dp) function atod_scalar(string_in) result(result)
718 character(len = *),
intent(in):: string_in
720 character(len = STRING):: buffer
721 integer:: ipoint, iexp
726 if (index(buffer,
'.') == 0)
then
727 iexp = scan(buffer,
"eEdD")
729 buffer(iexp+1: len(buffer)) = buffer(iexp: len(buffer)-1)
732 ipoint = len_trim(buffer) + 1
734 buffer(ipoint: ipoint) =
'.'
736 read(unit=buffer, fmt=
"(g80.10)", iostat=ios) result
737 if (ios /= 0) result = 0.0
738 end function atod_scalar
760 subroutine str2ip(int_ptr, string_in)
761 integer,
pointer:: int_ptr(:)
762 character(len = *),
intent(in):: string_in
763 integer:: i, j, idx, nvalues
768 idx = index(string_in(i: ),
',')
771 nvalues = nvalues + 1
773 allocate(int_ptr(nvalues))
777 idx = index(string_in(i: ),
',')
779 int_ptr(j) =
stoi(string_in(i: ))
782 int_ptr(j) =
stoi(string_in(i: i+idx-2))
786 end subroutine str2ip
808 subroutine str2rp(real_ptr, string_in)
809 real(SP),
pointer:: real_ptr(:)
810 character(len = *),
intent(in):: string_in
811 integer:: i, j, idx, nvalues
816 idx = index(string_in(i: ),
',')
819 nvalues = nvalues + 1
821 allocate(real_ptr(nvalues))
825 idx = index(string_in(i: ),
',')
827 real_ptr(j) = stor(string_in(i: ))
830 real_ptr(j) = stor(string_in(i: i+idx-2))
834 end subroutine str2rp
856 subroutine str2dp(double_ptr, string_in)
857 real(DP),
pointer:: double_ptr(:)
858 character(len = *),
intent(in):: string_in
859 integer:: i, j, idx, nvalues
864 idx = index(string_in(i: ),
',')
867 nvalues = nvalues + 1
869 allocate(double_ptr(nvalues))
873 idx = index(string_in(i: ),
',')
875 double_ptr(j) =
stod(string_in(i: ))
878 double_ptr(j) =
stod(string_in(i: i+idx-2))
882 end subroutine str2dp
898 character(TOKEN) function itoa_scalar(i)
result(result)
899 integer,
intent(in):: i
900 character(len = 32):: buffer
902 write(unit=buffer, fmt=
"(i20)") i
903 result = adjustl(buffer)
904 end function itoa_scalar
920 character(STRING) function itoa_array(ibuf)
result(result)
921 integer,
intent(in):: ibuf(:)
924 if (
size(ibuf) <= 0)
then
929 do, i = 2,
size(ibuf)
930 result = trim(result) //
", " // trim(
tochar(ibuf(i)))
932 end function itoa_array
944 character(TOKEN) function rtoa_scalar(x)
result(result)
945 real(
sp),
intent(in):: x
946 character(len = 16):: buffer, expbuf
949 write(unit=buffer, fmt=
"(g16.8)") x
950 eptr = scan(buffer,
"eE", back=.true.)
953 expbuf = buffer(eptr: )
956 ptr = verify(buffer,
" 0", back=.true.)
957 if (ptr > 0) buffer(ptr+1: ) =
" "
959 buffer = buffer(1:len_trim(buffer)) // expbuf
961 result = adjustl(buffer)
962 end function rtoa_scalar
978 character(STRING) function rtoa_array(rbuf)
result(result)
979 real(
sp),
intent(in):: rbuf(:)
982 if (
size(rbuf) <= 0)
then
987 do, i = 2,
size(rbuf)
988 result = trim(result) //
", " // trim(
tochar(rbuf(i)))
990 end function rtoa_array
1002 character(TOKEN) function dtoa_scalar(d)
result(result)
1003 real(
dp),
intent(in):: d
1004 character(len = 32):: buffer, expbuf
1007 write(unit=buffer, fmt=
"(g32.24)") d
1008 eptr = scan(buffer,
"eE", back=.true.)
1011 expbuf = buffer(eptr: )
1012 buffer(eptr: ) =
" "
1014 ptr = verify(buffer,
" 0", back=.true.)
1015 if (ptr > 0) buffer(ptr+1: ) =
" "
1017 buffer = buffer(1:len_trim(buffer)) // expbuf
1019 result = adjustl(buffer)
1020 end function dtoa_scalar
1036 character(STRING) function dtoa_array(dbuf)
result(result)
1037 real(
dp),
intent(in):: dbuf(:)
1040 if (
size(dbuf) <= 0)
then
1045 do, i = 2,
size(dbuf)
1046 result = trim(result) //
", " // trim(
tochar(dbuf(i)))
1048 end function dtoa_array
1060 character(TOKEN) function ltoa_scalar(l)
result(result)
1061 logical,
intent(in):: l
1068 end function ltoa_scalar
1084 character(STRING) function ltoa_array(lbuf)
result(result)
1085 logical,
intent(in):: lbuf(:)
1088 if (
size(lbuf) <= 0)
then
1093 do, i = 2,
size(lbuf)
1094 result = trim(result) //
", " // trim(
tochar(lbuf(i)))
1096 end function ltoa_array
1120 character(STRING) function joinchar(carray, expr)
result(result)
1122 character(*) ,
intent(in) :: carray(:)
1123 character(*) ,
intent(in),
optional :: expr
1124 character(2) ,
parameter :: default =
', '
1125 character(STRING) :: delimiter
1126 integer :: dellen, i
1128 if (
present(expr) )
then
1133 dellen = len(default)
1135 if (
size(carray) <= 0)
then
1139 result = trim(carray(1))
1140 do, i = 2,
size(carray)
1141 result = trim(result) // delimiter(1:dellen) // trim(carray(i))
1168 subroutine concat_tail(carray, str, result)
1170 character(*),
intent(in) :: carray(:)
1171 character(*),
intent(in) :: str
1172 character(STRING),
pointer:: result(:)
1173 integer :: i, size_carray
1175 size_carray =
size(carray)
1176 allocate(result(size_carray))
1177 do i = 1, size_carray
1178 result(i) = trim(carray(i)) // str
1180 end subroutine concat_tail
1194 function str_to_array1(c1)
result(result)
1195 character(*),
intent(in) :: c1
1196 character(STRING) :: result(1)
1199 end function str_to_array1
1213 function str_to_array2(c1,c2)
result(result)
1214 character(*),
intent(in) :: c1,c2
1215 character(STRING) :: result(2)
1219 end function str_to_array2
1233 function str_to_array3(c1,c2,c3)
result(result)
1234 character(*),
intent(in) :: c1,c2,c3
1235 character(STRING) :: result(3)
1240 end function str_to_array3
1254 function str_to_array4(c1,c2,c3,c4)
result(result)
1255 character(*),
intent(in) :: c1,c2,c3,c4
1256 character(STRING) :: result(4)
1262 end function str_to_array4
1276 function str_to_array5(c1,c2,c3,c4,c5)
result(result)
1277 character(*),
intent(in) :: c1,c2,c3,c4,c5
1278 character(STRING) :: result(5)
1285 end function str_to_array5
1299 function str_to_array6(c1,c2,c3,c4,c5,c6)
result(result)
1300 character(*),
intent(in) :: c1,c2,c3,c4,c5,c6
1301 character(STRING) :: result(6)
1309 end function str_to_array6
1323 function str_to_array7(c1,c2,c3,c4,c5,c6,c7)
result(result)
1324 character(*),
intent(in) :: c1,c2,c3,c4,c5,c6,c7
1325 character(STRING) :: result(7)
1334 end function str_to_array7
1348 function str_to_array8(c1,c2,c3,c4,c5,c6,c7,c8)
result(result)
1349 character(*),
intent(in) :: c1,c2,c3,c4,c5,c6,c7,c8
1350 character(STRING) :: result(8)
1360 end function str_to_array8
1374 function str_to_array9(c1,c2,c3,c4,c5,c6,c7,c8,c9)
result(result)
1375 character(*),
intent(in) :: c1,c2,c3,c4,c5,c6,c7,c8,c9
1376 character(STRING) :: result(9)
1387 end function str_to_array9
1401 function str_to_array10(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10)
result(result)
1402 character(*),
intent(in) :: c1,c2,c3,c4,c5,c6,c7,c8,c9,c10
1403 character(STRING) :: result(10)
1415 end function str_to_array10
1429 function str_to_array11(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11)
result(result)
1430 character(*),
intent(in) :: c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11
1431 character(STRING) :: result(11)
1444 end function str_to_array11
1458 function str_to_array12(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12)
result(result)
1459 character(*),
intent(in) :: c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12
1460 character(STRING) :: result(12)
1474 end function str_to_array12
1509 subroutine split_cc(str, carray, sep, limit)
1512 character(*),
intent(in):: str
1513 character(*),
pointer:: carray(:)
1514 character(*),
intent(in):: sep
1515 integer,
intent(in),
optional:: limit
1516 integer :: num, cur, i, limitnum
1517 character(STRING) :: substr
1520 if (
present(limit))
then
1529 if (len(trim(sep)) == 0)
then
1535 cur = index(trim(substr),
' ')
1538 substr = adjustl(substr(cur + len(sep) :len(substr)))
1540 if (limitnum /= 0 .and. num > limitnum) num = limitnum
1541 allocate(carray(num))
1545 cur = index(trim(substr),
' ')
1546 if (cur == 0 .or. i == num) end_flag = .true.
1551 carray(i) = substr(1:cur - 1)
1553 substr = adjustl(substr(cur + len(sep) :len(substr)))
1561 cur = index(substr, trim(sep))
1564 substr = substr(cur + len(sep) :len(substr))
1566 if (limitnum /= 0 .and. num > limitnum) num = limitnum
1567 allocate(carray(num))
1571 cur = index(substr, trim(sep))
1572 if (cur == 0 .or. i == num) end_flag = .true.
1577 carray(i) = substr(1:cur - 1)
1579 substr = substr(cur + len(sep) :len(substr))
1583 end subroutine split_cc
1611 integer function index_ofs(string, start, substr)
result(result)
1612 character(len = *),
intent(in):: string
1613 integer,
intent(in):: start
1614 character(len = *),
intent(in):: substr
1620 result = index(string(start: ), substr)
1621 if (result == 0)
return
1622 result = start + result - 1
1659 & str, from, to, recursive, start_pos )
result(result)
1662 character(STRING):: result
1663 character(*),
intent(in):: str, from, to
1664 logical,
intent(in),
optional:: recursive
1665 integer,
intent(in),
optional:: start_pos
1667 integer:: i, isa, isb, iea, ieb
1670 if (
present(start_pos) )
then
1679 i = index(result(
sp:), from)
1684 if (len(to) < len(from))
then
1686 ieb = len(result) + len(to) - len(from)
1688 iea = len(result) + len(from) - len(to)
1691 if (len(to) /= len(from)) result(isb:ieb) = result(isa:iea)
1692 result(i:i+len(to)-1) = to
1696 ir = index(result(i+len(to):), from)
1697 if ( len_trim(from) == 0 )
then
1698 ir = index(trim(result(i+len(to):)), from)
1701 if (
present(
recursive) )
then
1702 if (
recursive )
then
1703 result =
replace( str = result, &
1704 & from = from, to = to, &
1705 &
recursive =
recursive, &
1706 & start_pos = i+len(to) )
1729 subroutine cupper(ch)
1730 character(len = *),
intent(inout):: ch
1731 integer:: i, lch, idx
1735 idx = ichar(ch(i:i))
1736 if (97 <= idx .and. idx <= 122)
then
1737 ch(i:i)=char(idx - 32)
1740 end subroutine cupper
1756 subroutine clower(ch)
1757 character(len = *),
intent(inout):: ch
1758 integer:: i, lch, idx
1762 idx = ichar(ch(i:i))
1763 if (65 <= idx .and. idx <= 90)
then
1764 ch(i:i)=char(idx + 32)
1767 end subroutine clower
1785 character(STRING) function uchar(ch)
result(result)
1786 character(len = *),
intent(in):: ch
1808 character(STRING) function lchar(ch)
result(result)
1809 character(len = *),
intent(in):: ch
1831 character(STRING) function roundnum(num)
result(result)
1832 character(*),
intent(in):: num
1833 character(STRING):: nrv, enrv
1834 integer:: i, moving_up, nrvi, dig, zero_stream
1839 if ( scan(
'.', trim(num) ) == 0 )
then
1848 i = scan(nrv,
"eE", back=.true.)
1852 elseif ( i == 1 )
then
1860 if ( index( trim( nrv ),
'.') - len_trim( nrv ) < -7 )
then
1861 do while ( index(
'567890.', nrv(len_trim(nrv):len_trim(nrv)) ) == 0 )
1862 if ( len_trim(nrv) < 2 )
exit
1863 nrv = nrv(1:len_trim(nrv)-1)
1870 if ( index( trim( nrv ),
'.') - len_trim( nrv ) < -7 )
then
1871 dig = index( trim( nrv ),
'.') + 1
1873 do while ( dig < len_trim( nrv ) )
1874 if ( nrv(dig:dig) ==
"0" )
then
1875 zero_stream = zero_stream + 1
1879 if ( zero_stream > 7 )
then
1880 nrv(dig:len_trim(nrv)) =
'0'
1890 if ( index( trim( nrv ),
'.') /= 0 )
then
1891 do while ( index(
'123456789.', nrv(len_trim(nrv):len_trim(nrv)) ) == 0 )
1892 if ( len_trim(nrv) < 2 )
exit
1893 nrv = nrv(1:len_trim(nrv)-1)
1901 if ( index( trim( nrv ),
'.') - len_trim( nrv ) < -7 )
then
1902 do while ( index(
'12345690.', nrv(len_trim(nrv):len_trim(nrv)) ) == 0 )
1903 if ( len_trim(nrv) < 2 )
exit
1904 nrv = nrv(1:len_trim(nrv)-1)
1912 if ( moving_up > 0 )
then
1913 do while ( index(
'012345678.', nrv(len_trim(nrv):len_trim(nrv)) ) == 0 )
1914 if ( len_trim(nrv) < 2 )
exit
1915 nrv = nrv(1:len_trim(nrv)-1)
1919 do while ( moving_up > 0 .and. i > 0 )
1920 if ( index(
'.', nrv(i:i)) /= 0 )
then
1924 nrvi =
stoi( nrv(i:i) ) + moving_up
1925 if ( nrvi < 10 )
then
1926 nrv(i:i) = trim(
tochar( nrvi ) )
1938 if ( len_trim(nrv) < 2 )
exit
1939 nrv = nrv(1:len_trim(nrv)-1)
1945 if ( index( trim( nrv ),
'.') /= 0 )
then
1946 do while ( index(
'123456789.', nrv(len_trim(nrv):len_trim(nrv)) ) == 0 )
1947 if ( len_trim(nrv) < 2 )
exit
1948 nrv = nrv(1:len_trim(nrv)-1)
1954 if ( len_trim(enrv) > 0 )
then
1955 nrv = trim(nrv) // enrv
character(len=string) function dcstringcprintf(fmt, i, r, d, l, n, c1, c2, c3, ca, maxlen)
書式変換出力 (関数版)
character(len=token) function dcstringcprintft(fmt, i, r, d, l, n, c1, c2, c3, ca, maxlen)
subroutine dcstringfprintf(unit, fmt, i, r, d, l, n, c1, c2, c3, ca)
書式変換出力 (装置番号版)
subroutine putlinedouble6(array, lbounds, ubounds, unit, indent, sd)
subroutine putlinereal1(array, lbounds, ubounds, unit, indent, sd)
subroutine putlinereal6(array, lbounds, ubounds, unit, indent, sd)
subroutine putlineint7(array, lbounds, ubounds, unit, indent, sd)
subroutine putlinedouble4(array, lbounds, ubounds, unit, indent, sd)
subroutine putlineint6(array, lbounds, ubounds, unit, indent, sd)
subroutine putlineint5(array, lbounds, ubounds, unit, indent, sd)
subroutine putlinedouble5(array, lbounds, ubounds, unit, indent, sd)
subroutine putlineint4(array, lbounds, ubounds, unit, indent, sd)
subroutine putlinedouble1(array, lbounds, ubounds, unit, indent, sd)
subroutine putlinereal3(array, lbounds, ubounds, unit, indent, sd)
subroutine putlinereal4(array, lbounds, ubounds, unit, indent, sd)
subroutine putlineint2(array, lbounds, ubounds, unit, indent, sd)
subroutine putlineint1(array, lbounds, ubounds, unit, indent, sd)
配列の要約印字(PutLine サブルーチン)
subroutine putlinereal7(array, lbounds, ubounds, unit, indent, sd)
subroutine putlinereal2(array, lbounds, ubounds, unit, indent, sd)
subroutine putlinedouble2(array, lbounds, ubounds, unit, indent, sd)
subroutine putlinereal5(array, lbounds, ubounds, unit, indent, sd)
subroutine putlineint3(array, lbounds, ubounds, unit, indent, sd)
subroutine putlinedouble7(array, lbounds, ubounds, unit, indent, sd)
subroutine putlinedouble3(array, lbounds, ubounds, unit, indent, sd)
subroutine dcstringsprintf(unit, fmt, i, r, d, l, n, c1, c2, c3, ca)
書式変換出力 (C の sprintf 風)
character(string) function, public joinchar(carray, expr)
integer, parameter, public sp
単精度実数型変数
integer, parameter, public token
単語やキーワードを保持する文字型変数の種別型パラメタ
integer, parameter, public dp
倍精度実数型変数
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ