私の質問をすばやく提示するための簡単なデモンストレーションコードを記述します。ここにコードがありますが、これはうまく構築できません。select case structure内で引数を宣言する
main.f90の
PROGRAM test
IMPLICIT NONE
INTEGER :: a
a = 1
CALL sub(a)
END PROGRAM
sub.f90
SUBROUTINE sub(a)
IMPLICIT NONE
INTEGER :: a
SELECT CASE(a)
CASE(1)
INTEGER :: b,c
b = a
c = a*2
CASE(2)
INTEGER :: b(4),c(4)
b(:) = a
c(:) = a*2
END SELECT
END SUBROUTINE
私がコンパイルしようとしましたが、エラーショー '予期しないデータ宣言文は、' サブルーチンファイルで発生します。 SELECT CASE構造体内で引数型を宣言できないということですか?問題は、メインプログラムでaの値を定義し、サブルーチンsub(a)に渡したいということです。引数の型bとcはaで決める必要があるため、事前に決定することはできません。私はまた、bとcの値をメインプログラムに戻したいと思います。私はそれをどうやって行うのか分かりません。だから私はこれをどのように達成できますか?ありがとう。
を持っていますか?もしそうなら、 'block'構造を使うことができます。 – jlokimlin
ありがとうございます。私は実際にFortran 90を使用してプログラムにいくつかの変更を加えようとしているので、潜在的なトラブルを防ぐためにそれをそのままにしておきたいかもしれません。 – Ruizhi
私はあなたの位置を理解していません。削除された機能を使用していない標準準拠のFortran 90プログラム(すでに廃止されたと宣言されているため、ほとんど使用されていない)は、Fortran 2015に準拠しています。Fortran 90は30年以上前であり、現代のプログラミング慣行。どのコンパイラを使用していますか? – jlokimlin