| ! Test allocation and deallocation. |
| program test_allocate |
| call t1 (.true.) |
| call t1 (.false.) |
| call t2 |
| contains |
| |
| ! Implicit deallocation and saved aloocated variables. |
| subroutine t1(first) |
| real, allocatable, save :: p(:) |
| real, allocatable :: q(:) |
| logical first |
| |
| if (first) then |
| if (allocated (p)) call abort () |
| else |
| if (.not. allocated (p)) call abort () |
| end if |
| if (allocated (q)) call abort () |
| |
| if (first) then |
| allocate (p(5)) |
| else |
| deallocate (p) |
| end if |
| allocate (q(5)) |
| end subroutine |
| |
| ! Explicit deallocation. |
| subroutine t2() |
| real, allocatable :: r(:) |
| |
| allocate (r(5)) |
| pr = 1.0 |
| deallocate (r) |
| if (allocated(r)) call abort () |
| end subroutine |
| end program |