作者ybchen (惡魔也會哭)
看板Fortran
標題[問題] Write格式可浮動化嗎
時間Fri Mar 13 17:31:32 2009
目前寫程式中,為了將輸出的數據做規則排列
所以有將WRITE的格式做設定
但是有其中一組輸出,會因為初始輸入的計算範圍,使得數據組數有變動
所以有利用字串的方式來記錄調整格式的範圍
其中主要的程式碼如下
.................
Write ( x,'(I2,A12)' ) N_Material-2, 'I5,ES17.10E2'
.................
Write(51,'(x)') thick(:,j), R*100
.................
如上所寫的,我已經將x設為字串,利用write將他寫成格式化輸出的寫法
其中,前幾項都是整數,但是會隨著初始輸入有不同組數
所以 N_Material-2 就是需要列出的組數
例如 N_Material-2 = 3 ,那 x = 3I5,ES17.10E2
下面那一排,即是利用x的格式輸出需要的數據
雖然compile可以過,但是執行程式後,就發生
forrt1: serve <60>: infinite format loop unit 51, file D:\xxxxxxxx
這樣的錯誤訊息
不過如果是 Write(51,'(3I5,ES17.10E2)') thick(:,j), R*100
這樣就可以跑完
也就是直接把format寫完是可正常執行,但若設定成字串組就會錯誤
剛剛試了一下 發現真的不行 x是恰好為format指令參數的其中一個
換成h,就連compile都過不去,也就是說似乎一定要直接寫format指令
請問有什麼寫法可以克服這個問題嗎?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.33.151
1F:→ charlesdc:你先把X印出來看看是否是你要的 這樣看起來是沒問題 03/13 18:39
2F:→ ybchen:這我有確定 x輸出是正確的 03/13 18:46
※ 編輯: ybchen 來自: 140.112.33.151 (03/13 18:57)
3F:→ charlesdc:試試 write(x(1:2),'(I2)')N_Material-2 03/13 19:01
4F:→ charlesdc:記得X要改成 x="??I5,ES17.10E2" 03/13 19:02
5F:→ charlesdc:在不行我就不知了...這方法是可行的但錯在哪我不知道 03/13 19:04
6F:→ charlesdc:把X換掉然後寫嚴謹點看看write(*,FMT=變數) x是空格 03/13 19:08
7F:→ charlesdc:Write(51,'(x)')這邊表示錯了 03/13 19:16
8F:→ charlesdc:我也搞錯了. "()"這個要搞到字串裡x="(??I5,ES17.10E2)" 03/13 19:22
9F:推 jsb:Write ( x,'(I2,A12)' ) N_Material-2, '(I5,ES17.10E2)' 03/14 01:34
10F:→ jsb:Write (51,x) thick(:,j), R*100 03/14 01:35
11F:→ ybchen:感謝各位 我找到方法了 03/15 15:12
12F:→ ybchen:Write(h,'(A1,I2,A13)') '(',N_Material-2,'I5,ES17.10E2)' 03/15 15:15
13F:→ ybchen:Write(51,h) thick(:,j), R*100 03/15 15:15
14F:推 jsb: 我就是這個意思啦. . . 不小心寫錯了真抱歉。 03/16 00:39