在Fortran 95/2003 for Scientists and Engineers這本書中,有很多人談到認識到格式語句中的第一列是爲控制字符保留的重要性。我還看到在互聯網上被稱爲托架控制的控制字符。Fortran控制字符(托架控件)是否仍然在編譯器中實現?
爲了避免混淆,通過控制字符,我將字符「1,空白(即\ s),0和+」當放在的第一個中時對輸出的垂直間距有影響FORMAT語句的列(字符)。
此外,請參閱此純文字網頁完全以固定寬度字體書寫:Fortran carriage-control(因爲沒有什麼比等寬字體的散文尖叫準確和古代更好)。我發現這個頁面和其他人喜歡它不太清楚。
根據Fortran 95/2003 for Scientists and Engineers,未能記得第一列保留用於托架控制可能導致可怕的意外輸出。解釋Dave Barry,鍵入錯誤的字符,核導彈在挪威被解僱。
但是,當我試圖堅持這個嚴厲的警告時,我發現gfortran不知道我在說什麼。
請允許我用一些示例代碼來說明我的觀點。我想打印出來的數字PI:
PROGRAM test_format
IMPLICIT NONE
REAL :: PI = 2 * ACOS(0.0)
WRITE (*, 100) PI
WRITE (*, 200) PI
WRITE (*, 300) PI
100 FORMAT ('1', "New page: ", F11.9)
200 FORMAT (' ', "Single Space: ", F11.9)
300 FORMAT ('0', "Double Space: ", F11.9)
END PROGRAM test_format
這是輸出:
1New page: 3.141592741
Single Space: 3.141592741
0Double Space: 3.141592741
的 「1」 和 「0」 都沒有錯別字。看起來gfortran完全忽略了控制字符列。
我的問題,那麼,是這樣的:
控制字符仍然符合標準的編譯器實現,或者是gfortran根本不符合標準?
爲了清楚起見,這裏是我的gfortran -v
Using built-in specs. Target: powerpc-apple-darwin9 Configured with: ../gcc-4.4.0/configure --prefix=/sw --prefix=/sw/lib/gcc4.4 --mandir=/sw/share/man --infodir=/sw/share/info --enable-languages=c,c++,fortran,objc,java --with-gmp=/sw --with-libiconv-prefix=/sw --with-ppl=/sw --with-cloog=/sw --with-system-zlib --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib --disable-libjava-multilib --build=powerpc-apple-darwin9 --host=powerpc-apple-darwin9 --target=powerpc-apple-darwin9 Thread model: posix gcc version 4.4.0 (GCC)
一些功勞給你的ibiblio作者。他們的文檔包含大量以純文本格式化的表格。選擇比例字體將是一個更糟糕的選擇。不是每個人都有一個標記的源文件! – Pekka 2015-04-11 23:09:19