2015-01-01 97 views
1

我試圖動態地創建輸出格式,因爲要打印的變量數量可以動態變化。我已經通過以下兩種方法進行了一些實驗(請參閱下文中的內容),但它們都導致瞭如下錯誤消息:動態輸出格式設置

forrtl:錯誤(63):輸出轉換錯誤,單元1016,file/panfs/ROC/Node_ 16.txt

第一種方法使用一個字符串來指定輸出格式,例如,

real a(4) = [1 2 3 4] 
int size = 4 
write(string,'(a,i3,a)') '(a,',size,'(f9.4))' 
write(*, string) a(:) 

第二種方法是什麼,我只是從互聯網上,其中只佔用一個吸取行,但它也沒有工作:

write(*,'(a,<size>f9.4)') a(:) 

請幫我使用此格式設置。謝謝。

編輯:我發現了問題的罪魁禍首。在我的真實項目中,數組「a」的某些元素非常大,因此f9.4不適合顯示完整數組。爲了解決這個問題,我用e11.3之類的東西替換了f9.4。

回答

3

Fortran最近添加了*作爲無限制格式的中繼器。例如,'(*(2X, F3.1))'這比動態格式更易於使用。

1

您不需要提供確切數量的值,表示更多可以。正常的方法是使用足夠大的值,如

 '(a,999f9.4)' 

在Fortran 2008中,您可以使用M.S.B的特性。顯示*999(f9.4)

如果您需要動態字符串用於其他目的,請使用連接運算符//