我正在嘗試使用fortran編寫一個逗號分隔文件以導入另一個商業軟件包。問題是我的數據列數量未知。我的輸出需要看起來像這樣:具有未知列的格式聲明
a_string,a_float,a_different_float,float_array_elem1,float_array_elem2,...,float_array_elemn
,這將導致一些看起來像這樣的:
L1080,546876.23,4325678.21,300.2,150.125,...,0.125
L1090,563245.1,2356345.21,27.1245,...,0.00983
我有三個問題。其中,我寧願將元素緊緊地分組(可變列寬),我不知道如何在格式語句中定義可變數量的數組元素,以及三個數組元素可以跨越很大的範圍 - 可能是12個數量級。下面的代碼在概念上我想要做什麼,但是變量「n」和缺少列寬度定義拋出(當然)的錯誤:
WRITE(50,900) linenames(ii),loc(ii,1:2),recon(ii,1:n)
900 FORMAT(A,',',F,',',F,n(',',F))
(我應該注意到,N爲固定在運行時)當我寫WRITE(50,*)時,寫語句做了我想要的,除了它是用寬度分隔的。
我覺得這個帖子幾乎回答了我的問題,但我很困惑:SO。現在我有一個awk修復這個問題的shell腳本,但是這個解決方案是......不雅觀的。我可以做一些操作來使輸出成爲一個字符串,然後直接寫出來,但是我寧願儘可能避免使用這個選項。
我在Fortran 90中這樣做,但我想盡量保持我的代碼儘可能向後兼容。
我還應該注意到,我想要緊列的原因是雙重的:其一,這是對下一個程序的期望輸入,以及兩個大小。結果輸出文件中可能有幾百萬行,並有許多列。空間有所作爲!謝謝 – 2013-02-27 17:56:25