gfortran 4.4.6 を使用して、他の人の FORTRAN コードをコンパイルしようとしています。元のコーダーは、Compaq FORTRAN のようなものを使用していました。
問題のコードは、「foo.txt」のようなファイル名を読み取り、「foo_c.txt」という名前の新しいファイルを作成することになっています。
file_label_end = SCAN(ファイル名, '.') - 1 WRITE (output_filename,5) ファイル名 5 FORMAT (A<file_label_end>, '_c.txt' )
gfortran は、文字指定子の開き山かっこについて文句を言います。つまり、"A3" ではなく、"A<(値が 3 の変数)>" です。変数からのフォーマット幅の補間に関する情報が見つかりません...これは可能ですか? そうでない場合、これを修正する最善の方法は何ですか?
アップデート:
これは機能しているようです(コンパイル中):
file_label_end = SCAN(par_filename, '.', .TRUE. ) + 1
output_filename = par_filename(1:file_label_end) // '_c.par'
しかし、後で同様のケースがあります:
12 フォーマット (<n-1>F10.5) ... READ(1,12) (cat_parm (blk,j), j = 1,n-1)
フォーマット文字列を作成して修正しようとしました:
write(fmt12,'(I0,A4)') n-1, 'F10.5' !12 フォーマット (fmt12) 12 フォーマット (fmt=fmt12)
ただし、「fmt」の「t」には、「フォーマット文字列に負でない幅が必要です」というエラーが表示されます