Fortran新手在這裏,我被要求使用Salford/Silverfrost編譯器(原始開發人員過世)編寫Fortran 77編寫的舊Fortran代碼庫。Fortran COMMON塊初始化
最初的開發者使用命名COMMON
塊廣泛(模擬全局變量,AFAIU)和他使用EQUIVALENCE
(重新)初始化塊需要像這樣的代碼片段時:
IMPLICIT REAL*8 (A-H,O-Z)
COMMON/COMMF2D/
* ASCN(0:99,0:20,0:4)
*,FEMPTY2(8700)
DIMENSION KLCKF2D(38400)
EQUIVALENCE (KLCKF2D,ASCN)
DO I= 1,38400
KLCKF2D(I)= 0
END DO
這是一個可接受的編程練習還是隻是一個黑客?另外,由於我試圖將代碼移植到GFortran,它是否便攜? (據我所知,像REAL*8
聲明只是提示編譯器,並且不保證)
說到可移植性,對於類型大小(如REAL * 8)或類型類型(如REAL(KIND = 8)),不使用硬編碼常量值的代碼是可移植的。在便攜式Fortran 90+代碼中,您應該調用'SELECTED_REAL_KIND()'以獲得保證一定精度和指數範圍的類參數。 – 2012-08-08 16:34:55