1! { dg-do run }
2!
3! Checks for the SELECTED_CHAR_KIND intrinsic
4!
5  integer, parameter :: ascii = selected_char_kind ("ascii")
6  integer, parameter :: default = selected_char_kind ("default")
7
8  character(kind=ascii) :: s1
9  character(kind=default) :: s2
10  character(kind=selected_char_kind ("ascii")) :: s3
11  character(kind=selected_char_kind ("default")) :: s4
12
13  if (kind (s1) /= selected_char_kind ("ascii")) call abort
14  if (kind (s2) /= selected_char_kind ("default")) call abort
15  if (kind (s3) /= ascii) call abort
16  if (kind (s4) /= default) call abort
17
18  if (selected_char_kind("ascii") /= 1) call abort
19  if (selected_char_kind("default") /= 1) call abort
20  if (selected_char_kind("defauLt") /= 1) call abort
21  if (selected_char_kind("foo") /= -1) call abort
22  if (selected_char_kind("asciiiii") /= -1) call abort
23  if (selected_char_kind("default       ") /= 1) call abort
24
25  call test("ascii", 1)
26  call test("default", 1)
27  call test("defauLt", 1)
28  call test("asciiiiii", -1)
29  call test("foo", -1)
30  call test("default     ", 1)
31  call test("default     x", -1)
32
33  call test(ascii_"ascii", 1)
34  call test(ascii_"default", 1)
35  call test(ascii_"defauLt", 1)
36  call test(ascii_"asciiiiii", -1)
37  call test(ascii_"foo", -1)
38  call test(ascii_"default     ", 1)
39  call test(ascii_"default     x", -1)
40
41  call test(default_"ascii", 1)
42  call test(default_"default", 1)
43  call test(default_"defauLt", 1)
44  call test(default_"asciiiiii", -1)
45  call test(default_"foo", -1)
46  call test(default_"default     ", 1)
47  call test(default_"default     x", -1)
48
49  if (kind (selected_char_kind ("")) /= kind(0)) call abort
50end
51
52subroutine test(s,i)
53  character(len=*,kind=selected_char_kind("ascii")) s
54  integer i
55
56  call test2(s,i)
57  if (selected_char_kind (s) /= i) call abort
58end subroutine test
59
60subroutine test2(s,i)
61  character(len=*,kind=selected_char_kind("default")) s
62  integer i
63
64  if (selected_char_kind (s) /= i) call abort
65end subroutine test2
66