1 ! Like char_result_1.f90, but the string arguments are pointers.
3 pure
function double (string
)
4 character (len
= *), intent (in
) :: string
5 character (len
= len (string
) * 2) :: double
6 double = string
// string
10 character (len
= *), pointer :: string
11 character (len
= len (string
)) :: f1
15 function f2 (string1
, string2
)
16 character (len
= *), pointer :: string1
17 character (len
= len (string1
) - 20), pointer :: string2
18 character (len
= len (string1
) + len (string2
) / 2) :: f2
26 pure
function double (string
)
27 character (len
= *), intent (in
) :: string
28 character (len
= len (string
) * 2) :: double
31 character (len
= *), pointer :: string
32 character (len
= len (string
)) :: f1
34 function f2 (string1
, string2
)
35 character (len
= *), pointer :: string1
36 character (len
= len (string1
) - 20), pointer :: string2
37 character (len
= len (string1
) + len (string2
) / 2) :: f2
42 character (len
= 80) :: text
43 character (len
= 70), target
:: textt
44 character (len
= 70), pointer :: textp
45 character (len
= 50), pointer :: textp2
51 call test (f1 (textp
), 70)
52 call test (f2 (textp
, textp
), 95)
53 call test (f3 (textp
), 105)
54 call test (f4 (textp
), 192)
55 call test (f5 (textp
), 140)
56 call test (f6 (textp
), 29)
58 call indirect (textp2
)
61 integer, parameter :: l1
= 30
62 character (len
= *), pointer :: string
63 character (len
= len (string
) + l1
+ 5) :: f3
68 character (len
= len (text
) - 10), pointer :: string
69 character (len
= len (string
) + len (text
) + a
) :: f4
74 character (len
= *), pointer :: string
75 character (len
= len (double (string
))) :: f5
80 character (len
= *), pointer :: string
81 character (len
= len (string (a
:))) :: f6
85 subroutine indirect (textp2
)
86 character (len
= 50), pointer :: textp2
88 call test (f1 (textp
), 70)
89 call test (f2 (textp
, textp
), 95)
90 call test (f3 (textp
), 105)
91 call test (f4 (textp
), 192)
92 call test (f5 (textp
), 140)
93 call test (f6 (textp
), 29)
95 call test (f1 (textp2
), 50)
96 call test (f2 (textp2
, textp
), 65)
97 call test (f3 (textp2
), 85)
98 call test (f5 (textp2
), 100)
99 call test (f6 (textp2
), 9)
100 end subroutine indirect
102 subroutine test (string
, length
)
103 character (len
= *) :: string
104 integer, intent (in
) :: length
105 if (len (string
) .ne
. length
) STOP 1