2011-06-02 128 views
1

我正在學習Fortran 90/95,我正在使用的這本書討論了行式打印機對格式化語句的影響。根據這本書,該程序使用該行的第一個字符來決定該行相對於前一行的位置(即'1'開始一個新頁面,'0'跳過一行,'+'覆蓋前一行,並且''或任何其他字符在新行之前寫入新行)。我編譯並在控制檯中運行了一個簡單的程序來測試這個,但沒有觀察到這種行爲。Fortran格式化90/95

program test 

integer :: i = 123 
character(13) :: hello = 'Hello, World!' 

100 format ('0','Count = ',I3) 

write (*,*) hello 
write (*,100) i 

end program 

輸出是

Hello, World! 
0Count = 123 

,我本來期望

Hello, World! 

Count = 123 

有誰知道這是爲什麼?這是一個未在Fortran 90/95中使用的遺留功能嗎?打印到控制檯的具體行爲是什麼?我想知道什麼時候(如果有的話)在寫作時需要在格式聲明中聲明特殊的第一個字符。

我的編譯器是Force 2.0.9,我相信它是基於gfortran。我在Windows 7上運行它,並且控制檯是PowerShell。

感謝您的幫助!

+0

格式化Fortran,爲什麼這是兵變! – 2011-06-02 02:53:24

回答

3

這在70年代甚至80年代用於FORTRAN 77及更早版本的行式打印機......但是您最後一次看到行式打印機?應該拋棄任何教導此功能的Fortran 90/95書籍。

這已經回答了有關堆棧溢出:Are Fortran control characters (carriage control) still implemented in compilers?

+1

查普曼的「F95/2003 for ...」教導它。 – Rook 2011-06-02 03:18:22

+0

是的,這本書是由Chapman編寫的「Fortran 90/95 for Scientists and Engineers」。 – astay13 2011-06-02 03:26:35

1

Fortran 90/95是對我來說太近了,但我不記得那些在七十年代使用FORTRAN的格式化選項。不過,我認爲這是一項遺留功能,而且您已經有'+'來覆蓋一條線,這表明這些選項可用於輸出到行式打印機而不是控制檯屏幕。

1

我學習的Fortran 90/95,和我使用這本書有一個關於行式打印機上的格式報表的影響的討論。根據這本書,該程序使用該行的第一個字符來決定該行相對於前一行的位置(即'1'開始一個新頁面,'0'跳過一行,'+'覆蓋前一行,並且''或任何其他字符在新行之前寫入新行)。我編譯並在控制檯中運行了一個簡單的程序來測試這個,但沒有觀察到這種行爲。

這是Fortran的一個遺留功能,它現在幾乎被忽略,因爲(如果沒有其他的話)不直接打印到打印機。無論如何,大多數編譯器(我現在還沒有專門爲gfortran說過,因爲我沒有安裝它)可以選擇忽略這種行爲,其中一些默認忽略了第一列。從你表現出來的情況來看,假設你是他們中的一員是合理的,所以是的,你可以忽略它。

出於這種習慣的習慣,很多Fortran程序員在寫入語句中使用空白或1x來啓動任何字符串。

2

這隻適用於舊的「固定形式」Fortran(77及更早版本),而不適用於新的「自由格式」Fortran(90及更高版本),所有命令都必須縮進6個空格。您仍然可以使用帶有適當編譯器標誌的固定格式。有時,如果擴展名爲.f而不是.f90,那麼這甚至是默認值。

+0

雖然我使用的是固定格式的Fortran 90,但我認爲這個問題與編譯器選項相關的多於代碼格式。 – astay13 2012-09-06 19:27:20