Fortran 95のステートメントに問題がありPRESENT
ます。現在、Silverfrost の Plato とその FTN95 コンパイラ (「Release Win32」モード) を使用しています。私がやりたかったのは、サブルーチンを作成することです。SUB(a,b)
ここb
で、 はオプションの変数です。b
ここまでは順調ですが、 withに新しい値を与えようとすると問題が発生しif (.NOT. present(b)) b=0
ます。これはコードです:
module MOD
contains
subroutine SUB(a,b)
implicit none
integer :: a
integer,optional :: b
if (.NOT. present(b)) b=0
print*, a,b
end subroutine SUB
end module MOD
program TEST
use MOD
implicit none
integer :: i=2, j=1
call SUB(i,j)
call SUB(i)
call SUB(j)
end program TEST
この状況から抜け出すエレガントな方法はありますか? それとも、b_aux
たとえば別の変数を作成してから、次のコードを使用する必要がありますか?:
if (present(b)) then
b_aux=b
else
b_aux=0
endif