annotate gcc/testsuite/gfortran.dg/char_result_11.f90 @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ! { dg-do link }
kono
parents:
diff changeset
2 ! PR 23675: Character function of module-variable length
kono
parents:
diff changeset
3 ! PR 25716: Implicit kind conversions in in expressions written to *.mod-files.
kono
parents:
diff changeset
4 module cutils
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 implicit none
kono
parents:
diff changeset
7 private
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 type t
kono
parents:
diff changeset
10 integer :: k = 25
kono
parents:
diff changeset
11 integer :: kk(3) = (/30, 40, 50 /)
kono
parents:
diff changeset
12 end type t
kono
parents:
diff changeset
13
kono
parents:
diff changeset
14 integer :: m1 = 25, m2 = 25, m3 = 25, m4 = 25, m5 = 25
kono
parents:
diff changeset
15 integer :: n5 = 3, n7 = 3, n9 = 3
kono
parents:
diff changeset
16 integer(1) :: n1 = 3, n2 = 3, n3 = 3, n4 = 3, n6 = 3, n8 = 3
kono
parents:
diff changeset
17 character(10) :: s = "abcdefghij"
kono
parents:
diff changeset
18 integer :: x(4) = (/ 30, 40, 50, 60 /)
kono
parents:
diff changeset
19 type(t), save :: tt1(5), tt2(5)
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 public :: IntToChar1, IntToChar2, IntToChar3, IntToChar4, IntToChar5, &
kono
parents:
diff changeset
22 IntToChar6, IntToChar7, IntToChar8
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 contains
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 pure integer function get_k(tt)
kono
parents:
diff changeset
27 type(t), intent(in) :: tt
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 get_k = tt%k
kono
parents:
diff changeset
30 end function get_k
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 function IntToChar1(integerValue) result(a)
kono
parents:
diff changeset
33 integer, intent(in) :: integerValue
kono
parents:
diff changeset
34 character(len=m1) :: a
kono
parents:
diff changeset
35
kono
parents:
diff changeset
36 write(a, *) integerValue
kono
parents:
diff changeset
37 end function IntToChar1
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 function IntToChar2(integerValue) result(a)
kono
parents:
diff changeset
40 integer, intent(in) :: integerValue
kono
parents:
diff changeset
41 character(len=m2+n1) :: a
kono
parents:
diff changeset
42
kono
parents:
diff changeset
43 write(a, *) integerValue
kono
parents:
diff changeset
44 end function IntToChar2
kono
parents:
diff changeset
45
kono
parents:
diff changeset
46 function IntToChar3(integerValue) result(a)
kono
parents:
diff changeset
47 integer, intent(in) :: integerValue
kono
parents:
diff changeset
48 character(len=iachar(s(n2:n3))) :: a
kono
parents:
diff changeset
49
kono
parents:
diff changeset
50 write(a, *) integerValue
kono
parents:
diff changeset
51 end function IntToChar3
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 function IntToChar4(integerValue) result(a)
kono
parents:
diff changeset
54 integer, intent(in) :: integerValue
kono
parents:
diff changeset
55 character(len=tt1(n4)%k) :: a
kono
parents:
diff changeset
56
kono
parents:
diff changeset
57 write(a, *) integerValue
kono
parents:
diff changeset
58 end function IntToChar4
kono
parents:
diff changeset
59
kono
parents:
diff changeset
60 function IntToChar5(integerValue) result(a)
kono
parents:
diff changeset
61 integer, intent(in) :: integerValue
kono
parents:
diff changeset
62 character(len=maxval((/m3, n5/))) :: a
kono
parents:
diff changeset
63
kono
parents:
diff changeset
64 write(a, *) integerValue
kono
parents:
diff changeset
65 end function IntToChar5
kono
parents:
diff changeset
66
kono
parents:
diff changeset
67 function IntToChar6(integerValue) result(a)
kono
parents:
diff changeset
68 integer, intent(in) :: integerValue
kono
parents:
diff changeset
69 character(len=x(n6)) :: a
kono
parents:
diff changeset
70
kono
parents:
diff changeset
71 write(a, *) integerValue
kono
parents:
diff changeset
72 end function IntToChar6
kono
parents:
diff changeset
73
kono
parents:
diff changeset
74 function IntToChar7(integerValue) result(a)
kono
parents:
diff changeset
75 integer, intent(in) :: integerValue
kono
parents:
diff changeset
76 character(len=tt2(min(m4, n7, 2))%kk(n8)) :: a
kono
parents:
diff changeset
77
kono
parents:
diff changeset
78 write(a, *) integerValue
kono
parents:
diff changeset
79 end function IntToChar7
kono
parents:
diff changeset
80
kono
parents:
diff changeset
81 function IntToChar8(integerValue) result(a)
kono
parents:
diff changeset
82 integer, intent(in) :: integerValue
kono
parents:
diff changeset
83 character(len=get_k(t(m5, (/31, n9, 53/)))) :: a
kono
parents:
diff changeset
84
kono
parents:
diff changeset
85 write(a, *) integerValue
kono
parents:
diff changeset
86 end function IntToChar8
kono
parents:
diff changeset
87
kono
parents:
diff changeset
88 end module cutils
kono
parents:
diff changeset
89
kono
parents:
diff changeset
90
kono
parents:
diff changeset
91 program test
kono
parents:
diff changeset
92
kono
parents:
diff changeset
93 use cutils
kono
parents:
diff changeset
94
kono
parents:
diff changeset
95 implicit none
kono
parents:
diff changeset
96 character(25) :: str
kono
parents:
diff changeset
97
kono
parents:
diff changeset
98 str = IntToChar1(3)
kono
parents:
diff changeset
99 print *, str
kono
parents:
diff changeset
100 str = IntToChar2(3)
kono
parents:
diff changeset
101 print *, str
kono
parents:
diff changeset
102 str = IntToChar3(3)
kono
parents:
diff changeset
103 print *, str
kono
parents:
diff changeset
104 str = IntToChar4(3)
kono
parents:
diff changeset
105 print *, str
kono
parents:
diff changeset
106 str = IntToChar5(3)
kono
parents:
diff changeset
107 print *, str
kono
parents:
diff changeset
108 str = IntToChar6(3)
kono
parents:
diff changeset
109 print *, str
kono
parents:
diff changeset
110 str = IntToChar7(3)
kono
parents:
diff changeset
111 print *, str
kono
parents:
diff changeset
112 str = IntToChar8(3)
kono
parents:
diff changeset
113 print *, str
kono
parents:
diff changeset
114
kono
parents:
diff changeset
115 end program test