1PROGRAM Test_INTEGER_select
2
3! Every wrong branch leads to destruction.
4
5  INTEGER, PARAMETER :: maxI = HUGE (maxI)
6  INTEGER, PARAMETER :: minI = -1 * maxI
7  INTEGER :: I = 0
8
9  SELECT CASE (I)
10     CASE (:-1)
11        STOP 1
12     CASE (1:)
13        STOP 2
14     CASE DEFAULT
15        CONTINUE
16  END SELECT
17
18  SELECT CASE (I)
19     CASE (3,2,1)
20        STOP 3
21     CASE (0)
22        CONTINUE
23     CASE DEFAULT
24        STOP 4
25  END SELECT
26
27! Not aborted by here, so it worked
28! See about weird corner cases
29
30  I = maxI
31
32  SELECT CASE (I)
33     CASE (:-1)
34        STOP 5
35     CASE (1:)
36        CONTINUE
37     CASE DEFAULT
38        STOP 6
39  END SELECT
40
41  SELECT CASE (I)
42     CASE (3,2,1,:0)
43        STOP 7
44     CASE (maxI)
45        CONTINUE
46     CASE DEFAULT
47        STOP 8
48  END SELECT
49
50  I = minI
51
52  SELECT CASE (I)
53     CASE (:-1)
54        CONTINUE
55     CASE (1:)
56        STOP 9
57     CASE DEFAULT
58        STOP 10
59  END SELECT
60
61  SELECT CASE (I)
62     CASE (3:,2,1,0)
63        STOP 11
64     CASE (minI)
65        CONTINUE
66     CASE DEFAULT
67        STOP 12
68  END SELECT
69
70END
71
72