| ! Program to test the PRESENT intrinsic |
| program intrinsic_present |
| implicit none |
| integer a |
| integer, pointer :: b |
| integer, dimension(10) :: c |
| integer, pointer, dimension(:) :: d |
| |
| if (testvar()) call abort () |
| if (.not. testvar(a)) call abort () |
| if (testptr()) call abort () |
| if (.not. testptr(b)) call abort () |
| if (testarray()) call abort () |
| if (.not. testarray(c)) call abort () |
| if (testparray()) call abort () |
| if (.not. testparray(d)) call abort () |
| |
| contains |
| logical function testvar (p) |
| integer, optional :: p |
| testvar = present(p) |
| end function |
| |
| logical function testptr (p) |
| integer, pointer, optional :: p |
| testptr = present(p) |
| end function |
| |
| logical function testarray (p) |
| integer, dimension (10), optional :: p |
| testarray = present(p) |
| end function |
| |
| logical function testparray (p) |
| integer, pointer, dimension(:), optional :: p |
| testparray = present(p) |
| end function |
| |
| end program |
| |