dポイントプレゼントキャンペーン実施中!

fortran77で複数のファイルの読み込み

現在fortran77のプログラムを勉強しております。
ファイルが複数あり、すべてのファイルを読み込みたいのですが、ファイルの数がたくさんあるため、プログラムの行数が多くなってしまいます。
do ループで次々とファイルを開くプログラムを考えているのですが、思いつきません。
どなたか考え方でもいいので、教えてください。

ちなみに私が考えたプログラムは、


open(10,file='C:\FORTRAN\100.txt',status='old')
open(11,file='C:\FORTRAN\121.txt',status='old')
open(12,file='C:\FORTRAN\144.txt',status='old')
open(13,file='C:\FORTRAN\169.txt',status='old')
open(14,file='C:\FORTRAN\196.txt',status='old')
open(15,file='C:\FORTRAN\225.txt',status='old')
・・・。

これを do ループで次々に開くことを考えると、

character*3 A(10)
do 100 i=1,10
A=i*i
open(i,file='C:\FORTRAN\A.txt',status='old')
100 continue

・・・

みたいな感じです。
' 'の中の一部だけを変えたい場合のcharacter 文の使い方がいまいちよく分かりません。

A 回答 (2件)

> I変換の場合は、I3とか4I5のように表すことしかできないと理解しております。



I変換はrIw.mの形式です。
このうちrは反復数で,wは欄幅を意味します。どちらも正の整数です。
mは負でない整数で,欄の最小桁数を意味します。入力のときには無視されます。
ゼロでない最初の桁まで先行するゼロを必要な数だけ強制的に挿入します。
例えば4をI3.3で出力すれば004となりますが,I3で出力すればbb4となります。(bは空白の意味)
mを省略すればm=1と解釈されます。だから0をI3.0で出力すればbbbとなりますが,I3で出力すればbb0となります。

ついでに

> (本来は、装置番号が入るという風に理解しておりますので、「何となく」ですが)

外部ファイルに対しては,それと装置番号を結び付けるためにOPEN文が必要ですが,内部ファイル(文字変数など)に対してはOPENせずに直接に入出力が可能です。

また装置番号に対しては何も触れませんでしたが,5,6,7番には事前に標準入力,標準出力,標準エラーと接続されています。これらをOPEN文でファイルに割り当てることもできますが,元の接続先には再接続出来なくなるので自分のプログラムでは5,6,7番をOPENするのは避けた方が良いでしょうね。
    • good
    • 0
この回答へのお礼

たびたび、ご回答誠にありがとうございます。
fortranは「初歩的なプログラムだから簡単」と言われ、勉強しておりますが、結構奥が深いんですね。

また何かある疑問が場合は、よろしくお願いします。

お礼日時:2010/11/05 22:38

'C:\FORTRAN\A.txt'は''で囲まれているので文字列ですね。

その中でAと書いても,それは上で宣言したAという文字列型の変数とは何の関係もありません。
多分,やりたいことはこんな感じ。
character*3 A
do 100 i=1,10
WRITE(A,'(I3.3)') i*i
open(i,file='C:\FORTRAN\'//A//'.txt',status='old')
100 continue

この回答への補足

すいません。どうしても分からないことがあるので、再度質問させていただきます。

open(i,file='C:\FORTRAN\'//A//'.txt',status='old')
にある//A//の//は’連結演算子’と呼ばれるものであることは分かりました。
ただ
WRITE(A,'(I3.3)') i*i
について、質問があります。
write(*1,*2)
において、
*1はどこに出力するかということなので、Aにi*iの数字が入るのは何となく分かります。
(本来は、装置番号が入るという風に理解しておりますので、「何となく」ですが)
ただ、*2はformat文なので、write(*1,*2)は
write(A,1000)i*i
1000 format(I3.3)
と同じだと思っております。
format文の I3.3 は I 変換するための物で、i*iが整数であることを表していると思って下ります。
しかしながら、I変換の場合は、I3とか4I5のように表すことしかできないと理解しております。
そうすると、I3.3とはどういう意味なのか分かりません。
I3.3の意味を教えてください。

補足日時:2010/11/05 14:54
    • good
    • 0
この回答へのお礼

いつも初歩的な質問に対して、親切に教えていただきまして、ありがとうございます。
少し分からないところもあるため、(自分で考えても分からない場合は)「補足欄」で再度質問するかもしれませんが、よろしければ、その時またお願いいたします。

お礼日時:2010/11/04 22:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!