split_string_by_seperator Subroutine

public subroutine split_string_by_seperator(string_in, length_mx, seperator_in, mxseg, nseg, str_piece, jstatus)

Arguments

Type IntentOptional Attributes Name
character(len=length_mx), intent(in) :: string_in
integer, intent(in) :: length_mx
character(len=length_mx), intent(in) :: seperator_in
integer, intent(in) :: mxseg
integer, intent(out) :: nseg
character(len=length_mx), intent(out) :: str_piece(mxseg)
integer, intent(out) :: jstatus

Calls

proc~~split_string_by_seperator~~CallsGraph proc~split_string_by_seperator split_string_by_seperator proc~split_string_by_space split_string_by_space proc~split_string_by_seperator->proc~split_string_by_space

Source Code

  subroutine split_string_by_seperator (string_in, length_mx, seperator_in, &
       mxseg, nseg, str_piece, jstatus)
    character (len=length_mx), intent (in) :: string_in
    integer,           intent (in) :: length_mx
    character (len=length_mx), intent (in) :: seperator_in
    integer,           intent (in) :: mxseg
    integer,           intent (out):: nseg
    character (len=length_mx), intent (out):: str_piece(mxseg)
    integer,           intent (out):: jstatus
    character (len=length_mx) :: string_sc, string_oper, string_aux
    character (len=1) :: mark, CH
    integer :: ios
    integer :: wc
    integer :: len1, len2
    !
    !  "xxxx;  yy; zz;   uu,   vv,"
    !  seperator = ";,"
    !

    !__ s1. replace seperator by space
    !
    string_sc = trim( adjustl(string_in) )
    string_oper = trim( adjustl(seperator_in) )
    len1 = len_trim(string_sc)
    len2 = len_trim(string_oper)
    string_aux=string_sc
    do i = 1, len1
       CH = string_sc(i:i)
       do j = 1, len2
          mark = string_oper(j:j)
          if (CH==mark) then
             string_aux(i:i)=' '
          end if
       end do
    end do

    !__ s2. split by space
    call split_string_by_space (string_aux, length_mx, &
       mxseg, nseg, str_piece, jstatus)

    return
  end subroutine split_string_by_seperator