| PROGRAM Test_INTEGER_select |
| |
| ! Every wrong branch leads to destruction. |
| |
| INTEGER, PARAMETER :: maxI = HUGE (maxI) |
| INTEGER, PARAMETER :: minI = -1 * maxI |
| INTEGER :: I = 0 |
| |
| SELECT CASE (I) |
| CASE (:-1) |
| STOP 1 |
| CASE (1:) |
| STOP 2 |
| CASE DEFAULT |
| CONTINUE |
| END SELECT |
| |
| SELECT CASE (I) |
| CASE (3,2,1) |
| STOP 3 |
| CASE (0) |
| CONTINUE |
| CASE DEFAULT |
| STOP 4 |
| END SELECT |
| |
| ! Not aborted by here, so it worked |
| ! See about weird corner cases |
| |
| I = maxI |
| |
| SELECT CASE (I) |
| CASE (:-1) |
| STOP 5 |
| CASE (1:) |
| CONTINUE |
| CASE DEFAULT |
| STOP 6 |
| END SELECT |
| |
| SELECT CASE (I) |
| CASE (3,2,1,:0) |
| STOP 7 |
| CASE (maxI) |
| CONTINUE |
| CASE DEFAULT |
| STOP 8 |
| END SELECT |
| |
| I = minI |
| |
| SELECT CASE (I) |
| CASE (:-1) |
| CONTINUE |
| CASE (1:) |
| STOP 9 |
| CASE DEFAULT |
| STOP 10 |
| END SELECT |
| |
| SELECT CASE (I) |
| CASE (3:,2,1,0) |
| STOP 11 |
| CASE (minI) |
| CONTINUE |
| CASE DEFAULT |
| STOP 12 |
| END SELECT |
| |
| END |
| |