我不想使用全球价值,这对大型项目来说是危险的。代码就像这样
subroutine has_key(id)
if (true) then
return 1
else
return 0
end if
end subroutine
subroutine main
if(has_key(id))
write(*,*) 'it works!'
end subroutine
如何使用子程序执行此类操作。我在考虑返回一个标志,但我可能会使用全局值。有人有想法吗?
答案 0 :(得分:2)
喜欢这个
subroutine test(input, flag)
integer, intent(in) :: input
logical, intent(out) :: flag
flag = input>=0
end subroutine
和
call test(3,myflag)
会将myflag设置为.true.
注意
intent
子句告诉编译器子程序可以对其参数做什么; 答案 1 :(得分:2)
你也可以用一个功能来做。假设它为偶数
返回truelogical function has_key(id)
integer, intent(in):: id
has_key = mod(id,2) .eq. 0
end function has_key
program main
do ii = 1, 4
if(has_key(ii))
print *, ii, ' has key'
else
print *, ii, ' no key'
end if
end do
end program