次のモジュールを同僚から取得しました。私は派生データ型のデータを返すプログラムを作成しようとしています。私は、派生したデータ型に関する経験はありません。プログラムのTABLE(ファイルの終わり)を試しましたが、何も取得できませんでした。どのようにして派生データ型を印刷または書き出すことができますか?ネストされた派生データ型の印刷/書き込み
C=======================================================================
MODULE mod_AsosCommDates
C=======================================================================
IMPLICIT NONE
INTEGER, PARAMETER :: NCommDates=2
TYPE ASOSData
CHARACTER (LEN=40) :: City
CHARACTER (Len=60) :: Location
CHARACTER (LEN=2) :: State
INTEGER :: IWBAN
CHARACTER (LEN=4) :: INTCALL
CHARACTER (LEN=3) :: USACALL
REAL :: DDLAT
REAL :: DDLON
CHARACTER (LEN=8) :: COMMISDATE
CHARACTER (LEN=3) :: PUB
CHARACTER (LEN=3) :: SITETYPE
REAL :: ANEM_FEET
REAL :: ANEM_METERS
END TYPE ASOSData
TYPE (ASOSDATA), DIMENSION(NCommDates) :: ASOSCommDates
CONTAINS
SUBROUTINE InitAsosCommInfo (ASOSCommDates)
TYPE (ASOSDATA), DIMENSION(NCommDates) :: ASOSCommDates
ASOSCommDates(1) = ASOSDATA("ANCHORAGE","LAKE HOOD SEAPLANE BASE",
& "AK",26491,"PALH","LHD",61.17,-149.96,"19980122","NO","FAA",
& 33.00,10.05)
ASOSCommDates(2) = ASOSDATA("ANCHORAGE","MERRILL FIELD AIRPORT",
& "AK",26409,"PAMR","MRI",61.21,-149.85,"19971015","NO","FAA",
& 16.00,4.87)
END SUBROUTINE InitAsosCommInfo
END MODULE mod_AsosCommDates
PROGRAM TABLE
USE mod_AsosCommDates
CALL InitAsosCommInfo(ASOSCommDates)
PRINT *,ASOSCommDates(1)%ASOSData%City
END PROGRAM TABLE
投稿EST 10:54で2016年5月25日を編集し、もともと投稿 例は、この記事の質問に関連したものと異なるエラーが発生しました。 NCommDates=2
CALLラインにNCommDates=886
から変更
NCommDates
は、コンパイル時にCALL InitAsosCommInfo(ASOSCommDates)
エラーへCALL InitAsosCommInfo
から変更されている:
$ gfortran 2.for
2.for:48.39:
PRINT *,ASOSCommDates(1)%ASOSData%City
1 Error: 'asosdata' at (1) is not a member of the 'asosdata' structure
実際にあなたが何も得ていないのは本当に奇妙です。実際にコンパイル時のエラーメッセージが表示されています。 「何もない」とはどういう意味ですか? –
コンパイルの問題は、CALL文が正しくないためです。当初は 'CALL InitAsosCommInfo'でした。 'InitAsosCommInfo(ASOSCommDates)'を呼び出すように編集されました。しかし、私の最初の質問は、Alexander Vogtのコメントによって答えられました。 – rjss
あなたの投稿に常にエラーメッセージを含める必要があります。とにかく、 'PRINT *、ASOSCommDates(1)'も試みてください。 –