77 character(LEN=1),
dimension(:),
allocatable :: chars
82 interface assignment(=)
87 interface operator(//)
94 interface operator(==)
100 interface operator(/=)
106 interface operator(<)
112 interface operator(<=)
118 interface operator(>=)
124 interface operator(>)
163 module procedure len_ 205 module procedure trim_ 219 module procedure get_ 288 public :: assignment(=)
289 public :: operator(//)
290 public :: operator(==)
291 public :: operator(/=)
292 public :: operator(<)
293 public :: operator(<=)
294 public :: operator(>=)
295 public :: operator(>)
431 elemental function len_ (string) result (length)
438 if(
ALLOCATED(string%chars))
then 439 length =
SIZE(string%chars)
454 character(LEN=*),
intent(out) :: var
472 character(LEN=*),
intent(in) :: exp
486 elemental function op_concat_vs_vs (string_a, string_b) result (concat_string)
492 integer :: len_string_a
496 len_string_a =
len(string_a)
498 ALLOCATE(concat_string%chars(len_string_a+
len(string_b)))
502 if(len_string_a > 0)
then 504 concat_string%chars(:len_string_a) = string_a%chars
507 concat_string%chars(len_string_a+1:) = string_b%chars
517 elemental function op_concat_ch_vs (string_a, string_b) result (concat_string)
519 character(LEN=*),
intent(in) :: string_a
536 elemental function op_concat_vs_ch (string_a, string_b) result (concat_string)
539 character(LEN=*),
intent(in) :: string_b
558 integer,
intent(in) :: value
562 character(LEN=20) :: local_string
564 WRITE(local_string,
"(I12)")
value 576 elemental function op_eq_vs_vs (string_a, string_b) result (op_eq)
581 integer :: len_a, len_b, min_len
586 len_a =
len(string_a)
587 len_b =
len(string_b)
588 min_len = min(len_a, len_b)
590 if(any(string_a%chars(1:min_len)/=string_b%chars(1:min_len)))
then 595 if(any(string_a%chars(len_b+1:len_a)/=
" "))
then 599 if(any(string_b%chars(len_a+1:len_b)/=
" "))
then 612 elemental function op_eq_ch_vs (string_a, string_b) result (op_eq)
614 character(LEN=*),
intent(in) :: string_a
621 op_eq = string_a ==
char(string_b)
631 elemental function op_eq_vs_ch (string_a, string_b) result (op_eq)
634 character(LEN=*),
intent(in) :: string_b
640 op_eq =
char(string_a) == string_b
650 elemental function op_ne_vs_vs (string_a, string_b) result (op_ne)
658 op_ne =
char(string_a) /=
char(string_b)
668 elemental function op_ne_ch_vs (string_a, string_b) result (op_ne)
670 character(LEN=*),
intent(in) :: string_a
677 op_ne = string_a /=
char(string_b)
687 elemental function op_ne_vs_ch (string_a, string_b) result (op_ne)
690 character(LEN=*),
intent(in) :: string_b
696 op_ne =
char(string_a) /= string_b
706 elemental function op_lt_vs_vs (string_a, string_b) result (op_lt)
714 op_lt =
char(string_a) <
char(string_b)
724 elemental function op_lt_ch_vs (string_a, string_b) result (op_lt)
726 character(LEN=*),
intent(in) :: string_a
733 op_lt = string_a <
char(string_b)
743 elemental function op_lt_vs_ch (string_a, string_b) result (op_lt)
746 character(LEN=*),
intent(in) :: string_b
752 op_lt =
char(string_a) < string_b
762 elemental function op_le_vs_vs (string_a, string_b) result (op_le)
770 op_le =
char(string_a) <=
char(string_b)
780 elemental function op_le_ch_vs (string_a, string_b) result (op_le)
782 character(LEN=*),
intent(in) :: string_a
789 op_le = string_a <=
char(string_b)
799 elemental function op_le_vs_ch (string_a, string_b) result (op_le)
802 character(LEN=*),
intent(in) :: string_b
808 op_le =
char(string_a) <= string_b
818 elemental function op_ge_vs_vs (string_a, string_b) result (op_ge)
826 op_ge =
char(string_a) >=
char(string_b)
836 elemental function op_ge_ch_vs (string_a, string_b) result (op_ge)
838 character(LEN=*),
intent(in) :: string_a
845 op_ge = string_a >=
char(string_b)
855 elemental function op_ge_vs_ch (string_a, string_b) result (op_ge)
858 character(LEN=*),
intent(in) :: string_b
864 op_ge =
char(string_a) >= string_b
874 elemental function op_gt_vs_vs (string_a, string_b) result (op_gt)
882 op_gt =
char(string_a) >
char(string_b)
892 elemental function op_gt_ch_vs (string_a, string_b) result (op_gt)
894 character(LEN=*),
intent(in) :: string_a
901 op_gt = string_a >
char(string_b)
911 elemental function op_gt_vs_ch (string_a, string_b) result (op_gt)
914 character(LEN=*),
intent(in) :: string_b
920 op_gt =
char(string_a) > string_b
930 elemental function adjustl_ (string) result (adjustl_string)
947 elemental function adjustr_ (string) result (adjustr_string)
964 pure function char_auto (string) result (char_string)
967 character(LEN=len(string)) :: char_string
974 forall(i_char = 1:
len(string))
975 char_string(i_char:i_char) = string%chars(i_char)
986 pure function char_fixed (string, length) result (char_string)
989 integer,
intent(in) :: length
990 character(LEN=length) :: char_string
995 char_string =
char(string)
1005 pure function c_char_auto (string) result (c_char_string)
1008 character(LEN=1,KIND=C_CHAR) :: c_char_string(
len(string)+1)
1015 forall(i_char = 1:
len(string))
1016 c_char_string(i_char) = string%chars(i_char)
1018 c_char_string(
len(string)+1) = c_null_char
1028 pure function c_char_fixed (string, length) result (c_char_string)
1031 integer,
intent(in) :: length
1032 character(LEN=1,KIND=C_CHAR) :: c_char_string(length+1)
1039 forall(i_char = 1:length)
1040 c_char_string(i_char) = string%chars(i_char)
1042 c_char_string(length+1) = c_null_char
1052 elemental function iachar_ (c) result (i)
1070 elemental function ichar_ (c) result (i)
1088 elemental function index_vs_vs (string, substring, back) result (i_substring)
1092 logical,
intent(in),
optional :: back
1093 integer :: i_substring
1108 elemental function index_ch_vs (string, substring, back) result (i_substring)
1110 character(LEN=*),
intent(in) :: string
1112 logical,
intent(in),
optional :: back
1113 integer :: i_substring
1118 i_substring =
index(string,
char(substring), back)
1128 elemental function index_vs_ch (string, substring, back) result (i_substring)
1131 character(LEN=*),
intent(in) :: substring
1132 logical,
intent(in),
optional :: back
1133 integer :: i_substring
1138 i_substring =
index(
char(string), substring, back)
1148 elemental function len_trim_ (string) result (length)
1155 if(
ALLOCATED(string%chars))
then 1169 elemental function lge_vs_vs (string_a, string_b) result (comp)
1177 comp = (
char(string_a) >=
char(string_b))
1187 elemental function lge_ch_vs (string_a, string_b) result (comp)
1189 character(LEN=*),
intent(in) :: string_a
1196 comp = (string_a >=
char(string_b))
1206 elemental function lge_vs_ch (string_a, string_b) result (comp)
1209 character(LEN=*),
intent(in) :: string_b
1215 comp = (
char(string_a) >= string_b)
1225 elemental function lgt_vs_vs (string_a, string_b) result (comp)
1233 comp = (
char(string_a) >
char(string_b))
1243 elemental function lgt_ch_vs (string_a, string_b) result (comp)
1245 character(LEN=*),
intent(in) :: string_a
1252 comp = (string_a >
char(string_b))
1262 elemental function lgt_vs_ch (string_a, string_b) result (comp)
1265 character(LEN=*),
intent(in) :: string_b
1271 comp = (
char(string_a) > string_b)
1281 elemental function lle_vs_vs (string_a, string_b) result (comp)
1289 comp = (
char(string_a) <=
char(string_b))
1299 elemental function lle_ch_vs (string_a, string_b) result (comp)
1301 character(LEN=*),
intent(in) :: string_a
1308 comp = (string_a <=
char(string_b))
1318 elemental function lle_vs_ch (string_a, string_b) result (comp)
1321 character(LEN=*),
intent(in) :: string_b
1327 comp = (
char(string_a) <= string_b)
1337 elemental function llt_vs_vs (string_a, string_b) result (comp)
1345 comp = (
char(string_a) <
char(string_b))
1355 elemental function llt_ch_vs (string_a, string_b) result (comp)
1357 character(LEN=*),
intent(in) :: string_a
1364 comp = (string_a <
char(string_b))
1374 elemental function llt_vs_ch (string_a, string_b) result (comp)
1377 character(LEN=*),
intent(in) :: string_b
1383 comp = (
char(string_a) < string_b)
1393 elemental function repeat_ (string, ncopies) result (repeat_string)
1396 integer,
intent(in) :: ncopies
1411 elemental function scan_vs_vs (string, set, back) result (i)
1415 logical,
intent(in),
optional :: back
1431 elemental function scan_ch_vs (string, set, back) result (i)
1433 character(LEN=*),
intent(in) :: string
1435 logical,
intent(in),
optional :: back
1451 elemental function scan_vs_ch (string, set, back) result (i)
1454 character(LEN=*),
intent(in) :: set
1455 logical,
intent(in),
optional :: back
1471 elemental function trim_ (string) result (trim_string)
1488 elemental function verify_vs_vs (string, set, back) result (i)
1492 logical,
intent(in),
optional :: back
1508 elemental function verify_ch_vs (string, set, back) result (i)
1510 character(LEN=*),
intent(in) :: string
1512 logical,
intent(in),
optional :: back
1528 elemental function verify_vs_ch (string, set, back) result (i)
1531 character(LEN=*),
intent(in) :: set
1532 logical,
intent(in),
optional :: back
1548 elemental function var_str_ (char) result (string)
1550 character(LEN=*),
intent(in) :: char
1560 ALLOCATE(string%chars(length))
1562 forall(i = 1:length)
1563 string%chars(i) =
char(i:i)
1574 subroutine get_ (string, maxlen, iostat)
1577 integer,
intent(in),
optional :: maxlen
1578 integer,
intent(out),
optional :: iostat
1580 integer :: n_chars_remain
1581 integer :: n_chars_read
1582 character(LEN=GET_BUFFER_LEN) :: buffer
1583 integer :: local_iostat
1589 if(
PRESENT(maxlen))
then 1590 n_chars_remain = maxlen
1592 n_chars_remain = huge(1)
1597 if(n_chars_remain <= 0)
return 1601 if(
PRESENT(iostat))
then 1602 read(unit=*, fmt=
"(A)", advance=
"NO", &
1603 iostat=iostat, size=n_chars_read) buffer(:n_chars_read)
1604 if(iostat < 0)
exit read_loop
1605 if(iostat > 0)
return 1607 read(unit=*, fmt=
"(A)", advance=
"NO", &
1608 iostat=local_iostat, size=n_chars_read) buffer(:n_chars_read)
1609 if(local_iostat < 0)
exit read_loop
1612 string = string//buffer(:n_chars_read)
1613 n_chars_remain = n_chars_remain - n_chars_read
1617 string = string//buffer(:n_chars_read)
1627 subroutine get_unit (unit, string, maxlen, iostat)
1629 integer,
intent(in) :: unit
1631 integer,
intent(in),
optional :: maxlen
1632 integer,
intent(out),
optional :: iostat
1634 integer :: n_chars_remain
1635 integer :: n_chars_read
1636 character(LEN=GET_BUFFER_LEN) :: buffer
1637 integer :: local_iostat
1643 if(
PRESENT(maxlen))
then 1644 n_chars_remain = maxlen
1646 n_chars_remain = huge(1)
1651 if(n_chars_remain <= 0)
return 1655 if(
PRESENT(iostat))
then 1656 read(unit=unit, fmt=
"(A)", advance=
"NO", &
1657 iostat=iostat, size=n_chars_read) buffer(:n_chars_read)
1658 if(iostat < 0)
exit read_loop
1659 if(iostat > 0)
return 1661 read(unit=unit, fmt=
"(A)", advance=
"NO", &
1662 iostat=local_iostat, size=n_chars_read) buffer(:n_chars_read)
1663 if(local_iostat < 0)
exit read_loop
1666 string = string//buffer(:n_chars_read)
1667 n_chars_remain = n_chars_remain - n_chars_read
1671 string = string//buffer(:n_chars_read)
1681 subroutine get_set_vs (string, set, separator, maxlen, iostat)
1686 integer,
intent(in),
optional :: maxlen
1687 integer,
intent(out),
optional :: iostat
1692 call get(string,
char(set), separator, maxlen, iostat)
1702 subroutine get_set_ch (string, set, separator, maxlen, iostat)
1705 character(LEN=*),
intent(in) :: set
1707 integer,
intent(in),
optional :: maxlen
1708 integer,
intent(out),
optional :: iostat
1710 integer :: n_chars_remain
1711 character(LEN=1) :: buffer
1713 integer :: local_iostat
1720 if(
PRESENT(maxlen))
then 1721 n_chars_remain = maxlen
1723 n_chars_remain = huge(1)
1726 if(
PRESENT(separator)) separator =
"" 1730 if(n_chars_remain <= 0)
return 1732 if(
PRESENT(iostat))
then 1733 read(unit=*, fmt=
"(A1)", advance=
"NO", iostat=iostat) buffer
1734 if(iostat /= 0)
exit read_loop
1736 read(unit=*, fmt=
"(A1)", advance=
"NO", iostat=local_iostat) buffer
1737 if(local_iostat /= 0)
exit read_loop
1740 i_set =
scan(buffer, set)
1743 if(
PRESENT(separator)) separator = buffer
1747 string = string//buffer
1748 n_chars_remain = n_chars_remain - 1
1760 subroutine get_unit_set_vs (unit, string, set, separator, maxlen, iostat)
1762 integer,
intent(in) :: unit
1766 integer,
intent(in),
optional :: maxlen
1767 integer,
intent(out),
optional :: iostat
1772 call get(unit, string,
char(set), separator, maxlen, iostat)
1782 subroutine get_unit_set_ch (unit, string, set, separator, maxlen, iostat)
1784 integer,
intent(in) :: unit
1786 character(LEN=*),
intent(in) :: set
1788 integer,
intent(in),
optional :: maxlen
1789 integer,
intent(out),
optional :: iostat
1791 integer :: n_chars_remain
1792 character(LEN=1) :: buffer
1794 integer :: local_iostat
1801 if(
PRESENT(maxlen))
then 1802 n_chars_remain = maxlen
1804 n_chars_remain = huge(1)
1807 if(
PRESENT(separator)) separator =
"" 1811 if(n_chars_remain <= 0)
return 1813 if(
PRESENT(iostat))
then 1814 read(unit=unit, fmt=
"(A1)", advance=
"NO", iostat=iostat) buffer
1815 if(iostat /= 0)
exit read_loop
1817 read(unit=unit, fmt=
"(A1)", advance=
"NO", iostat=local_iostat) buffer
1818 if(local_iostat /= 0)
exit read_loop
1821 i_set =
scan(buffer, set)
1824 if(
PRESENT(separator)) separator = buffer
1828 string = string//buffer
1829 n_chars_remain = n_chars_remain - 1
1841 subroutine put_vs (string, iostat)
1844 integer,
intent(out),
optional :: iostat
1849 call put(
char(string), iostat)
1857 subroutine put_ch (string, iostat)
1859 character(LEN=*),
intent(in) :: string
1860 integer,
intent(out),
optional :: iostat
1865 if(
PRESENT(iostat))
then 1866 write(unit=*, fmt=
"(A)", advance=
"NO", iostat=iostat) string
1868 write(unit=*, fmt=
"(A)", advance=
"NO") string
1879 integer,
intent(in) :: unit
1881 integer,
intent(out),
optional :: iostat
1886 call put(unit,
char(string), iostat)
1898 integer,
intent(in) :: unit
1899 character(LEN=*),
intent(in) :: string
1900 integer,
intent(out),
optional :: iostat
1905 if(
PRESENT(iostat))
then 1906 write(unit=unit, fmt=
"(A)", advance=
"NO", iostat=iostat) string
1908 write(unit=unit, fmt=
"(A)", advance=
"NO") string
1922 integer,
intent(out),
optional :: iostat
1939 character(LEN=*),
intent(in) :: string
1940 integer,
intent(out),
optional :: iostat
1945 if(
PRESENT(iostat))
then 1946 write(unit=*, fmt=
"(A,/)", advance=
"NO", iostat=iostat) string
1948 write(unit=*, fmt=
"(A,/)", advance=
"NO") string
1961 integer,
intent(in) :: unit
1963 integer,
intent(out),
optional :: iostat
1980 integer,
intent(in) :: unit
1981 character(LEN=*),
intent(in) :: string
1982 integer,
intent(out),
optional :: iostat
1987 if(
PRESENT(iostat))
then 1988 write(unit=unit, fmt=
"(A,/)", advance=
"NO", iostat=iostat) string
1990 write(unit=unit, fmt=
"(A,/)", advance=
"NO") string
2001 elemental function extract_vs (string, start, finish) result (ext_string)
2004 integer,
intent(in),
optional :: start
2005 integer,
intent(in),
optional :: finish
2020 elemental function extract_ch (string, start, finish) result (ext_string)
2022 character(LEN=*),
intent(in) :: string
2023 integer,
intent(in),
optional :: start
2024 integer,
intent(in),
optional :: finish
2032 if(
PRESENT(start))
then 2033 start_ = max(1, start)
2038 if(
PRESENT(finish))
then 2039 finish_ = min(
len(string), finish)
2041 finish_ =
len(string)
2044 ext_string =
var_str(string(start_:finish_))
2054 elemental function insert_vs_vs (string, start, substring) result (ins_string)
2057 integer,
intent(in) :: start
2073 elemental function insert_ch_vs (string, start, substring) result (ins_string)
2075 character(LEN=*),
intent(in) :: string
2076 integer,
intent(in) :: start
2082 ins_string =
insert(string, start,
char(substring))
2092 elemental function insert_vs_ch (string, start, substring) result (ins_string)
2095 integer,
intent(in) :: start
2096 character(LEN=*),
intent(in) :: substring
2101 ins_string =
insert(
char(string), start, substring)
2111 elemental function insert_ch_ch (string, start, substring) result (ins_string)
2113 character(LEN=*),
intent(in) :: string
2114 integer,
intent(in) :: start
2115 character(LEN=*),
intent(in) :: substring
2123 start_ = max(1, min(start,
len(string)+1))
2125 ins_string =
var_str(string(:start_-1)//substring//string(start_:))
2135 elemental function remove_vs (string, start, finish) result (rem_string)
2138 integer,
intent(in),
optional :: start
2139 integer,
intent(in),
optional :: finish
2144 rem_string =
remove(
char(string), start, finish)
2154 elemental function remove_ch (string, start, finish) result (rem_string)
2156 character(LEN=*),
intent(in) :: string
2157 integer,
intent(in),
optional :: start
2158 integer,
intent(in),
optional :: finish
2166 if(
PRESENT(start))
then 2167 start_ = max(1, start)
2172 if(
PRESENT(finish))
then 2173 finish_ = min(
len(string), finish)
2175 finish_ =
len(string)
2178 if(finish_ >= start_)
then 2179 rem_string =
var_str(string(:start_-1)//string(finish_+1:))
2195 integer,
intent(in) :: start
2202 rep_string =
replace(
char(string), start, max(start, 1)+
len(substring)-1,
char(substring))
2214 character(LEN=*),
intent(in) :: string
2215 integer,
intent(in) :: start
2222 rep_string =
replace(string, start, max(start, 1)+
len(substring)-1,
char(substring))
2235 integer,
intent(in) :: start
2236 character(LEN=*),
intent(in) :: substring
2242 rep_string =
replace(
char(string), start, max(start, 1)+
len(substring)-1, substring)
2254 character(LEN=*),
intent(in) :: string
2255 integer,
intent(in) :: start
2256 character(LEN=*),
intent(in) :: substring
2262 rep_string =
replace(string, start, max(start, 1)+
len(substring)-1, substring)
2272 elemental function replace_vs_vs_fixed (string, start, finish, substring) result (rep_string)
2275 integer,
intent(in) :: start
2276 integer,
intent(in) :: finish
2295 elemental function replace_ch_vs_fixed (string, start, finish, substring) result (rep_string)
2297 character(LEN=*),
intent(in) :: string
2298 integer,
intent(in) :: start
2299 integer,
intent(in) :: finish
2306 rep_string =
replace(string, start, finish,
char(substring))
2316 elemental function replace_vs_ch_fixed (string, start, finish, substring) result (rep_string)
2319 integer,
intent(in) :: start
2320 integer,
intent(in) :: finish
2321 character(LEN=*),
intent(in) :: substring
2327 rep_string =
replace(
char(string), start, finish, substring)
2337 elemental function replace_ch_ch_fixed (string, start, finish, substring) result (rep_string)
2339 character(LEN=*),
intent(in) :: string
2340 integer,
intent(in) :: start
2341 integer,
intent(in) :: finish
2342 character(LEN=*),
intent(in) :: substring
2351 start_ = max(1, start)
2352 finish_ = min(
len(string), finish)
2354 if(finish_ < start_)
then 2355 rep_string =
insert(string, start_, substring)
2357 rep_string =
var_str(string(:start_-1)//substring//string(finish_+1:))
2373 logical,
intent(in),
optional :: every
2374 logical,
intent(in),
optional :: back
2393 character(LEN=*),
intent(in) :: string
2396 logical,
intent(in),
optional :: every
2397 logical,
intent(in),
optional :: back
2404 rep_string =
replace(string,
char(
target),
char(substring), every, back)
2417 character(LEN=*),
intent(in) :: target
2419 logical,
intent(in),
optional :: every
2420 logical,
intent(in),
optional :: back
2427 rep_string =
replace(
char(string),
target,
char(substring), every, back)
2439 character(LEN=*),
intent(in) :: string
2440 character(LEN=*),
intent(in) :: target
2442 logical,
intent(in),
optional :: every
2443 logical,
intent(in),
optional :: back
2450 rep_string =
replace(string,
target,
char(substring), every, back)
2464 character(LEN=*),
intent(in) :: substring
2465 logical,
intent(in),
optional :: every
2466 logical,
intent(in),
optional :: back
2473 rep_string =
replace(
char(string),
char(
target), substring, every, back)
2485 character(LEN=*),
intent(in) :: string
2487 character(LEN=*),
intent(in) :: substring
2488 logical,
intent(in),
optional :: every
2489 logical,
intent(in),
optional :: back
2496 rep_string =
replace(string,
char(
target), substring, every, back)
2509 character(LEN=*),
intent(in) :: target
2510 character(LEN=*),
intent(in) :: substring
2511 logical,
intent(in),
optional :: every
2512 logical,
intent(in),
optional :: back
2519 rep_string =
replace(
char(string),
target, substring, every, back)
2531 character(LEN=*),
intent(in) :: string
2532 character(LEN=*),
intent(in) :: target
2533 character(LEN=*),
intent(in) :: substring
2534 logical,
intent(in),
optional :: every
2535 logical,
intent(in),
optional :: back
2541 integer :: length_target
2550 if(
len(
target) == 0)
then 2551 if(
len(string) /= 0)
then 2554 rep_string = substring
2563 if(
PRESENT(every))
then 2569 if(
PRESENT(back))
then 2577 work_string = string
2579 length_target =
len(
target)
2583 i_target =
index(work_string,
target, back_)
2585 if(i_target == 0)
exit replace_loop
2588 rep_string = substring//
extract(work_string, start=i_target+length_target)//rep_string
2589 work_string =
extract(work_string, finish=i_target-1)
2591 rep_string = rep_string//
extract(work_string, finish=i_target-1)//substring
2592 work_string =
extract(work_string, start=i_target+length_target)
2595 if(.NOT. every_)
exit replace_loop
2600 rep_string = work_string//rep_string
2602 rep_string = rep_string//work_string
2613 elemental subroutine split_vs (string, word, set, separator, back)
2619 logical,
intent(in),
optional :: back
2623 call split_ch(string, word,
char(set), separator, back)
2633 elemental subroutine split_ch (string, word, set, separator, back)
2637 character(LEN=*),
intent(in) :: set
2639 logical,
intent(in),
optional :: back
2642 integer :: i_separator
2646 if(
PRESENT(back))
then 2652 i_separator =
scan(string, set, back_)
2654 if(i_separator /= 0)
then 2657 word =
extract(string, start=i_separator+1)
2658 if(
PRESENT(separator)) separator =
extract(string, start=i_separator, finish=i_separator)
2659 string =
extract(string, finish=i_separator-1)
2661 word =
extract(string, finish=i_separator-1)
2662 if(
PRESENT(separator)) separator =
extract(string, start=i_separator, finish=i_separator)
2663 string =
extract(string, start=i_separator+1)
2669 if(
PRESENT(separator)) separator =
"" 2682 elemental subroutine erase_ (string)
2688 if(
ALLOCATED(string%chars))
then 2689 deallocate(string%chars)
elemental logical function, private op_ge_vs_ch(string_a, string_b)
pure character(len=1, kind=c_char) function, dimension(len(string)+1), private c_char_auto(string)
elemental integer function, private scan_vs_vs(string, set, back)
elemental logical function, private op_lt_ch_vs(string_a, string_b)
elemental integer function, private verify_ch_vs(string, set, back)
elemental logical function, private op_le_vs_vs(string_a, string_b)
elemental logical function, private lgt_ch_vs(string_a, string_b)
subroutine, private put_ch(string, iostat)
elemental type(varying_string) function, private extract_ch(string, start, finish)
elemental logical function, private llt_ch_vs(string_a, string_b)
elemental type(varying_string) function, private var_str_(char)
elemental type(varying_string) function, private extract_vs(string, start, finish)
elemental type(varying_string) function, private replace_ch_vs_vs_target(string, target, substring, every, back)
pure character(len=len(string)) function, private char_auto(string)
elemental type(varying_string) function, private replace_vs_vs_auto(string, start, substring)
elemental integer function, private iachar_(c)
subroutine, private put_line_unit_vs(unit, string, iostat)
subroutine, private get_unit_set_ch(unit, string, set, separator, maxlen, iostat)
elemental integer function, private index_vs_vs(string, substring, back)
elemental integer function, private index_vs_ch(string, substring, back)
elemental type(varying_string) function, private replace_ch_vs_ch_target(string, target, substring, every, back)
elemental logical function, private lge_ch_vs(string_a, string_b)
elemental integer function, private ichar_(c)
subroutine, private get_unit_set_vs(unit, string, set, separator, maxlen, iostat)
elemental type(varying_string) function, private replace_vs_vs_fixed(string, start, finish, substring)
elemental logical function, private lle_ch_vs(string_a, string_b)
elemental integer function, private len_trim_(string)
elemental logical function, private lle_vs_ch(string_a, string_b)
elemental integer function, private index_ch_vs(string, substring, back)
This module provides an iso_varying_string module, conformant to the API specified in ISO/IEC 1539-2:...
elemental logical function, private op_eq_vs_ch(string_a, string_b)
subroutine, private put_line_unit_ch(unit, string, iostat)
elemental logical function, private op_ge_ch_vs(string_a, string_b)
elemental integer function, private verify_vs_vs(string, set, back)
elemental type(varying_string) function, private op_concat_vs_ch(string_a, string_b)
subroutine, private put_vs(string, iostat)
elemental logical function, private llt_vs_ch(string_a, string_b)
subroutine, private put_line_ch(string, iostat)
elemental subroutine, private split_vs(string, word, set, separator, back)
elemental integer function, private scan_ch_vs(string, set, back)
elemental type(varying_string) function, private repeat_(string, ncopies)
elemental subroutine, private split_ch(string, word, set, separator, back)
elemental logical function, private op_eq_vs_vs(string_a, string_b)
subroutine, private put_line_vs(string, iostat)
elemental logical function, private op_gt_ch_vs(string_a, string_b)
pure character(len=1, kind=c_char) function, dimension(length+1), private c_char_fixed(string, length)
elemental type(varying_string) function, private op_concat_ch_vs(string_a, string_b)
elemental logical function, private op_ge_vs_vs(string_a, string_b)
elemental integer function, private verify_vs_ch(string, set, back)
elemental type(varying_string) function, private remove_ch(string, start, finish)
subroutine, private put_unit_ch(unit, string, iostat)
elemental type(varying_string) function, private insert_vs_ch(string, start, substring)
subroutine, private get_set_ch(string, set, separator, maxlen, iostat)
elemental type(varying_string) function, private replace_vs_vs_vs_target(string, target, substring, every, back)
elemental type(varying_string) function, private op_concat_vs_int(string, value)
elemental type(varying_string) function, private replace_vs_ch_ch_target(string, target, substring, every, back)
elemental type(varying_string) function, private adjustr_(string)
integer, parameter, private get_buffer_len
elemental type(varying_string) function, private remove_vs(string, start, finish)
elemental logical function, private op_gt_vs_vs(string_a, string_b)
elemental logical function, private op_le_ch_vs(string_a, string_b)
elemental type(varying_string) function, private insert_ch_vs(string, start, substring)
elemental type(varying_string) function, private adjustl_(string)
elemental logical function, private llt_vs_vs(string_a, string_b)
elemental logical function, private op_lt_vs_vs(string_a, string_b)
elemental subroutine, private op_assign_ch_vs(var, exp)
elemental logical function, private op_eq_ch_vs(string_a, string_b)
elemental type(varying_string) function, private replace_ch_vs_fixed(string, start, finish, substring)
elemental type(varying_string) function, private replace_ch_ch_ch_target(string, target, substring, every, back)
pure character(len=length) function, private char_fixed(string, length)
elemental logical function, private lle_vs_vs(string_a, string_b)
elemental logical function, private op_lt_vs_ch(string_a, string_b)
elemental subroutine, private op_assign_vs_ch(var, exp)
elemental subroutine, private erase_(string)
elemental logical function, private op_ne_vs_vs(string_a, string_b)
subroutine, private get_(string, maxlen, iostat)
elemental type(varying_string) function, private replace_vs_ch_vs_target(string, target, substring, every, back)
elemental type(varying_string) function, private replace_ch_ch_auto(string, start, substring)
elemental type(varying_string) function, private insert_vs_vs(string, start, substring)
subroutine, private put_unit_vs(unit, string, iostat)
elemental type(varying_string) function, private replace_ch_ch_vs_target(string, target, substring, every, back)
elemental type(varying_string) function, private replace_vs_ch_auto(string, start, substring)
elemental logical function, private op_ne_vs_ch(string_a, string_b)
elemental integer function, private scan_vs_ch(string, set, back)
elemental logical function, private op_le_vs_ch(string_a, string_b)
elemental type(varying_string) function, private replace_vs_ch_fixed(string, start, finish, substring)
elemental logical function, private op_ne_ch_vs(string_a, string_b)
subroutine, private get_unit(unit, string, maxlen, iostat)
elemental type(varying_string) function, private replace_ch_ch_fixed(string, start, finish, substring)
elemental type(varying_string) function, private replace_ch_vs_auto(string, start, substring)
elemental type(varying_string) function, private trim_(string)
elemental logical function, private lgt_vs_ch(string_a, string_b)
subroutine, private get_set_vs(string, set, separator, maxlen, iostat)
elemental type(varying_string) function, private op_concat_vs_vs(string_a, string_b)
elemental type(varying_string) function, private replace_vs_vs_ch_target(string, target, substring, every, back)
elemental logical function, private lge_vs_ch(string_a, string_b)
elemental logical function, private lgt_vs_vs(string_a, string_b)
elemental logical function, private lge_vs_vs(string_a, string_b)
elemental type(varying_string) function, private insert_ch_ch(string, start, substring)
elemental integer function, private len_(string)
elemental logical function, private op_gt_vs_ch(string_a, string_b)