2 ! { dg-additional-options "-fimplicit-none" }
4 ! F2018 only permittes len=*, len=: or len=<const> as dummy argument
5 ! but not len=<non-const-expr>
6 ! Additionally, for allocatable/pointer, len=: is required.
8 ! Scalar, nonallocatable/nonpointer
10 subroutine val_s1(x1
) bind(C
)
11 character(len
=1), value
:: x1
14 subroutine val_s2(x2
) bind(C
) ! { dg-error "Character dummy argument 'x2' at .1. must be of length 1 as it has the VALUE attribute" }
15 character(len
=2), value
:: x2
18 subroutine s1 (x1
) bind(C
)
19 character(len
=1) :: x1
22 subroutine s2 (x2
) bind(C
) ! { dg-error "Character dummy argument 'x2' at .1. must be of constant length of one or assumed length, unless it has assumed shape or assumed rank, as procedure 's2' has the BIND\\(C\\) attribute" }
23 character(len
=2) :: x2
26 subroutine s3 (xn
, n
) bind(C
) ! { dg-error "Character dummy argument 'xn' at .1. must be of constant length of one or assumed length, unless it has assumed shape or assumed rank, as procedure 's3' has the BIND\\(C\\) attribute" }
28 character(len
=n
) :: xn
31 subroutine s4 (xstar
) bind(C
)
32 character(len
=*) :: xstar
35 ! Assumed-shape array, nonallocatable/nonpointer
37 subroutine as1 (x1
) bind(C
)
38 character(len
=1) :: x1(:)
41 subroutine as2 (x2
) bind(C
)
42 character(len
=2) :: x2(:,:)
45 subroutine as3 (xn
, n
) bind(C
)
47 character(len
=n
) :: xn(:,:,:)
50 subroutine as4 (xstar
) bind(C
)
51 character(len
=*) :: xstar(:,:,:,:)
54 ! Assumed-rank array, nonallocatable/nonpointer
56 subroutine ar1 (x1
) bind(C
)
57 character(len
=1) :: x1(..)
60 subroutine ar2 (x2
) bind(C
)
61 character(len
=2) :: x2(..)
64 subroutine ar3 (xn
, n
) bind(C
)
66 character(len
=n
) :: xn(..)
69 subroutine ar4 (xstar
) bind(C
)
70 character(len
=*) :: xstar(..)
73 ! Assumed-size array, nonallocatable/nonpointer
75 subroutine az1 (x1
) bind(C
)
76 character(len
=1) :: x1(*)
79 subroutine az2 (x2
) bind(C
) ! { dg-error "Character dummy argument 'x2' at .1. must be of constant length of one or assumed length, unless it has assumed shape or assumed rank, as procedure 'az2' has the BIND\\(C\\) attribute" }
80 character(len
=2) :: x2(*)
83 subroutine az3 (xn
, n
) bind(C
) ! { dg-error "Character dummy argument 'xn' at .1. must be of constant length of one or assumed length, unless it has assumed shape or assumed rank, as procedure 'az3' has the BIND\\(C\\) attribute" }
85 character(len
=n
) :: xn(*)
88 subroutine az4 (xstar
) bind(C
)
89 character(len
=*) :: xstar(*)
92 ! Explicit-size array, nonallocatable/nonpointer
94 subroutine ae1 (x1
) bind(C
)
95 character(len
=1) :: x1(5)
98 subroutine ae2 (x2
) bind(C
) ! { dg-error "Character dummy argument 'x2' at .1. must be of constant length of one or assumed length, unless it has assumed shape or assumed rank, as procedure 'ae2' has the BIND\\(C\\) attribute" }
99 character(len
=2) :: x2(7)
102 subroutine ae3 (xn
, n
) bind(C
) ! { dg-error "Character dummy argument 'xn' at .1. must be of constant length of one or assumed length, unless it has assumed shape or assumed rank, as procedure 'ae3' has the BIND\\(C\\) attribute" }
104 character(len
=n
) :: xn(9)
107 subroutine ae4 (xstar
) bind(C
)
108 character(len
=*) :: xstar(3)
112 ! Scalar, allocatable
114 subroutine s1a (x1
) bind(C
) ! { dg-error "Allocatable character dummy argument 'x1' at .1. must have deferred length as procedure 's1a' is BIND\\(C\\)" }
115 character(len
=1), allocatable
:: x1
118 subroutine s2a (x2
) bind(C
) ! { dg-error "Allocatable character dummy argument 'x2' at .1. must have deferred length as procedure 's2a' is BIND\\(C\\)" }
119 character(len
=2), allocatable
:: x2
122 subroutine s3a (xn
, n
) bind(C
) ! { dg-error "Allocatable character dummy argument 'xn' at .1. must have deferred length as procedure 's3a' is BIND\\(C\\)" }
124 character(len
=n
), allocatable
:: xn
127 subroutine s4a (xstar
) bind(C
) ! { dg-error "Allocatable character dummy argument 'xstar' at .1. must have deferred length as procedure 's4a' is BIND\\(C\\)" }
128 character(len
=*), allocatable
:: xstar
131 subroutine s5a (xcolon
) bind(C
)
132 character(len
=:), allocatable
:: xcolon
135 ! Assumed-shape array, allocatable
137 subroutine a1a (x1
) bind(C
) ! { dg-error "Allocatable character dummy argument 'x1' at .1. must have deferred length as procedure 'a1a' is BIND\\(C\\)" }
138 character(len
=1), allocatable
:: x1(:)
141 subroutine a2a (x2
) bind(C
) ! { dg-error "Allocatable character dummy argument 'x2' at .1. must have deferred length as procedure 'a2a' is BIND\\(C\\)" }
142 character(len
=2), allocatable
:: x2(:,:)
145 subroutine a3a (xn
, n
) bind(C
) ! { dg-error "Allocatable character dummy argument 'xn' at .1. must have deferred length as procedure 'a3a' is BIND\\(C\\)" }
147 character(len
=n
), allocatable
:: xn(:,:,:)
150 subroutine a4a (xstar
) bind(C
) ! { dg-error "Allocatable character dummy argument 'xstar' at .1. must have deferred length as procedure 'a4a' is BIND\\(C\\)" }
151 character(len
=*), allocatable
:: xstar(:,:,:,:)
154 subroutine a5a (xcolon
) bind(C
)
155 character(len
=:), allocatable
:: xcolon(:)
158 ! Assumed-rank array, allocatable
160 subroutine a1ar (x1
) bind(C
) ! { dg-error "Allocatable character dummy argument 'x1' at .1. must have deferred length as procedure 'a1ar' is BIND\\(C\\)" }
161 character(len
=1), allocatable
:: x1(..)
164 subroutine a2ar (x2
) bind(C
) ! { dg-error "Allocatable character dummy argument 'x2' at .1. must have deferred length as procedure 'a2ar' is BIND\\(C\\)" }
165 character(len
=2), allocatable
:: x2(..)
168 subroutine a3ar (xn
, n
) bind(C
) ! { dg-error "Allocatable character dummy argument 'xn' at .1. must have deferred length as procedure 'a3ar' is BIND\\(C\\)" }
170 character(len
=n
), allocatable
:: xn(..)
173 subroutine a4ar (xstar
) bind(C
) ! { dg-error "Allocatable character dummy argument 'xstar' at .1. must have deferred length as procedure 'a4ar' is BIND\\(C\\)" }
174 character(len
=*), allocatable
:: xstar(..)
177 subroutine a5ar (xcolon
) bind(C
)
178 character(len
=:), allocatable
:: xcolon(..)
184 subroutine s1p (x1
) bind(C
) ! { dg-error "Pointer character dummy argument 'x1' at .1. must have deferred length as procedure 's1p' is BIND\\(C\\)" }
185 character(len
=1), pointer :: x1
188 subroutine s2p (x2
) bind(C
) ! { dg-error "Pointer character dummy argument 'x2' at .1. must have deferred length as procedure 's2p' is BIND\\(C\\)" }
189 character(len
=2), pointer :: x2
192 subroutine s3p (xn
, n
) bind(C
) ! { dg-error "Pointer character dummy argument 'xn' at .1. must have deferred length as procedure 's3p' is BIND\\(C\\)" }
194 character(len
=n
), pointer :: xn
197 subroutine s4p (xstar
) bind(C
) ! { dg-error "Pointer character dummy argument 'xstar' at .1. must have deferred length as procedure 's4p' is BIND\\(C\\)" }
198 character(len
=*), pointer :: xstar
201 subroutine s5p (xcolon
) bind(C
)
202 character(len
=:), pointer :: xcolon
205 ! Assumed-shape array, pointer
207 subroutine a1p (x1
) bind(C
) ! { dg-error "Pointer character dummy argument 'x1' at .1. must have deferred length as procedure 'a1p' is BIND\\(C\\)" }
208 character(len
=1), pointer :: x1(:)
211 subroutine a2p (x2
) bind(C
) ! { dg-error "Pointer character dummy argument 'x2' at .1. must have deferred length as procedure 'a2p' is BIND\\(C\\)" }
212 character(len
=2), pointer :: x2(:,:)
215 subroutine a3p (xn
, n
) bind(C
) ! { dg-error "Pointer character dummy argument 'xn' at .1. must have deferred length as procedure 'a3p' is BIND\\(C\\)" }
217 character(len
=n
), pointer :: xn(:,:,:)
220 subroutine a4p (xstar
) bind(C
) ! { dg-error "Pointer character dummy argument 'xstar' at .1. must have deferred length as procedure 'a4p' is BIND\\(C\\)" }
221 character(len
=*), pointer :: xstar(:,:,:,:)
224 subroutine a5p (xcolon
) bind(C
)
225 character(len
=:), pointer :: xcolon(:)
228 ! Assumed-rank array, pointer
230 subroutine a1pr (x1
) bind(C
) ! { dg-error "Pointer character dummy argument 'x1' at .1. must have deferred length as procedure 'a1pr' is BIND\\(C\\)" }
231 character(len
=1), pointer :: x1(..)
234 subroutine a2pr (x2
) bind(C
) ! { dg-error "Pointer character dummy argument 'x2' at .1. must have deferred length as procedure 'a2pr' is BIND\\(C\\)" }
235 character(len
=2), pointer :: x2(..)
238 subroutine a3pr (xn
, n
) bind(C
) ! { dg-error "Pointer character dummy argument 'xn' at .1. must have deferred length as procedure 'a3pr' is BIND\\(C\\)" }
240 character(len
=n
), pointer :: xn(..)
243 subroutine a4pr (xstar
) bind(C
) ! { dg-error "Pointer character dummy argument 'xstar' at .1. must have deferred length as procedure 'a4pr' is BIND\\(C\\)" }
244 character(len
=*), pointer :: xstar(..)
247 subroutine a5pr (xcolon
) bind(C
)
248 character(len
=:), pointer :: xcolon(..)