ファイルの先頭から 40000 バイト離れた場所で読み取るなど、バイナリ入力ファイルから指定されたバイトでデータを読み取る必要がある問題に遭遇しました。ファイルへの直接アクセスを使用する予定です。引数で指定されたのと同じサイズ.recl
誰でも実行可能な解決策を提供できます.cのような一部のプログラミング言語は、指定されたバイトにジャンプできる関数を提供します.
1 に答える
Fortran 2003 標準では、フォーマットされていないストリーム アクセスが導入され、ほぼ正確にこれを行うことができます。ファイルが適切に開かれると、関連する書き込みステートメントで POS 指定子を使用できます。この Fortran 2003 機能のサポートは、積極的にサポートされている Fortran コンパイラの間でかなり広まっています。コンパイラは 1 バイトのファイル ストレージ ユニットを使用する必要がありますが、私が認識しているすべてのコンパイラはこれを行っています (これは標準でも推奨されています)。
それ以外の場合、最も近い標準の Fortran 90 アプローチは、読み取られるデータの要素の目的の位置とサイズの妥当な共通係数であるレコード長でフォーマットされていない直接アクセスを使用することです。たとえば、ファイルから 8 バイトの実数を読み取る場合、レコード長 8 でうまくいく可能性があります。レコード番号 5000 から読み取りを開始します。これには、Fortran プロセッサのファイル記憶単位がバイト (共通) であることが必要です。 、おそらくコンパイル オプションを使用して)、フォーマットされていない直接アクセス用のファイルにレコード区切り文字または類似のものが存在しないこと (ほとんどの場合、おそらくコンパイル オプションを使用する場合)。