414     character(len = *), 
intent(in):: relative
   415     character(len = *), 
intent(in):: base
   416     character(len = STRING):: result
   417     integer, 
parameter:: file = 1, var = 2, attr = 3, ior = 4
   418     character(len = STRING):: rel(file:ior), bas(file:ior)
   419     character(3), 
parameter:: pathdelim = 
"/:" // achar(94)
   420     integer:: idir_r, idir_b
   422     call beginsub(
'urlresolve', 
'rel=<%c> base=<%c>', c1=relative, c2=base)
   423     call urlsplit(trim(relative), file=rel(file), var=rel(var), &
   424       & attr=rel(attr), iorange=rel(ior))
   425     call dbgmessage(
'rel -> file=<%c> var=<%c> attr=<%c>', &
   426       & c1=trim(rel(file)), c2=trim(rel(var)), &
   427       & c3=(trim(rel(attr)) // 
'> ior=<' // trim(rel(ior))))
   428     call urlsplit(base, file=bas(file), var=bas(var), &
   429       & attr=bas(attr), iorange=bas(ior))
   430     call dbgmessage(
'base -> file=<%s> var=<%s> attr=<%s> ior=<%s>', &
   431       & c1=trim(bas(file)), c2=trim(bas(var)), &
   432       & c3=(trim(bas(attr)) // 
'> ior=<' // trim(bas(ior))))
   434     if (rel(file) == 
"") 
then   435       rel(file) = bas(file)
   436       if (rel(var) == 
"") &
   437         & rel(var) = bas(var)
   438       result = 
urlmerge(file=rel(file), var=rel(var), &
   439         & attr=rel(attr), iorange=rel(ior))
   440       call endsub(
'urlresolve', 
'1 result=%c', c1=trim(result))
   444     if (
strhead(rel(file), 
"file:") &
   445       & .OR. 
strhead(rel(file), 
"http:") &
   446       & .OR. 
strhead(rel(file), 
"ftp:") &
   447       & .OR. 
strhead(rel(file), 
"news:") &
   448       & .OR. 
strhead(rel(file), 
"www") &
   449       & .OR. 
strhead(rel(file), 
"/") &
   450       & .OR. 
strhead(rel(file), achar(94)) &
   451       & .OR. rel(file)(2:2) == 
":" &
   454       call endsub(
'urlresolve', 
'2 result=%c', c1=trim(result))
   458     idir_b = scan(bas(file), pathdelim, back=.true.) 
   459     if (idir_b == 0) 
then   463       call endsub(
'urlresolve', 
'3 result=%c', c1=trim(result))
   467     idir_r = scan(rel(file), pathdelim, back=.true.)
   468     if (idir_r == 0) 
then   472     result = base(1: idir_b) // relative(idir_r: )
   473     call endsub(
'urlresolve', 
'4 result=%c', c1=trim(result))
 
subroutine, public dbgmessage(fmt, i, r, d, L, n, c1, c2, c3, ca)
 
subroutine, public beginsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca, version)
 
subroutine, public endsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca)
 
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ