我在OPTIONAL
使用 Fortran 95 的函数和子例程中的语句存在问题。目前我正在使用 Silverfrost 的 Plato 和他们的 FTN95 编译器(在“发布 Win32”模式下)。在尝试在我正在编写的更复杂的程序中实现 OPTIONAL 语句之后,我创建了一个非常简单的程序来测试它。这是代码:
program TEST
implicit none
integer :: a=1, b=2
call Z(a,b)
call Z(a)
call Z(b)
end program TEST
subroutine Z(x,y)
implicit none
integer :: x
integer, optional :: y
if (present(y)) then
write(*,*) x, y
else
write(*,*) x
endif
end subroutine Z
我预计屏幕上会显示以下结果:
1 2
1
2
好吧,代码可以编译,尽管我收到警告 (673) “SUBROUTINE Z has been called with too little arguments”。执行后,我进入我的屏幕:
1 2
然后是“访问冲突”错误消息。有人能理解这里有什么问题吗?
非常感谢!吉尔伯托