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 CALL abort 12 CASE (1:) 13 CALL abort 14 CASE DEFAULT 15 CONTINUE 16 END SELECT 17 18 SELECT CASE (I) 19 CASE (3,2,1) 20 CALL abort 21 CASE (0) 22 CONTINUE 23 CASE DEFAULT 24 call abort 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 CALL abort 35 CASE (1:) 36 CONTINUE 37 CASE DEFAULT 38 CALL abort 39 END SELECT 40 41 SELECT CASE (I) 42 CASE (3,2,1,:0) 43 CALL abort 44 CASE (maxI) 45 CONTINUE 46 CASE DEFAULT 47 call abort 48 END SELECT 49 50 I = minI 51 52 SELECT CASE (I) 53 CASE (:-1) 54 CONTINUE 55 CASE (1:) 56 CALL abort 57 CASE DEFAULT 58 CALL abort 59 END SELECT 60 61 SELECT CASE (I) 62 CASE (3:,2,1,0) 63 CALL abort 64 CASE (minI) 65 CONTINUE 66 CASE DEFAULT 67 call abort 68 END SELECT 69 70END 71 72