データの開発者がFortranで書かれたプログラムを提供するバイナリファイルを開く必要があります。私はFortran言語が新しくなっていますが、Rで新しいプログラムを書くのではなく、準備プログラムを使用することを試してみる価値があると思います。データファイルで提供されたFortranコードを実行するとエラーが表示されます
開いているファイルはthis,です。データを開くコード行はhereです。データには開始時に576バイトのヘッダー行が含まれ、thisを使用して開くことができます。
私がしたこと: 新しいフォルダにバイナリファイルを保存しました。このフォルダには、それを開くソフトウェアのコードも保存されています。 GNU-Linuxの端末から、後者のフォルダ(cd /home/urs/../
)に、端末を設定した後、私は実行します。
# compile the program using gfortran
gfortran read_v2.2_month.f -o read_v2.2_month
# make file executable
chmod +x read_v2.2_month
# run the program
./read_v2.2_month
しかし、私は次のエラーを取得する:
Error: read error 5016 on file gpcp_v2.2_psg.1987
EDIT: のFortranのコードヘッダーの最初の行を除くデータを開くには、次のようになります。
OPEN (UNIT=10, FILE='gpcp_v2.2_psg.1987', ACCESS='DIRECT',
+ FORM='UNFORMATTED', STATUS='OLD', RECL=144,
+ IOSTAT=iret)
IF (iret .NE. 0) THEN
WRITE (*, *) 'Error: open error', iret,
+ ' on file gpcp_v2.2_psg.1987'
STOP
END IF
C
C Compute the number of records to skip, namely 1 for the header
C and 72 for each intervening month.
C
nskip = 1 + (month - 1) * 72
C
C Read the 72 rows of data and close the file.
C
DO 10 j = 1, 72
READ (UNIT=10, REC=j+nskip, IOSTAT=iret)
+ (data (i, j), i = 1, 144)
IF (iret .NE. 0) THEN
WRITE (*, *) 'Error: read error', iret,
+ ' on file gpcp_v2.2_psg.1987'
STOP
END IF
10 END DO
CLOSE (UNIT=10)
C
C Now array "data" is ready to be manipulated, printed, etc.
C For example, dump the single month as unformatted direct:
C
OPEN (UNIT=10, FILE='junk', ACCESS='DIRECT',
+ FORM='UNFORMATTED', RECL=144, IOSTAT=iret)
IF (iret .NE. 0) THEN
WRITE (*, *) 'Error: open error', iret,
+ ' on file junk'
STOP
END IF
DO 20 j = 1, 72
WRITE (UNIT=10, REC=j, IOSTAT=iret)
+ (data (i, j), i = 1, 144)
IF (iret .NE. 0) THEN
WRITE (*, *) 'Error: write error', iret,
+ ' on file junk'
STOP
END IF
20 END DO
CLOSE (UNIT=10)
STOP
END
の複製です。コードを見る必要があると思います。 –
私はあなたのリンクに従っていません。ここに最小限の再現コードを投稿してください。 – Ross
BTWエラー5016は '5016 LIBERROR_SHORT_RECORD'です –