たとえば、配列内で NA が見つかったら、ルーチンを停止したいとします。これどうやってするの?
「if (array(i) .eq. NA) ...」は機能しないようです。ありがとう、
アップデート:
array は、浮動小数点数の配列です。たとえば、
REAL :: アリア(35)
本当に s を探していNaN
て、最新のコンパイラを使用している場合は、ieee_is_nan()
関数でうまくいくはずです。use ieee_arithmetic
または他の組み込みIEEEモジュールのいずれかが必要になると思います。
コンパイラがそれほど新しくない場合は、一般的に実装されているが非標準のisnan()
関数が含まれている可能性があります。
あなたの質問はあまり制約されていません。array
文字列の配列ですか?例えば
character(len=20) :: array(40)
この場合、次のことができるはずです。
do i=1,40
if(array(i).eq."NA")then
exit
else
!do something else
endif
enddo
これが浮動小数点数の配列である場合(およびNAが浮動小数点定数として定義されている場合)、浮動小数点演算が正確になることはめったになく、丸め誤差によって数学的に実際と同等の計算が行われる可能性があるため、注意が必要な場合があります。異なる値に評価します。言い換えれば、この問題の解決策は、実際にはどのように宣言されているかに依存しNA
ますarray
...