143 module procedure uchar 147 module procedure lchar 173 function dcstringcprintf(fmt, i, r, d, L, n, c1, c2, c3, ca)
result(result)
175 character(len = STRING):: result
176 character(*),
intent(in):: fmt
177 integer,
intent(in),
optional:: i(:), n(:)
178 real,
intent(in),
optional:: r(:)
179 real(DP),
intent(in),
optional:: d(:)
180 logical,
intent(in),
optional:: L(:)
181 character(*),
intent(in),
optional:: c1, c2, c3
182 character(*),
intent(in),
optional:: ca(:)
187 subroutine dcstringsprintf(unit, fmt, i, r, d, L, n, c1, c2, c3, ca)
189 character(*),
intent(out):: unit
190 character(*),
intent(in):: fmt
191 integer,
intent(in),
optional:: i(:), n(:)
192 real,
intent(in),
optional:: r(:)
193 real(DP),
intent(in),
optional:: d(:)
194 logical,
intent(in),
optional:: L(:)
195 character(*),
intent(in),
optional:: c1, c2, c3
196 character(*),
intent(in),
optional:: ca(:)
199 subroutine dcstringfprintf(unit, fmt, i, r, d, L, n, c1, c2, c3, ca)
201 integer,
intent(in),
optional:: unit
202 character(*),
intent(in):: fmt
203 integer,
intent(in),
optional:: i(:), n(:)
204 real,
intent(in),
optional:: r(:)
205 real(DP),
intent(in),
optional:: d(:)
206 logical,
intent(in),
optional:: L(:)
207 character(*),
intent(in),
optional:: c1, c2, c3
208 character(*),
intent(in),
optional:: ca(:)
216 subroutine putlineint1( array, lbounds, ubounds, unit, indent, sd )
217 integer,
intent(in):: array(:)
218 integer,
intent(in),
optional:: lbounds(1)
219 integer,
intent(in),
optional:: ubounds(1)
220 integer,
intent(in),
optional:: unit
221 character(*),
intent(in),
optional:: indent
222 logical,
intent(in),
optional:: sd
224 subroutine putlineint2( array, lbounds, ubounds, unit, indent, sd )
225 integer,
intent(in):: array(:,:)
226 integer,
intent(in),
optional:: lbounds(2)
227 integer,
intent(in),
optional:: ubounds(2)
228 integer,
intent(in),
optional:: unit
229 character(*),
intent(in),
optional:: indent
230 logical,
intent(in),
optional:: sd
232 subroutine putlineint3( array, lbounds, ubounds, unit, indent, sd )
233 integer,
intent(in):: array(:,:,:)
234 integer,
intent(in),
optional:: lbounds(3)
235 integer,
intent(in),
optional:: ubounds(3)
236 integer,
intent(in),
optional:: unit
237 character(*),
intent(in),
optional:: indent
238 logical,
intent(in),
optional:: sd
240 subroutine putlineint4( array, lbounds, ubounds, unit, indent, sd )
241 integer,
intent(in):: array(:,:,:,:)
242 integer,
intent(in),
optional:: lbounds(4)
243 integer,
intent(in),
optional:: ubounds(4)
244 integer,
intent(in),
optional:: unit
245 character(*),
intent(in),
optional:: indent
246 logical,
intent(in),
optional:: sd
248 subroutine putlineint5( array, lbounds, ubounds, unit, indent, sd )
249 integer,
intent(in):: array(:,:,:,:,:)
250 integer,
intent(in),
optional:: lbounds(5)
251 integer,
intent(in),
optional:: ubounds(5)
252 integer,
intent(in),
optional:: unit
253 character(*),
intent(in),
optional:: indent
254 logical,
intent(in),
optional:: sd
256 subroutine putlineint6( array, lbounds, ubounds, unit, indent, sd )
257 integer,
intent(in):: array(:,:,:,:,:,:)
258 integer,
intent(in),
optional:: lbounds(6)
259 integer,
intent(in),
optional:: ubounds(6)
260 integer,
intent(in),
optional:: unit
261 character(*),
intent(in),
optional:: indent
262 logical,
intent(in),
optional:: sd
264 subroutine putlineint7( array, lbounds, ubounds, unit, indent, sd )
265 integer,
intent(in):: array(:,:,:,:,:,:,:)
266 integer,
intent(in),
optional:: lbounds(7)
267 integer,
intent(in),
optional:: ubounds(7)
268 integer,
intent(in),
optional:: unit
269 character(*),
intent(in),
optional:: indent
270 logical,
intent(in),
optional:: sd
272 subroutine putlinereal1( array, lbounds, ubounds, unit, indent, sd )
274 real(SP),
intent(in):: array(:)
275 integer,
intent(in),
optional:: lbounds(1)
276 integer,
intent(in),
optional:: ubounds(1)
277 integer,
intent(in),
optional:: unit
278 character(*),
intent(in),
optional:: indent
279 logical,
intent(in),
optional:: sd
281 subroutine putlinereal2( array, lbounds, ubounds, unit, indent, sd )
283 real(SP),
intent(in):: array(:,:)
284 integer,
intent(in),
optional:: lbounds(2)
285 integer,
intent(in),
optional:: ubounds(2)
286 integer,
intent(in),
optional:: unit
287 character(*),
intent(in),
optional:: indent
288 logical,
intent(in),
optional:: sd
290 subroutine putlinereal3( array, lbounds, ubounds, unit, indent, sd )
292 real(SP),
intent(in):: array(:,:,:)
293 integer,
intent(in),
optional:: lbounds(3)
294 integer,
intent(in),
optional:: ubounds(3)
295 integer,
intent(in),
optional:: unit
296 character(*),
intent(in),
optional:: indent
297 logical,
intent(in),
optional:: sd
299 subroutine putlinereal4( array, lbounds, ubounds, unit, indent, sd )
301 real(SP),
intent(in):: array(:,:,:,:)
302 integer,
intent(in),
optional:: lbounds(4)
303 integer,
intent(in),
optional:: ubounds(4)
304 integer,
intent(in),
optional:: unit
305 character(*),
intent(in),
optional:: indent
306 logical,
intent(in),
optional:: sd
308 subroutine putlinereal5( array, lbounds, ubounds, unit, indent, sd )
310 real(SP),
intent(in):: array(:,:,:,:,:)
311 integer,
intent(in),
optional:: lbounds(5)
312 integer,
intent(in),
optional:: ubounds(5)
313 integer,
intent(in),
optional:: unit
314 character(*),
intent(in),
optional:: indent
315 logical,
intent(in),
optional:: sd
317 subroutine putlinereal6( array, lbounds, ubounds, unit, indent, sd )
319 real(SP),
intent(in):: array(:,:,:,:,:,:)
320 integer,
intent(in),
optional:: lbounds(6)
321 integer,
intent(in),
optional:: ubounds(6)
322 integer,
intent(in),
optional:: unit
323 character(*),
intent(in),
optional:: indent
324 logical,
intent(in),
optional:: sd
326 subroutine putlinereal7( array, lbounds, ubounds, unit, indent, sd )
328 real(SP),
intent(in):: array(:,:,:,:,:,:,:)
329 integer,
intent(in),
optional:: lbounds(7)
330 integer,
intent(in),
optional:: ubounds(7)
331 integer,
intent(in),
optional:: unit
332 character(*),
intent(in),
optional:: indent
333 logical,
intent(in),
optional:: sd
335 subroutine putlinedouble1( array, lbounds, ubounds, unit, indent, sd )
337 real(DP),
intent(in):: array(:)
338 integer,
intent(in),
optional:: lbounds(1)
339 integer,
intent(in),
optional:: ubounds(1)
340 integer,
intent(in),
optional:: unit
341 character(*),
intent(in),
optional:: indent
342 logical,
intent(in),
optional:: sd
344 subroutine putlinedouble2( array, lbounds, ubounds, unit, indent, sd )
346 real(DP),
intent(in):: array(:,:)
347 integer,
intent(in),
optional:: lbounds(2)
348 integer,
intent(in),
optional:: ubounds(2)
349 integer,
intent(in),
optional:: unit
350 character(*),
intent(in),
optional:: indent
351 logical,
intent(in),
optional:: sd
353 subroutine putlinedouble3( array, lbounds, ubounds, unit, indent, sd )
355 real(DP),
intent(in):: array(:,:,:)
356 integer,
intent(in),
optional:: lbounds(3)
357 integer,
intent(in),
optional:: ubounds(3)
358 integer,
intent(in),
optional:: unit
359 character(*),
intent(in),
optional:: indent
360 logical,
intent(in),
optional:: sd
362 subroutine putlinedouble4( array, lbounds, ubounds, unit, indent, sd )
364 real(DP),
intent(in):: array(:,:,:,:)
365 integer,
intent(in),
optional:: lbounds(4)
366 integer,
intent(in),
optional:: ubounds(4)
367 integer,
intent(in),
optional:: unit
368 character(*),
intent(in),
optional:: indent
369 logical,
intent(in),
optional:: sd
371 subroutine putlinedouble5( array, lbounds, ubounds, unit, indent, sd )
373 real(DP),
intent(in):: array(:,:,:,:,:)
374 integer,
intent(in),
optional:: lbounds(5)
375 integer,
intent(in),
optional:: ubounds(5)
376 integer,
intent(in),
optional:: unit
377 character(*),
intent(in),
optional:: indent
378 logical,
intent(in),
optional:: sd
380 subroutine putlinedouble6( array, lbounds, ubounds, unit, indent, sd )
382 real(DP),
intent(in):: array(:,:,:,:,:,:)
383 integer,
intent(in),
optional:: lbounds(6)
384 integer,
intent(in),
optional:: ubounds(6)
385 integer,
intent(in),
optional:: unit
386 character(*),
intent(in),
optional:: indent
387 logical,
intent(in),
optional:: sd
389 subroutine putlinedouble7( array, lbounds, ubounds, unit, indent, sd )
391 real(DP),
intent(in):: array(:,:,:,:,:,:,:)
392 integer,
intent(in),
optional:: lbounds(7)
393 integer,
intent(in),
optional:: ubounds(7)
394 integer,
intent(in),
optional:: unit
395 character(*),
intent(in),
optional:: indent
396 logical,
intent(in),
optional:: sd
401 logical function strhead_cc(whole, head)
result(result)
408 character(len = *),
intent(in):: whole
409 character(len = *),
intent(in):: head
413 result = (len(whole) >= len(head))
414 if (.not. result)
return 415 result = (whole(1:len(head)) == head)
419 logical function strieq_cc(string_a, string_b)
result(result)
433 character(len = *),
intent(in):: string_a
434 character(len = *),
intent(in):: string_b
435 character(len = STRING):: abuf
436 character(len = STRING):: bbuf
441 result = (abuf == bbuf)
445 & carray, string, ignore_space, ignore_case )
result(result)
467 character(*),
intent(in):: carray(:)
468 character(*),
intent(in):: string
469 logical,
intent(in),
optional:: ignore_space
470 logical,
intent(in),
optional:: ignore_case
471 integer:: array_size, i
472 logical:: ignore_space_work, ignore_case_work
476 ignore_space_work = .true.
477 if (
present(ignore_space) )
then 478 if ( .not. ignore_space )
then 479 ignore_space_work = .false.
483 ignore_case_work = .false.
484 if (
present(ignore_case) )
then 485 if ( ignore_case )
then 486 ignore_case_work = .true.
490 array_size =
size(carray)
492 if ( ignore_space_work )
then 493 if ( ignore_case_work )
then 495 &
strieq_cc( trim( adjustl( carray(i) ) ), &
496 & trim( adjustl( string ) ) )
499 & ( trim( adjustl( carray(i) ) ) == trim( adjustl( string ) ) )
503 if ( ignore_case_work )
then 505 &
strieq_cc( trim( carray(i) ), trim( string ) )
507 result = ( trim(carray(i)) == trim(string) )
514 logical function str2bool(string)
result(result)
521 character(len = *),
intent(in):: string
526 case (
"",
"0",
"0.0",
"0.0D0",
"0.0d0",
".false.",
".FALSE.", &
527 &
"f",
"F",
"false",
"FALSE")
534 integer function atoi_scalar(string, default)
result(result)
540 character(len = *),
intent(in):: string
541 integer,
intent(in),
optional:: default
546 read(unit=string, fmt=
"(i80)", iostat=ios) result
548 if (
present(default))
then 556 real(DP) function atod_scalar(string_in)
result(result)
562 character(len = *),
intent(in):: string_in
564 character(len = STRING):: buffer
565 integer:: ipoint, iexp
572 if (index(buffer,
'.') == 0)
then 573 iexp = scan(buffer,
"eEdD")
575 buffer(iexp+1: len(buffer)) = buffer(iexp: len(buffer)-1)
578 ipoint = len_trim(buffer) + 1
580 buffer(ipoint: ipoint) =
'.' 582 read(unit=buffer, fmt=
"(g80.10)", iostat=ios) result
583 if (ios /= 0) result = 0.0
586 subroutine str2ip(int_ptr, string_in)
595 integer,
pointer:: int_ptr(:)
596 character(len = *),
intent(in):: string_in
597 integer:: i, j, idx, nvalues
602 idx = index(string_in(i: ),
',')
605 nvalues = nvalues + 1
607 allocate(int_ptr(nvalues))
611 idx = index(string_in(i: ),
',')
613 int_ptr(j) =
stoi(string_in(i: ))
616 int_ptr(j) =
stod(string_in(i: i+idx-2))
622 subroutine str2rp(real_ptr, string_in)
631 real,
pointer:: real_ptr(:)
632 character(len = *),
intent(in):: string_in
633 integer:: i, j, idx, nvalues
638 idx = index(string_in(i: ),
',')
641 nvalues = nvalues + 1
643 allocate(real_ptr(nvalues))
647 idx = index(string_in(i: ),
',')
649 real_ptr(j) =
stod(string_in(i: ))
652 real_ptr(j) =
stod(string_in(i: i+idx-2))
658 subroutine str2dp(real_ptr, string_in)
667 real(DP),
pointer:: real_ptr(:)
668 character(len = *),
intent(in):: string_in
669 integer:: i, j, idx, nvalues
674 idx = index(string_in(i: ),
',')
677 nvalues = nvalues + 1
679 allocate(real_ptr(nvalues))
683 idx = index(string_in(i: ),
',')
685 real_ptr(j) =
stod(string_in(i: ))
688 real_ptr(j) =
stod(string_in(i: i+idx-2))
698 character(TOKEN) function itoa_scalar(i)
result(result)
704 integer,
intent(in):: i
705 character(len = 32):: buffer
707 write(unit=buffer, fmt=
"(i20)") i
708 result = adjustl(buffer)
711 character(STRING) function itoa_array(ibuf)
result(result)
717 integer,
intent(in):: ibuf(:)
720 if (
size(ibuf) <= 0)
then 725 do, i = 2,
size(ibuf)
726 result = trim(result) //
", " // trim(
tochar(ibuf(i)))
730 character(TOKEN) function rtoa_scalar(x)
result(result)
737 character(len = 16):: buffer, expbuf
740 write(unit=buffer, fmt=
"(g16.8)") x
741 eptr = scan(buffer,
"eE", back=.true.)
744 expbuf = buffer(eptr: )
748 ptr = verify(buffer,
" 0", back=.true.)
749 if (ptr > 0) buffer(ptr+1: ) =
" " 752 buffer = buffer(1:len_trim(buffer)) // expbuf
754 result = adjustl(buffer)
757 character(STRING) function rtoa_array(rbuf)
result(result)
763 real,
intent(in):: rbuf(:)
766 if (
size(rbuf) <= 0)
then 771 do, i = 2,
size(rbuf)
772 result = trim(result) //
", " // trim(
tochar(rbuf(i)))
776 character(TOKEN) function dtoa_scalar(d)
result(result)
782 real(DP),
intent(in):: d
783 character(len = 32):: buffer, expbuf
786 write(unit=buffer, fmt=
"(g32.24)") d
787 eptr = scan(buffer,
"eE", back=.true.)
790 expbuf = buffer(eptr: )
794 ptr = verify(buffer,
" 0", back=.true.)
795 if (ptr > 0) buffer(ptr+1: ) =
" " 798 buffer = buffer(1:len_trim(buffer)) // expbuf
800 result = adjustl(buffer)
803 character(STRING) function dtoa_array(dbuf)
result(result)
809 real(DP),
intent(in):: dbuf(:)
812 if (
size(dbuf) <= 0)
then 817 do, i = 2,
size(dbuf)
818 result = trim(result) //
", " // trim(
tochar(dbuf(i)))
822 character(TOKEN) function ltoa_scalar(l)
result(result)
828 logical,
intent(in):: l
837 character(STRING) function ltoa_array(lbuf)
result(result)
843 logical,
intent(in):: lbuf(:)
846 if (
size(lbuf) <= 0)
then 851 do, i = 2,
size(lbuf)
852 result = trim(result) //
", " // trim(
tochar(lbuf(i)))
860 character(STRING) function joinchar(carray, expr)
result(result)
867 character(*) ,
intent(in) :: carray(:)
868 character(*) ,
intent(in),
optional :: expr
870 character(2) ,
parameter :: default =
', ' 871 character(STRING) :: delimiter
874 if (
present(expr) )
then 879 dellen = len(default)
881 if (
size(carray) <= 0)
then 885 result = trim(carray(1))
886 do, i = 2,
size(carray)
887 result = trim(result) // delimiter(1:dellen) // trim(carray(i))
902 character(*),
intent(in) :: carray(:)
903 character(*),
intent(in) :: str
904 character(STRING),
pointer:: result(:)
905 integer :: i, size_carray
907 size_carray =
size(carray)
908 allocate(result(size_carray))
910 do i = 1, size_carray
911 result(i) = trim(carray(i)) // str
922 character(*),
intent(in) :: c1
923 character(STRING) :: result(1)
935 character(*),
intent(in) :: c1,c2
936 character(STRING) :: result(2)
949 character(*),
intent(in) :: c1,c2,c3
950 character(STRING) :: result(3)
964 character(*),
intent(in) :: c1,c2,c3,c4
965 character(STRING) :: result(4)
980 character(*),
intent(in) :: c1,c2,c3,c4,c5
981 character(STRING) :: result(5)
997 character(*),
intent(in) :: c1,c2,c3,c4,c5,c6
998 character(STRING) :: result(6)
1015 character(*),
intent(in) :: c1,c2,c3,c4,c5,c6,c7
1016 character(STRING) :: result(7)
1028 function str_to_array8(c1,c2,c3,c4,c5,c6,c7,c8)
result(result)
1034 character(*),
intent(in) :: c1,c2,c3,c4,c5,c6,c7,c8
1035 character(STRING) :: result(8)
1048 function str_to_array9(c1,c2,c3,c4,c5,c6,c7,c8,c9)
result(result)
1054 character(*),
intent(in) :: c1,c2,c3,c4,c5,c6,c7,c8,c9
1055 character(STRING) :: result(9)
1069 function str_to_array10(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10)
result(result)
1075 character(*),
intent(in) :: c1,c2,c3,c4,c5,c6,c7,c8,c9,c10
1076 character(STRING) :: result(10)
1091 function str_to_array11(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11)
result(result)
1097 character(*),
intent(in) :: c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11
1098 character(STRING) :: result(11)
1114 function str_to_array12(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12)
result(result)
1120 character(*),
intent(in) :: c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12
1121 character(STRING) :: result(12)
1142 subroutine split_cc(str, carray, sep, limit)
1156 character(*),
intent(in):: str
1157 character(*),
pointer:: carray(:)
1158 character(*),
intent(in):: sep
1159 integer,
intent(in),
optional:: limit
1160 integer :: num, cur, i, limitnum
1161 character(STRING) :: substr
1164 if (
present(limit))
then 1174 if (len(trim(sep)) == 0)
then 1180 cur = index(trim(substr),
' ')
1183 substr = adjustl(substr(cur + len(sep) :len(substr)))
1186 if (limitnum /= 0 .and. num > limitnum) num = limitnum
1187 allocate(carray(num))
1192 cur = index(trim(substr),
' ')
1193 if (cur == 0 .or. i == num) end_flag = .true.
1198 carray(i) = substr(1:cur - 1)
1200 substr = adjustl(substr(cur + len(sep) :len(substr)))
1209 cur = index(substr, trim(sep))
1212 substr = substr(cur + len(sep) :len(substr))
1215 if (limitnum /= 0 .and. num > limitnum) num = limitnum
1216 allocate(carray(num))
1221 cur = index(substr, trim(sep))
1222 if (cur == 0 .or. i == num) end_flag = .true.
1227 carray(i) = substr(1:cur - 1)
1229 substr = substr(cur + len(sep) :len(substr))
1242 integer function index_ofs(string, start, substr)
result(result)
1249 character(len = *),
intent(in):: string
1250 integer,
intent(in):: start
1251 character(len = *),
intent(in):: substr
1257 result = index(string(start: ), substr)
1258 if (result == 0)
return 1259 result = start + result - 1
1263 & string, from, to, recursive, start_pos )
result(result)
1292 character(STRLEN):: result
1293 character(*),
intent(in):: string, from, to
1294 logical,
intent(in),
optional:: recursive
1295 integer,
intent(in),
optional:: start_pos
1297 integer:: i, isa, isb, iea, ieb
1300 if (
present(start_pos) )
then 1310 i = index(result(sp:), from)
1315 if (len(to) < len(from))
then 1317 ieb = len(result) + len(to) - len(from)
1319 iea = len(result) + len(from) - len(to)
1322 if (len(to) /= len(from)) result(isb:ieb) = result(isa:iea)
1323 result(i:i+len(to)-1) = to
1328 ir = index(result(i+len(to):), from)
1329 if ( len_trim(from) == 0 )
then 1330 ir = index(trim(result(i+len(to):)), from)
1333 if (
present(
recursive) )
then 1334 if (
recursive )
then 1335 result =
replace( string = result, &
1336 & from = from, to = to, &
1337 &
recursive =
recursive, &
1338 & start_pos = i+len(to) )
1355 character(len = *),
intent(inout):: ch
1356 integer:: i, lch, idx
1360 idx = ichar(ch(i:i))
1361 if (97 <= idx .and. idx <= 122)
then 1362 ch(i:i)=char(idx - 32)
1373 character(len = *),
intent(inout):: ch
1374 integer:: i, lch, idx
1378 idx = ichar(ch(i:i))
1379 if (65 <= idx .and. idx <= 90)
then 1380 ch(i:i)=char(idx + 32)
1385 character(STRING) function uchar(ch)
result(result)
1390 character(len = *),
intent(in):: ch
1396 character(STRING) function lchar(ch)
result(result)
1401 character(len = *),
intent(in):: ch
1407 character(STRING) function roundnum(num)
result(result)
1412 character(*),
intent(in):: num
1413 character(STRING):: nrv, enrv
1414 integer:: i, moving_up, nrvi, dig, zero_stream
1419 if ( scan(
'.', trim(num) ) == 0 )
then 1429 i = scan(nrv,
"eE", back=.true.)
1433 elseif ( i == 1 )
then 1442 if ( index( trim( nrv ),
'.') - len_trim( nrv ) < -7 )
then 1443 do while ( index(
'567890.', nrv(len_trim(nrv):len_trim(nrv)) ) == 0 )
1444 if ( len_trim(nrv) < 2 )
exit 1445 nrv = nrv(1:len_trim(nrv)-1)
1453 if ( index( trim( nrv ),
'.') - len_trim( nrv ) < -7 )
then 1454 dig = index( trim( nrv ),
'.') + 1
1456 do while ( dig < len_trim( nrv ) )
1457 if ( nrv(dig:dig) ==
"0" )
then 1458 zero_stream = zero_stream + 1
1462 if ( zero_stream > 7 )
then 1463 nrv(dig:len_trim(nrv)) =
'0' 1474 if ( index( trim( nrv ),
'.') /= 0 )
then 1475 do while ( index(
'123456789.', nrv(len_trim(nrv):len_trim(nrv)) ) == 0 )
1476 if ( len_trim(nrv) < 2 )
exit 1477 nrv = nrv(1:len_trim(nrv)-1)
1486 if ( index( trim( nrv ),
'.') - len_trim( nrv ) < -7 )
then 1487 do while ( index(
'12345690.', nrv(len_trim(nrv):len_trim(nrv)) ) == 0 )
1488 if ( len_trim(nrv) < 2 )
exit 1489 nrv = nrv(1:len_trim(nrv)-1)
1498 if ( moving_up > 0 )
then 1499 do while ( index(
'012345678.', nrv(len_trim(nrv):len_trim(nrv)) ) == 0 )
1500 if ( len_trim(nrv) < 2 )
exit 1501 nrv = nrv(1:len_trim(nrv)-1)
1506 do while ( moving_up > 0 .and. i > 0 )
1507 if ( index(
'.', nrv(i:i)) /= 0 )
then 1511 nrvi =
stoi( nrv(i:i) ) + moving_up
1513 if ( nrvi < 10 )
then 1514 nrv(i:i) = trim(
tochar( nrvi ) )
1526 if ( len_trim(nrv) < 2 )
exit 1527 nrv = nrv(1:len_trim(nrv)-1)
1534 if ( index( trim( nrv ),
'.') /= 0 )
then 1535 do while ( index(
'123456789.', nrv(len_trim(nrv):len_trim(nrv)) ) == 0 )
1536 if ( len_trim(nrv) < 2 )
exit 1537 nrv = nrv(1:len_trim(nrv)-1)
1544 if ( len_trim(enrv) > 0 )
then 1545 nrv = trim(nrv) // enrv
character(string) function rtoa_array(rbuf)
character(string) function, dimension(9) str_to_array9(c1, c2, c3, c4, c5, c6, c7, c8, c9)
character(token) function rtoa_scalar(x)
character(string) function, dimension(2) str_to_array2(c1, c2)
character(string) function, dimension(4) str_to_array4(c1, c2, c3, c4)
subroutine putlinereal3(array, lbounds, ubounds, unit, indent, sd)
character(string) function, dimension(7) str_to_array7(c1, c2, c3, c4, c5, c6, c7)
subroutine putlinedouble2(array, lbounds, ubounds, unit, indent, sd)
real(dp) function atod_scalar(string_in)
character(string) function ltoa_array(lbuf)
integer, parameter, public token
単語やキーワードを保持する文字型変数の種別型パラメタ
logical function str_include_ac(carray, string, ignore_space, ignore_case)
subroutine putlinereal1(array, lbounds, ubounds, unit, indent, sd)
subroutine dcstringsprintf(unit, fmt, i, r, d, L, n, c1, c2, c3, ca)
subroutine putlinereal5(array, lbounds, ubounds, unit, indent, sd)
subroutine putlinereal2(array, lbounds, ubounds, unit, indent, sd)
character(string) function itoa_array(ibuf)
subroutine putlineint4(array, lbounds, ubounds, unit, indent, sd)
character(token) function ltoa_scalar(l)
character(token) function itoa_scalar(i)
character(string) function, dimension(10) str_to_array10(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10)
subroutine str2ip(int_ptr, string_in)
subroutine putlineint3(array, lbounds, ubounds, unit, indent, sd)
character(string) function, public joinchar(carray, expr)
subroutine str2rp(real_ptr, string_in)
subroutine split_cc(str, carray, sep, limit)
character(string) function, dimension(1) str_to_array1(c1)
subroutine putlineint7(array, lbounds, ubounds, unit, indent, sd)
character(string) function, dimension(8) str_to_array8(c1, c2, c3, c4, c5, c6, c7, c8)
integer, parameter, public dp
倍精度実数型変数
subroutine concat_tail(carray, str, result)
character(string) function, dimension(11) str_to_array11(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11)
character(string) function, dimension(5) str_to_array5(c1, c2, c3, c4, c5)
subroutine putlinereal4(array, lbounds, ubounds, unit, indent, sd)
character(string) function, dimension(12) str_to_array12(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12)
character(string) function, dimension(6) str_to_array6(c1, c2, c3, c4, c5, c6)
subroutine dcstringfprintf(unit, fmt, i, r, d, L, n, c1, c2, c3, ca)
subroutine putlinedouble1(array, lbounds, ubounds, unit, indent, sd)
subroutine putlinedouble3(array, lbounds, ubounds, unit, indent, sd)
logical function strieq_cc(string_a, string_b)
subroutine putlinedouble5(array, lbounds, ubounds, unit, indent, sd)
integer, parameter, public sp
単精度実数型変数
subroutine putlinedouble4(array, lbounds, ubounds, unit, indent, sd)
subroutine putlineint6(array, lbounds, ubounds, unit, indent, sd)
subroutine putlinereal6(array, lbounds, ubounds, unit, indent, sd)
character(string) function, dimension(3) str_to_array3(c1, c2, c3)
logical function strhead_cc(whole, head)
logical function str2bool(string)
subroutine putlineint1(array, lbounds, ubounds, unit, indent, sd)
subroutine putlineint5(array, lbounds, ubounds, unit, indent, sd)
character(string) function dtoa_array(dbuf)
subroutine putlineint2(array, lbounds, ubounds, unit, indent, sd)
subroutine putlinereal7(array, lbounds, ubounds, unit, indent, sd)
character(token) function dtoa_scalar(d)
character(len=string) function dcstringcprintf(fmt, i, r, d, L, n, c1, c2, c3, ca)
subroutine putlinedouble7(array, lbounds, ubounds, unit, indent, sd)
integer function atoi_scalar(string, default)
subroutine putlinedouble6(array, lbounds, ubounds, unit, indent, sd)
subroutine str2dp(real_ptr, string_in)
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ