C 配列の大きさ: IHXは1日の時間数(=24)、IDXは1月の日数(=31)、 C NXは地点数である。 C NXには、観測地点リストindex.txtに載っている C 観測地点数と等しい値を指定する。 PARAMETER (IHX=24,IDX=31,NX=146) C 配列(入力データ)の宣言: C ISTA (NX): 観測地点番号。東京(大手町)は44132など。 C ITYPE (IDX,NX): 観測地点の種類。 C 降水量のみの場合は1、4要素の場合は4。 C データが存在しない場合は0。 C XX (NX): 観測地点の経度 [度]。 C YY (NX): 観測地点の緯度 [度]。 C IR (IHX,IDX,NX): 降水量 [時間]。 C ID (IHX,IDX,NX): 風向 [16方位、北北東=1、東=4]。 C IW (IHX,IDX,NX): 風速 [m/s]。 C S (IHX,IDX,NX): 日照時間 [時間]。 C T (IHX,IDX,NX): 気温 [℃]。 INTEGER ISTA(NX),ITYPE(IDX,NX), + IR(IHX,IDX,NX),ID(IHX,IDX,NX),IW(IHX,IDX,NX) REAL XX(NX),YY(NX),HH(NX), + S(IHX,IDX,NX),T(IHX,IDX,NX) C 欠損値: データが無効のとき、IMISS、RMISSで指定された値が格納される。 C 整数型の場合はIMISS、実数型の場合はRMISSである。 PARAMETER (IMISS=999,RMISS=999.9) C サブルーチンAMDIDによって、観測地点リストを読みこむ。 CALL AMDID (NX,ISTA,XX,YY,HH) C 年月日、時刻を指定する。 C 入力を求めるメッセージを標準出力に書き出す。 WRITE(6,*) 'Year, Month, Day, Hour ?' C READ文で入力値を読みこむ。 READ (5,*) IYY,IMM,IDD,IHH C サブルーチンAMDHRによって、 C 指定された年、月の観測データ(時別値)を読むこむ。 C ※サブルーチンAMDHRは、IYY、IMMで指定された年、月について C データを読みこむ。 CALL AMDHR + (IHX,IDX,NX,ISTA,IYY,IMM,IMISS,RMISS,ITYPE,IR,ID,IW,S,T) C 出力ファイルを開く。 C 機番は10以降の番号を指定する。 C STATUSは書き出しの場合は'UNKNOWN'を指定する。 C FORMはテキストファイルの場合は'FORMATTED'を指定する。 OPEN(10,FILE='output.txt',STATUS='UNKNOWN', + FORM='FORMATTED') C ここからDOループ11が始まる。 C 各地点について、結果を出力する。 DO 11 N=1,NX C データが存在する場合だけ、つまり、ITYPE(IDD,N)がゼロでない場合だけ、 C 結果を出力する。 IF (ITYPE(IDD,N).NE.0) THEN C 地点番号、緯度、経度、降水量、気温を出力する。 WRITE(10,'(1X,I5,1X,F8.3,1X,F8.3,1X,I3,1X,F5.1)') + ISTA(N),YY(N),XX(N),IR(IHH,IDD,N),T(IHH,IDD,N) ENDIF C ここでDOループ11が終了する。 11 CONTINUE C ファイルを閉じる。 CLOSE(10) STOP END