1
以下に列挙するFortran関数は、ifort 11.1を使用して期待通りにコンパイルして実行します。しかしのgfortran 4.6戻るコンパイラエラー:Fortranで派生型ポインタと多相ターゲットを使用する
THIS_NML => THIS
Error: Different types in pointer assignment at (1); attempted assignment of CLASS(UNIT) to TYPE(UNIT).
Fortranコード:
FUNCTION PROCESS_COMMAND(THIS, CMD, DATA) RESULT(RET)
CLASS(UNIT), INTENT(INOUT), TARGET :: THIS
CHARACTER(LEN = *), INTENT(IN) :: CMD
CHARACTER(LEN = *), INTENT(IN) :: DATA
CHARACTER(LEN = 200) :: STRING
INTEGER :: IOS
TYPE(UNIT), POINTER :: THIS_NML
! CREATE A NAMELIST
NAMELIST /VARS/ THIS_NML
THIS_NML => THIS
RET = 0
STRING = '&VARS THIS_NML%' // TRIM(CMD) // ' = ' // TRIM(DATA) // ' /'
! READ CMD AND DATA
READ(STRING, NML=VARS, IOSTAT=IOS)
RET = IOS
END FUNCTION PROCESS_COMMAND
ネームリストの多型オブジェクトを使用して作成することができないので、派生型ポインタTHIS_NML
は、名前リストを作成するために使用されています。どのようにGFortranでこの作業をするためのアイデアはありますか?
ありがとう!これは、gfortran 4.6とifort 11.1の両方でコンパイルされ実行されます。 – mannyburet