我正在嘗試使用gfortran 4.4.6編譯別人的FORTRAN代碼。原來的編碼器使用了Compaq FORTRAN之類的東西。將字符串長度插入fortran格式說明符
有問題的代碼應該讀像「foo.txt的」文件名和創建一個名爲「foo_c.txt」新文件:
file_label_end = SCAN(filename, '.') - 1 WRITE (output_filename,5) filename 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 FORMAT (<n-1>F10.5) ... READ(1,12) (cat_parm (blk,j), j = 1,n-1)
,我試圖通過創建來解決格式字符串:
write(fmt12,'(I0,A4)') n-1, 'F10.5' !12 FORMAT (fmt12) 12 FORMAT (fmt=fmt12)
但在「格式化」的「T」獲取有關
非常有幫助。另外,SCAN的BACK選項很有用。但我試圖將這個應用到程序中的另一個實例。我創建了一個包含格式的字符串變量;當我使用它(「12 FORMAT(fmt12)」或「12 FORMAT(fmt = fmt12)」)時,編譯器將該行標記爲「格式字符串中需要的非負寬度」(它實際上標記了fmt中的't'兩種情況])。 –