2016-04-06 6 views
2

上のファイルを開くと、私は、デフォルトではユニット番号5は、キーボードからの入力に使用されることを知っているユニット5又は6

OPEN(5,FILE='WKDAT.dat', STATUS='OLD') 
OPEN(6,FILE='WKLST.dat', STATUS='UNKNOWN') 

次のようにIは、読み出し/書き込み動作は、Fortranコードスニペットで起こっていますユニット番号6を使用して画面に表示されます。また、私は*を使用することができます。

しかし、上記のFortranコードユニット番号は5であり、ファイル名「WKDAT.dat」が与えられている。これは、データが "WKDAT.dat"ファイルから読み取られていることを意味します。また、コードユニット番号6があり、ファイル名「WKLST.dat」が与えられている。これは、データが "WKLST.dat"ファイルに書き込まれていることを意味します。 私の理解は正しいですか?

私の基本知識通り: ユニット番号5はキーボードからの入力を受け付けるためにのみ使用されます。&ユニット番号6はコンソールに印刷するために使用されるため、ファイルは必要ありません。しかし、コードスニペットには、ユニット番号5と6とファイル名の両方があります。

だから、両方のは、彼らがI/Oは、ファイル名に(あなたが選択)UNIT番号を関連付ける必要がありますファイルにある場合は、」次のことを言及している。このリンクhttp://www.oc.nps.edu/~bird/oc3030_online/fortran/io/io.htmlで:(

と矛盾している。すべてのユニットを使用してください一部のコンピュータでは、一部のユニット番号がコンピュータのオペレーティングシステム用に予約されています。 "

+1

「ユニット番号5は、キーボードからの入力のみを使用しています。」...この仮定は間違っています。 Stdinとstdoutのための5と6は、fortranの歴史的な練習であり、ほとんどの初心者の本はこの練習を強調する。しかし....その必要性ではなく、その練習です。 – BaRud

答えて

2

Fortranにはマジックユニット番号はありません。Fortran規格では、5,6、あなたは特別な目的のために使用されています。あなたはopen文を自由に使って有効なユニット番号をファイルに関連付けることができます。あなたが言うように、キーボードと画面に再関連付けされています。今ではオープンステートメントを使用して関連付けを変更することができますが、それが原因で発生する可能性のある混乱を防ぐことはできますので、これを避けて10以上のユニット番号を使用することをおすすめします。また、5と6は、デフォルトの入出力デバイスに関連付けられていることが保証されていないので、私はそれらの使用に対して推奨します*または、より現代的なコードでは、iso_fortran_env組み込みモジュールのinput_unitoutput_unitおよびerror_unit

要するに、あなたは正しい考えを持っています。私はあなたが混乱しているのに驚くことはありません。標準で

2

何も実際には、標準入力と標準出力がしばしばが事前に接続のFortran 2008からモジュールiso_fortran_env

5及び6の定数

が含まれているが、単位 56は特別な意味を持っていると言うん
INPUT_UNIT 
OUTPUT_UNIT 
ERROR_UNIT 

標準入力、標準出力、標準エラーが接続されている装置番号です。これらは5と6と異なることが許されます。

使用中のユニットでファイルを開くと、そのユニットは新しいファイルに関連付けられます。

例えばCray Fortran manualは言う:

ユニット番号100、101、及び102は、永久的にそれぞれ 標準入力、標準出力、および標準エラーファイル、 に関連付けられています。あなたはユニット5または6標準入力と標準出力としていくつかの他のファイルを開くと、まだ彼らは事前に接続されていると、彼らは閉鎖されることはありませんいくつかの他のユニットを持っていることを意味し

関連する問題