5 ! Co-contributed by G. Steinmetz
7 use iso_c_binding
, only
: c_char
8 call s(c_char_
'x', 1, 1)
9 call s(c_char_
'x', 1, 0)
10 call s(c_char_
'x', 0, -2)
12 subroutine s(x
,m
,n
) bind(c
)
13 use iso_c_binding
, only
: c_char
14 character(kind
=c_char
), value
:: x
15 call foo(x(m
:n
), m
, n
)
17 if (len(x(m
:n
)) /= 0) stop 1
18 if (x(m
:n
) /= "") stop 2
20 if (len(x(m
:n
)) /= 1) stop 1
21 if (x(m
:n
) /= "x") stop 2
25 call foo(x(1:1), 1, 1)
26 call foo(x(1:0), 1, 0)
27 call foo(x(2:1), 2, 1)
28 call foo(x(0:-4), 0, -4)
35 if (n
== 1) call foo(x(m
:), m
, n
)
36 if (m
== 1) call foo(x(:n
), m
, n
)
38 subroutine foo(str
, m
, n
)
39 character(len
=*) :: str
41 if (len(str
) /= 0) stop 11
42 if (str
/= "") stop 12
44 if (len(str
) /= 1) stop 13
45 if (str
/= "x") stop 14