ファイル入力を使ってfortran77プログラムを実行するには?

ファイル入力を使ってfortran77プログラムを実行するには?

端末で fortran77 プログラムを実行します。

./program

そしてプログラムには入出力ファイルが必要です。ファイルに入力ファイルと出力ファイルの名前がある場合(2つの列に分割されている)、端末に何を書くべきですか?ファイルに名前があるすべての行でこのプログラムを実行したいと思います。

または - パラメータなどの入力情報を使用してプログラムを実行する方法は?

または、スクリプトに直接ファイル名を書き込む方法はありますか?変える

READ(+,'(A)') OUT

答え1

次のプログラムファイルを作成しました。prog.f

       program test

       character IN*30,OUT*30,line*80

       PRINT *,'Input file '
       READ(*,'(A)') IN
       OPEN(1,FILE=IN,STATUS='OLD')
       PRINT *,'Output file?'
       READ(*,'(A)') OUT
       OPEN(2,FILE=OUT,STATUS='NEW',BLANK='ZERO')


       read (1,'(a80)') line
       write (2,*) "I read ", line
       end

コンパイルしてリンクする

gfortran prog.f -o prog

入力ファイルにテキスト文字列を入れました。

echo "Hello World" > in

inoutその後、プログラムに入出力ファイルの名前を送信します。

$ <<< 'in
out' ./prog
 Input file 
 Output file?

そして、出力ファイルを確認してください

$ cat out
 I read Hello World                                                                     

<<<で動作します。よりポータブルなパイプをbash好むかもしれません。echo

$ rm out
rm: remove normal file 'out'? y

$ echo 'in
out' | ./prog
 Input file 
 Output file?
$ cat out
 I read Hello World                                                                     

答え2

おそらく幸運なら

<infile ./program  >outfile

動作します。ファイル記述子を提供するようにリダイレクトします。オプション/パラメータ? ? ?


私たちの地球人がそのような記事を書くと...

$ <77in cat >77.out
$ cat 77in >77.out

77in(これはにコピーされました77.out。)

...このFortran77プログラム/コマンドは次のようになりたいです。オペランド入力ファイル/ストリームから1行ずつ:

$  <77.io cat
77in
77.out

これがcat別の場合は、最初の行を入力ファイル(「hello \ nworld」など)として解析し、2行目を生成するファイルに解析します。

これはより新しくて簡単な方法のようです...


cp -a dir1 dir2 dest今のように長いパラメータリストの代わりに<in_list cpa77

ただし、modernなどの追加ファイルが必要ですcpio

<filelist cpio -o >files.cpio。もちろんcpioSTDINラインだけが必要です:

find . | cpio -o >files.cpio

cpio機能のため、この特別な呼び出し構文を使用すると、多くのファイルを処理できます。注文半分。同じtarですが、異なる方法で)

本質的にUnixの特徴の1つがあれば、すぐにシェルのコマンドに制御とデータを提供できる柔軟性です。私が言ったように:結局良いQです! (答えてくれてありがとう!)

関連情報