我正在尝试使用 gfortran 4.4.6 编译别人的 FORTRAN 代码。最初的编码器使用了 Compaq FORTRAN 之类的东西。
有问题的代码应该读取像“foo.txt”这样的文件名并创建一个名为“foo_c.txt”的新文件:
file_label_end = SCAN(文件名, '.') - 1 WRITE (output_filename,5) 文件名 5 格式 (A<file_label_end>, '_c.txt' )
gfortran 抱怨字符说明符的左尖括号。也就是说,他有“A<(值为 3 的变量)>”,而不是“A3”。我找不到任何关于从变量中插入格式宽度的信息......这可能吗?如果没有,解决此问题的最佳方法是什么?
更新:
这似乎正在工作(编译):
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)
我试图通过创建一个格式字符串来解决这个问题:
写(fmt12,'(I0,A4)')n-1,'F10.5' !12 格式 (fmt12) 12 格式 (fmt=fmt12)
但是“fmt”中的“t”被标记为“格式字符串中需要非负宽度”的错误