1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
program present_02
implicit none
type X
integer :: stat = 77
end type
type(X), allocatable :: objx
print *, allocated(objx)
if( allocated(objx) ) error stop
call f(objx)
contains
subroutine f(obj)
type(X), allocatable, optional, intent(in) :: obj
print *, present(obj)
if( .not. present(obj) ) error stop
call g(obj)
end subroutine
subroutine g(obj1)
type(X), optional, intent(in), allocatable :: obj1
print *, present(obj1)
if( .not. present(obj1) ) error stop
call h(obj1)
end subroutine
subroutine h(obj2)
type(X), intent(in), optional :: obj2
print *, present(obj2)
if( present(obj2) ) error stop
end subroutine
end program
|