我(嘗試!)維護一個非常大的一組FORTRAN代碼。此代碼包含分散在各處的WRITE語句:捕獲Fortran中的寫例程
WRITE(NOUT,2050)DAMPING
2050 FORMAT(3X,'DAMPING =',F6.2,'%')
我想要做的就是控制這些WRITE語句。原因是我們需要創建一個額外的輸出文件(有一些修改),並且複製語句的工作量太大。相反,我希望對它們進行修改......一種方式可能是有我自己寫程序:
WRITEF(NOUT,2050)DAMPING
2050 FORMAT(3X,'DAMPING =',F6.2,'%')
--------------------------------
SUBROUTINE WRITEF(objectToWrite)
...
Code to write out object
...
END
另一種可能是把寫語句作爲參數:
WRITEF(WRITE(NOUT,2050)DAMPING)
2050 FORMAT(3X,'DAMPING =',F6.2,'%')
--------------------------------
SUBROUTINE WRITEF(characterToWrite)
...
Code to write out character
...
END
但不幸的是我缺乏FORTRAN知識來知道這是否可能,以及如何實現它!
第二個絕對不可能,因爲寫入不是返回值的函數。看起來你只能選擇重構代碼,以便在完成計算後將寫入語句收集到幾個子程序中。 – ja72 2014-11-21 15:17:55
感謝您的反饋,但不幸的是代碼編寫的方式是不可能的 - 值被寫入文件,然後在計算正在運行時被遺忘/覆蓋... – qu1ckdry 2014-11-21 17:17:06
請注意,格式只是問題的一部分。 'write'語句通常帶有任意長度的任意類型變量列表。有沒有乾淨的方式來使自己的功能,採取這樣的參數列表。你想做什麼*可能會成爲預處理器的工作。 – agentp 2014-11-21 22:56:23