検討
INTEGER,DIMENSION(3) :: NumberVector
と
INTEGER :: NumberVector(3)
これらの2つの宣言の間に何か違いはありますか、それともまったく同じですか?(つまり、考えられるあらゆるコンテキストとバリエーションで、たとえば、これら2つが同一である場合、サブルーチンの入力パラメーターの1つとして暗黙のサイズの配列を宣言するとどうなりますか?それでもどちらが無関係でしょうか?使った?)
検討
INTEGER,DIMENSION(3) :: NumberVector
と
INTEGER :: NumberVector(3)
これらの2つの宣言の間に何か違いはありますか、それともまったく同じですか?(つまり、考えられるあらゆるコンテキストとバリエーションで、たとえば、これら2つが同一である場合、サブルーチンの入力パラメーターの1つとして暗黙のサイズの配列を宣言するとどうなりますか?それでもどちらが無関係でしょうか?使った?)
はい、同じです。想定された、延期された、そして可能な限りの形であっても。
このDIMENSION
属性は、コードの明確さを向上させ、同じタイプの複数の配列を宣言するときにコードを節約できるようにするために、Fortran 90に追加されました(科学計算では珍しいことではありません)。
REAL :: mat1(10,20), mat2(10,20), mat3(10,20), mat4(10,20), mat5(10,20)
書くことができます
REAL, DIMENSION(10,20) :: mat1, mat2, mat3, mat4, mat5
これにより、ソースコードのサイズとコンパイル時間が短縮されるだけでなく(解析が少なくなり、現在はそれほど重要ではありません)、宣言のいずれかで間違いを犯す可能性が低くなります。それ以外の場合、両方の形式は等しく、宣言された変数はプログラム内のどこでもまったく同じように動作します。