Module dc_url 
module dc_url
        ! Uses
    use dcstring_base, only: VSTRING, operator(.cat.), operator(/=),  extract, operator(==)
        ! Variables
    character, public, parameter :: GT_ATMARK = "@"
    character, public, parameter :: GT_QUESTION = "?"
    character, public, parameter :: GT_COLON = ":"
    character, public, parameter :: GT_COMMA = ","
    character, public, parameter :: GT_EQUAL = "="
    character, public, parameter :: GT_CIRCUMFLEX = "^"
    character, public, parameter :: GT_PLUS = "+"
        ! Interfaces
    public interface UrlMerge
    public interface UrlSplit
    public interface UrlResolve
    public interface UrlSearchIORange
    public interface operator(.OnTheSameFile.)
        ! Subroutines and functions
    private type (VSTRING) function url_merge_v_vvv (file, var, attr, iorange)
    private function url_merge_cc (file, var) result (result)
    private function url_merge_cccca (file, var, attr, iorange) result (result)
    private function url_merge_cccc (file, var, attr, iorange) result (result)
    public subroutine Url_Chop_IOrange (fullname, iorange, remainder)
    private function url_search_iorange (fullname, dimvar) result (result)
    private subroutine url_split_c (fullname, file, var, attr, iorange)
    private subroutine url_split_v (fullname, file, var, attr, iorange)
    private logical function UrlOnTheSameFile (url_a, url_b)
    private function url_resolve_c (relative, base) result (result)
end module dc_url
 Description of Variables 
GT_ATMARK
character, public, parameter :: GT_ATMARK = "@"
GT_QUESTION
character, public, parameter :: GT_QUESTION = "?"
GT_COLON
character, public, parameter :: GT_COLON = ":"
GT_COMMA
character, public, parameter :: GT_COMMA = ","
GT_EQUAL
character, public, parameter :: GT_EQUAL = "="
GT_CIRCUMFLEX
character, public, parameter :: GT_CIRCUMFLEX = "^"
GT_PLUS
character, public, parameter :: GT_PLUS = "+"
 Description of Interfaces 
UrlMerge
public interface UrlMerge
    module procedure url_merge_v_vvv
    module procedure url_merge_cc
    module procedure url_merge_cccc
    module procedure url_merge_cccca
end interface UrlMerge
UrlSplit
public interface UrlSplit
    module procedure url_split_v
    module procedure url_split_c
end interface UrlSplit
UrlResolve
public interface UrlResolve
    module procedure url_resolve_c
end interface UrlResolve
UrlSearchIORange
public interface UrlSearchIORange
    module procedure url_search_iorange
end interface UrlSearchIORange
operator(.OnTheSameFile.)
public interface operator(.OnTheSameFile.)
    module procedure UrlOnTheSameFile
end interface operator(.OnTheSameFile.)
 Description of Subroutines and Functions 
url_merge_v_vvv
private function url_merge_v_vvv (file, var, attr, iorange) result (result)
    type (VSTRING), intent(in) :: file
    type (VSTRING), optional, intent(in) :: var
    type (VSTRING), optional, intent(in) :: attr
    type (VSTRING), optional, intent(in) :: iorange
    type (VSTRING) :: result
end function url_merge_v_vvv
url_merge_cc
private function url_merge_cc (file, var) result (result)
    character (len=*), intent(in) :: file
    character (len=*), intent(in) :: var
    character (len=STRING) :: result
end function url_merge_cc
url_merge_cccca
private function url_merge_cccca (file, var, attr, iorange) result (result)
    character (len=*), intent(in) :: file
    character (len=*), intent(in) :: var
    character (len=*), intent(in) :: attr
    character (len=*), intent(in), dimension (:) :: iorange
    character (len=STRING) :: result
end function url_merge_cccca
url_merge_cccc
private function url_merge_cccc (file, var, attr, iorange) result (result)
    character (len=*), intent(in) :: file
    character (len=*), intent(in) :: var
    character (len=*), intent(in) :: attr
    character (len=*), intent(in) :: iorange
    character (len=STRING) :: result
end function url_merge_cccc
Url_Chop_IOrange
public subroutine Url_Chop_IOrange (fullname, iorange, remainder)
    character (len=*), intent(in) :: fullname
    character (len=*), intent(out) :: iorange
    character (len=*), intent(out) :: remainder
    ! Calls: urlsplit
end subroutine Url_Chop_IOrange
url_search_iorange
private function url_search_iorange (fullname, dimvar) result (result)
    character (len=*), intent(in) :: fullname
    character (len=*), intent(in) :: dimvar
    character (len=STRING) :: result
    ! Calls: Split, urlsplit
end function url_search_iorange
url_split_c
private subroutine url_split_c (fullname, file, var, attr, iorange)
    character (len=*), intent(in) :: fullname
    character (len=*), optional, intent(out) :: file
    character (len=*), optional, intent(out) :: var
    character (len=*), optional, intent(out) :: attr
    character (len=*), optional, intent(out) :: iorange
end subroutine url_split_c
url_split_v
private subroutine url_split_v (fullname, file, var, attr, iorange)
    type (VSTRING), intent(in) :: fullname
    type (VSTRING), optional, intent(out) :: file
    type (VSTRING), optional, intent(out) :: var
    type (VSTRING), optional, intent(out) :: attr
    type (VSTRING), optional, intent(out) :: iorange
end subroutine url_split_v
UrlOnTheSameFile
private function UrlOnTheSameFile (url_a, url_b) result (result)
    character (len=*), intent(in) :: url_a
    character (len=*), intent(in) :: url_b
    logical :: result
    ! Calls: UrlSplit
end function UrlOnTheSameFile
url_resolve_c
private function url_resolve_c (relative, base) result (result)
    character (len=*), intent(in) :: relative
    character (len=*), intent(in) :: base
    character (len=STRING) :: result
    ! Calls: DbgMessage, UrlSplit, beginsub, endsub
end function url_resolve_c