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
|
module procedure_07_module
contains
subroutine cb(x)
implicit none
integer, intent(in), optional :: x(:)
logical :: y
y = present(x)
if(y .neqv. .false.) error stop
end subroutine cb
end module procedure_07_module
program procedure_07
use procedure_07_module
call temp(cb)
call temp() !! Optional cb not passed
call temp2(cb)
contains
subroutine temp(call_back)
implicit none
procedure(cb), optional :: call_back
logical :: terminate_var
if(present(call_back)) call call_back()
end subroutine temp
subroutine temp2(call_back)
implicit none
procedure(cb) :: call_back
logical :: terminate_var
end subroutine
end program procedure_07
|