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
文字列を保持する 文字型変数の種別型パラメタ