2016-10-24 5 views
1

私は、フォーマットされていない直接アクセスファイルを書き込むFortranコードを持っています。 -フォーマットされていない直接アクセスファイルの移植性

    • まずプラットフォームがWindows(2009周りのバージョンのIntelコンパイラを使用して、プログラムの32bit版)です:問題は、私は別のプラットフォームに切り替えたときのサイズとファイルの内容が変化することです第2のプラットフォームはLinux(gfortranコンパイラv4.9.0のプログラムの64ビット版)です。

    残念ながら、Linuxで作成されたファイルはウィンドウから読み取ることができません。 LINUXのファイルは5〜6倍小さくなります。しかし、書き込まれたレコードの総数は同じであるようです。私は、両方のファイルを16進エディタで開きましたが、主な違いは、Windows版のファイルには多くのゼロが存在することです。 LINUXで全く同じファイルを生成する方法はありますか?私は、コマンドで読み込む WRITE(IAST,REC=IRC) (SNGL(PHI(I)-REF), I=IBR,IER)

    それが助け場合は、ここで両方のファイルを見つけることができます:OPEN(IAST,FILE=ASTFILR,ACCESS='DIRECT',FORM='UNFORMATTED',RECL=80)

    私はコマンドで書く:https://www.dropbox.com/sh/erjlf5sps40in0e/AAC4XEi-p4nnTNzhyai_ZCZVa?dl=0

    を私はコマンドでファイルを開きます:READ(IAST,REC=IRC,ERR=999) (PHIS(I), I=1,ISTEP) PHISREAL*4アレイ

  • +1

    一つの関連例http://stackoverflow.com/questions/8751185/fortran-、構文が何であるかわからないんだけどunformatted-file-format –

    +0

    最大の移植性のためにストリームアクセスを使用することをお勧めします。 –

    +0

    頂きましてありがとうございます、残念ながら私はその投稿を逃しました。もう1つ質問:与えられたバイナリファイルに対して、書き込まれたRECLの値を見つけることは可能ですか? – helios21

    答えて

    1

    問題インテルFortranは、デフォルトで、RECL =がワード単位で、GFortranがバイトを使用すると指定しています。バイト単位を使用するために使用できるインテルFortranコンパイラー・オプションがあります。 Linuxではオプションは、Windows用

    -assume byterecl 
    

    であることを私は多分

    /assume:byterecl 
    
    のようなもの
    関連する問題