Fortran語言的自由格式與固定格式

Fortran語言的自由格式與固定格式的圖1

圖片9.png

        Fortran是Formula Translation的縮寫,是一種主要用于數值計算的編譯型語言,也是世界上第一個被正式推廣使用的高級語言。它1954年被提出來,1956年開始正式使用,比常見的編程語言C,C#,C++和python等都早。由于過于古老,因此很多人甚至認為Fortran根本沒有存在的必要,C++等語言完全可以取代Fortran的地位并且具有更好的效果,例如知乎上題為“Fortran還有存在的必要嗎?”的問題被瀏覽了296035次,關注者數量為732。

圖片8.png

       

       然而,作為民間數值計算工作者,筆者認為,在兼顧開發效率與運行效率的條件下,Fortran在科學計算領域依然具備著幾乎不可替代的優勢,一方面是很多理工科行業具有大量的用Fortran編寫的遺留代碼,將這些代碼采用其他語言重寫不太現實也沒必要,另一方面,對于科學計算工作者來說,如果不是商業軟件的開發,算法可能比語言本身更為重要,而Fortran的優勢就在于能夠讓編寫者精力集中于算法本身而非程序語言的模式設計上。

       從語法格式上看,Fortran分為固定格式和自由格式;從語法標準上看,Fortran分為F77,F90,F03等語法標準。早期的Fortran程序,通常采用固定格式和F77語法標準編寫,因此部分Fortran學習者會誤認為F77=固定格式。然而實際上并不是這樣,語法格式和語法標準并沒有必然的聯系,Fortran程序員可以采用固定格式用F77標準編寫程序,也可以采用自由格式用F77標準編寫程序,也可以采用固定格式用F90標準編寫程序,還可以采用自由格式用F03標準編寫程序...,總之語法格式和語法標準沒有對應綁定關系。

        (一)固定格式通常以.for或者.f為后綴,以VS+IVF的平臺為例,當需要使用固定格式編寫程序時,應當在項目中添加Fortran Fixed-form file(.for)

        固定格式的主要要求:

       (1)程序語句只能寫在第7-72列中,第1-6列只能寫部分特殊字符用于續行或者語句標號或者注釋,第73列以后的語句則會被忽略。具體的規則如下:

圖片1.png

因此某些書上的代碼為了便于閱讀會以以下這種方式表示:

圖片2.png

        在上圖中,SUBROUTINE中的S就位于第7列,同樣,末尾的SSP00001中的第一個S則表明其右邊的字符已經超過了第72列,會被忽略。

        同樣,編寫程序用的IDE/編輯器針對固定格式也會給出相應的提示:

        例如VS會將第72列以后的字符顯示為白底:

圖片3.png

          Sublime text會在第73列的位置顯示一條豎線:

        

圖片4.png

        以上即為固定格式的規則,與固定格式相對的,叫自由格式,自由格式相對于固定格式來說具有十分大的自由度,在編寫時會十分靈活。

        自由格式的主要要求:(1)每行可以編寫132個字符(實際上某些編譯器可支持更長);

(2)多行語句可以寫在一行,并使用“;”分隔;

(3)注釋可以寫在任意列,以“!”開頭;

(4)一行的代碼最后是“&”,則表明該行和下一行連接,如果一行的開頭是“&”,則該行和上一行連接。

因此一個自由格式的程序可以如下編寫:

圖片6.png

       

        以上就是Fortran固定格式與自由格式的具體規則,從中可以看出自由格式相對于固定格式有較多優勢,靈活性大為提高。在早期的代碼中,以固定格式居多,但作為2021年的Fortran程序員,一般情況下,我們應當盡量使用自由格式編寫Fortran程序。某些軟件例如通用有限元軟件Abaqus的子程序在默認情況下會限定必須采用固定格式。但是事實上我們可以通過修改安裝目錄下的.env文件使得其可以采用自由格式編寫。

        想獲得關于Fortran語法知識的教程,歡迎掃碼關注公眾號 有限元術并回復“fortran教程”獲得Fortran教程下載鏈接。

二維碼.jpg
登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

18
6
15