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), target :: text
43 character (len = 70), pointer :: textp
48 call test (f1 (textp), 70)
49 call test (f2 (textp, textp), 95)
50 call test (f3 (textp), 105)
51 call test (f4 (textp), 192)
52 call test (f5 (textp), 140)
53 call test (f6 (textp), 29)
58 integer, parameter :: l1 = 30
59 character (len = *), pointer :: string
60 character (len = len (string) + l1 + 5) :: f3
65 character (len = len (text) - 10), pointer :: string
66 character (len = len (string) + len (text) + a) :: f4
71 character (len = *), pointer :: string
72 character (len = len (double (string))) :: f5
77 character (len = *), pointer :: string
78 character (len = len (string (a:))) :: f6
82 subroutine indirect (textp2)
83 character (len = 50), pointer :: textp2
85 call test (f1 (textp), 70)
86 call test (f2 (textp, textp), 95)
87 call test (f3 (textp), 105)
88 call test (f4 (textp), 192)
89 call test (f5 (textp), 140)
90 call test (f6 (textp), 29)
92 call test (f1 (textp2), 50)
93 call test (f2 (textp2, textp), 65)
94 call test (f3 (textp2), 85)
95 call test (f4 (textp2), 192)
96 call test (f5 (textp2), 100)
97 call test (f6 (textp2), 9)
98 end subroutine indirect
100 subroutine test (string, length)
101 character (len = *) :: string
102 integer, intent (in) :: length
103 if (len (string) .ne. length) call abort