| ! { dg-do compile } |
| ! Verify that the compiler accepts the various legal combinations of |
| ! using construct names. |
| ! |
| ! The correct behavior of EXIT and CYCLE is already established in |
| ! the various DO related testcases, they're included here for |
| ! completeness. |
| dimension a(5) |
| i = 0 |
| ! construct name is optional on else clauses |
| ia: if (i > 0) then |
| i = 1 |
| else |
| i = 2 |
| end if ia |
| ib: if (i < 0) then |
| i = 3 |
| else ib |
| i = 4 |
| end if ib |
| ic: if (i < 0) then |
| i = 5 |
| else if (i == 0) then ic |
| i = 6 |
| else if (i == 1) then |
| i =7 |
| else if (i == 2) then ic |
| i = 8 |
| end if ic |
| |
| fa: forall (i=1:5, a(i) > 0) |
| a(i) = 9 |
| end forall fa |
| |
| wa: where (a > 0) |
| a = -a |
| elsewhere |
| wb: where (a == 0) |
| a = a + 1. |
| elsewhere wb |
| a = 2*a |
| end where wb |
| end where wa |
| |
| j = 1 |
| sa: select case (i) |
| case (1) |
| i = 2 |
| case (2) sa |
| i = 3 |
| case default sa |
| sb: select case (j) |
| case (1) sb |
| i = j |
| case default |
| j = i |
| end select sb |
| end select sa |
| |
| da: do i=1,10 |
| cycle da |
| cycle |
| exit da |
| exit |
| db: do |
| cycle da |
| cycle db |
| cycle |
| exit da |
| exit db |
| exit |
| j = i+1 |
| end do db |
| dc: do while (j>0) |
| j = j-1 |
| end do dc |
| end do da |
| end |